┊文章閱讀:次
1月20日,由信也科技NYSE:FINV自主研發(fā)的PMQ消息系統(tǒng)正式對(duì)外發(fā)布。該系統(tǒng)是信也科技在調(diào)研業(yè)界消息系統(tǒng)的基礎(chǔ)上研發(fā)的一款易于監(jiān)控、易于維護(hù)的輕量級(jí)消息系統(tǒng)。目前,其已在信也科技私有云平臺(tái)上穩(wěn)定運(yùn)行了四年,日消息量高峰時(shí)間超過(guò)30億條,高峰寫(xiě)入超過(guò)20萬(wàn)TPS異步模式。
據(jù)了解,消息系統(tǒng)在現(xiàn)代微服務(wù)系統(tǒng)中,起著至關(guān)重要的作用。不論是異步、解耦或削峰,都需使用到消息系統(tǒng)。而消息系統(tǒng)的穩(wěn)定性,對(duì)系統(tǒng)的整體穩(wěn)定性有著舉足輕重的意義。
信也科技PMQ消息系統(tǒng)的研發(fā)歷程并非一帆風(fēng)順。早在2016年之前,信也科技曾嘗試使用Kafka與RabbitMQ,彼時(shí)經(jīng)常面臨消息丟失、消息堆積等情況,嚴(yán)重影響了業(yè)務(wù)系統(tǒng)。自2016年年中以來(lái),信也科技便著力開(kāi)發(fā)PMQ消息系統(tǒng),并于2017年發(fā)布2.0版本,實(shí)現(xiàn)了基本的消息發(fā)送與消費(fèi)功能。自2017年年中開(kāi)始研發(fā)3.0版本,至2018年年中,已實(shí)現(xiàn)重平衡、自助修改偏移等完善的消息治理功能。自2019年初發(fā)布的新版本,已逐漸實(shí)現(xiàn)了多語(yǔ)言、多環(huán)境等高級(jí)功能。
PMQ消息系統(tǒng)的整體架構(gòu)示意圖
PMQ消息系統(tǒng)的架構(gòu)可分為以下五部分:
第一,Admin Portal。用戶(hù)可在Admin Portal上創(chuàng)建Topic、消費(fèi)者組、訂閱Topic等常見(jiàn)操作。這些操作會(huì)生成對(duì)應(yīng)的元數(shù)據(jù)信息,而這些元數(shù)據(jù)信息會(huì)保存至Metadata數(shù)據(jù)庫(kù)中。
第二,Broker。Broker會(huì)定時(shí)將Metadata元數(shù)據(jù)信息同步至內(nèi)存中。當(dāng)Producer發(fā)送消息請(qǐng)求達(dá)到Broker時(shí),Broker會(huì)跟進(jìn)Topic對(duì)應(yīng)的元數(shù)據(jù)信息,將消息保存到相關(guān)的數(shù)據(jù)庫(kù)表中。Consumer也會(huì)根據(jù)元數(shù)據(jù)信息從數(shù)據(jù)庫(kù)中拉取相關(guān)的消息。
第三,Producer,消息發(fā)送方。當(dāng)Producer發(fā)送消息時(shí),會(huì)將消息發(fā)送到Broker集群中的任何一個(gè)實(shí)例,當(dāng)某個(gè)實(shí)例出現(xiàn)訪問(wèn)異常時(shí),會(huì)自動(dòng)重試,將消息轉(zhuǎn)發(fā)到其他實(shí)例。
第四,Consumer,消息消費(fèi)方。當(dāng)消費(fèi)方啟動(dòng)時(shí),會(huì)完成消息消費(fèi)的注冊(cè)功能。注冊(cè)完成后Consumer會(huì)獲取到相關(guān)的元數(shù)據(jù)信息,Consumer會(huì)從Broker拉取消息進(jìn)行消費(fèi)。
第五,MySQL,消息存儲(chǔ)層。所有的Topic消息至少會(huì)保存在2個(gè)MySQL物理實(shí)例上,防止單點(diǎn)故障。每個(gè)MySQL物理機(jī)都有備份集群,當(dāng)某個(gè)MySQL集群出現(xiàn)問(wèn)題時(shí),會(huì)自動(dòng)進(jìn)行主從切換,以此來(lái)保證MySQL的高可用。
同其他消息系統(tǒng)相比,PMQ消息系統(tǒng)采用了MySQL作為消息存儲(chǔ)層,最大程度地降低了消息系統(tǒng)的復(fù)雜性,易于運(yùn)維。此外,PMQ消息系統(tǒng)實(shí)現(xiàn)了Broker與存儲(chǔ)分離,可實(shí)現(xiàn)Broker與MySQL的水平擴(kuò)展。
依托于MySQL,PMQ消息系統(tǒng)可實(shí)現(xiàn)更豐富的治理功能。具體功能如下:
1、堆積告警。在PMQ控制臺(tái)中,可查看消息的發(fā)送與消費(fèi)情況,當(dāng)出現(xiàn)消息消費(fèi)堆積的情況時(shí),PMQ消息系統(tǒng)便發(fā)送告警消息給相關(guān)的負(fù)責(zé)人,通知其及時(shí)處理。
2、消息消費(fèi)與發(fā)送監(jiān)控。PMQ消息系統(tǒng)的客戶(hù)端內(nèi)置了監(jiān)控信息,可以監(jiān)控消息發(fā)送與消息消費(fèi)情況。特別內(nèi)置了消息消費(fèi)是否報(bào)錯(cuò),消費(fèi)耗時(shí)等監(jiān)控信息。
3、動(dòng)態(tài)調(diào)整線程數(shù)。消息在消費(fèi)過(guò)程中,經(jīng)常會(huì)遇到消息堆積的情況。當(dāng)相關(guān)負(fù)責(zé)人收到堆積告警時(shí),負(fù)責(zé)人可根據(jù)監(jiān)控情況來(lái)判斷是否可以增大線程數(shù)來(lái)加快消息消費(fèi)速度。消費(fèi)線程數(shù)可在后臺(tái)Portal界面動(dòng)態(tài)修改,實(shí)時(shí)生效,無(wú)需用戶(hù)修改代碼,重啟等操作。采用此方式,可非常迅速地解決消息堆積的情況。
4、動(dòng)態(tài)調(diào)整偏移量。消息在使用過(guò)程中,會(huì)遇到以下情況,當(dāng)消息消費(fèi)時(shí)可能會(huì)出現(xiàn)一些bug。當(dāng)bug修復(fù)完成后,可能需要重新消費(fèi)歷史消息,此時(shí)可在PMQ消息系統(tǒng)后臺(tái)控制頁(yè)面中,動(dòng)態(tài)調(diào)整偏移量,消費(fèi)方即可按照指定的偏移對(duì)歷史消息進(jìn)行重新消費(fèi),無(wú)需修改代碼實(shí)時(shí)生效。
5、動(dòng)態(tài)設(shè)置消費(fèi)者組黑白名單。在本地代碼開(kāi)發(fā)時(shí),為了調(diào)試某個(gè)消費(fèi)邏輯代碼,需要將某個(gè)消費(fèi)者組指定給某個(gè)IP消費(fèi)。對(duì)于此場(chǎng)景開(kāi)發(fā)人員可在PMQ消息系統(tǒng)后臺(tái)對(duì)某個(gè)消費(fèi)者組設(shè)置白名單,設(shè)置完成后,此消費(fèi)者組對(duì)應(yīng)的消息便會(huì)被指定IP消費(fèi)。同理,也可以設(shè)置黑名單,不允許某些IP消費(fèi)。對(duì)于此類(lèi)需求用戶(hù)可在PMQ消息系統(tǒng)后臺(tái)自助操作,無(wú)需修改代碼,實(shí)時(shí)生效。
6、支持失敗消息。當(dāng)用戶(hù)在PMQ控制頁(yè)面中給某個(gè)消費(fèi)者組添加Topic訂閱時(shí),會(huì)自動(dòng)創(chuàng)建一個(gè)消費(fèi)者組與Topic對(duì)應(yīng)的失敗Topic,當(dāng)客戶(hù)端消息消費(fèi)失敗時(shí),會(huì)自動(dòng)將消費(fèi)失敗的消息發(fā)送至對(duì)應(yīng)的失敗Topic上,然后進(jìn)行重試消費(fèi),如果重試失敗,用戶(hù)可在消息查詢(xún)界面查看到消息消費(fèi)重試結(jié)果。
7、消息查詢(xún)。有相關(guān)權(quán)限的用戶(hù),可在后臺(tái)檢索Topic歷史消息。
8、操作自助化。用戶(hù)可在PMQ消息系統(tǒng)后臺(tái)自助創(chuàng)建Topic,自助創(chuàng)建消費(fèi)者組,自助訂閱Topic,自助查看消息消費(fèi)情況、發(fā)送量、剩余量等信息。
9、權(quán)限控制與審計(jì)。PMQ消息系統(tǒng)權(quán)限管控采取的是誰(shuí)創(chuàng)建誰(shuí)負(fù)責(zé)的方式。同時(shí)用戶(hù)在后臺(tái)界面上的所有操作均會(huì)進(jìn)行日志記錄,便于操作審計(jì)。
10、多語(yǔ)言支持。PMQ通過(guò)Proxy代理的方式支持多語(yǔ)言。對(duì)于其他非Java類(lèi)型的應(yīng)用,只要支持HTTP協(xié)議,即可進(jìn)行消息的發(fā)送與消費(fèi)。這樣PMQ只需維護(hù)一份代碼,即可支持所有的語(yǔ)言客戶(hù)端。
11、多環(huán)境支持。在測(cè)試環(huán)境中,為了支持多版本并行開(kāi)發(fā),會(huì)出現(xiàn)多套環(huán)境的情況。PMQ消息系統(tǒng)支持消息在多環(huán)境中有序流轉(zhuǎn),同環(huán)境的消息默認(rèn)會(huì)被同環(huán)境的實(shí)例消費(fèi)。
12、監(jiān)控報(bào)表。PMQ消息系統(tǒng)后臺(tái)會(huì)自動(dòng)生成各類(lèi)報(bào)表數(shù)據(jù),方便查看系統(tǒng)運(yùn)行情況。根據(jù)監(jiān)控報(bào)表數(shù)據(jù)可清晰地知曉系統(tǒng)的運(yùn)行情況,從而及時(shí)消除系統(tǒng)的資源隱患。
自2017年P(guān)MQ消息系統(tǒng)在信也科技上線以來(lái),已穩(wěn)定運(yùn)行多年,且已接入了超過(guò)400多個(gè)應(yīng)用、2000多個(gè)實(shí)例,經(jīng)受住了生產(chǎn)實(shí)踐的考驗(yàn)。
此次信也科技將成熟的科技服務(wù)對(duì)外輸出與賦能,是堅(jiān)持探索創(chuàng)新的成果。未來(lái),PMQ消息系統(tǒng)將引入消息軌跡、智能化運(yùn)維與分析、PMQ集群多活等相關(guān)的功能。并且PMQ消息系統(tǒng)會(huì)全面兼容Kafka、RocketMQ等消息系統(tǒng),使其他的消息系統(tǒng)也可使用到PMQ強(qiáng)大的治理功能。
樹(shù)高葉茂,系于根深。信也科技亦將不斷夯實(shí)根基,銳意進(jìn)取,在科技行業(yè)中繼續(xù)做敢于探路的“急先鋒”,積極響應(yīng)國(guó)家的號(hào)召,持續(xù)探索與發(fā)展科學(xué)技術(shù),推動(dòng)科技自立自強(qiáng),并加強(qiáng)與合作伙伴的溝通與交流,實(shí)現(xiàn)互利共贏發(fā)展。
Copyright @ 2013-2020 中國(guó)福建網(wǎng) 版權(quán)所有
聯(lián)系我們
免責(zé)聲明:本站為非營(yíng)利性網(wǎng)站,部分圖片或文章來(lái)源于互聯(lián)網(wǎng)如果無(wú)意中對(duì)您的權(quán)益構(gòu)成了侵犯,我們深表歉意,請(qǐng)您聯(lián)系,我們立即刪除。