rabbitmq导出队列_消息队列BCMQ在大云运维管理平台BCDeepWatch中的应用
友情提示:全文約2600字,預計閱讀時間12分鐘
摘要
消息隊列作為重要的中間件,廣泛用于分布式系統中各子系統間的異步解耦;本文主要介紹了大云消息隊列中間件BC-MQ在BC-DeepWatch中的應用案例。
一、消息隊列應用場景簡介
消息隊列是分布式系統中非常重要的一個組件,我們可以把它看成是一個用于保存消息的容器,發送方將消息發送至消息隊列,消費方按需消費消息。
圖1-1 消息模型示意圖
其主要的應用場景包括:
系統解耦
業務流程的高耦合易產生子系統故障影響整個系統的問題,通過引入消息隊列作為消息的中轉,實現對業務系統的拆分,提升系統可用性及可擴展能力;
異步通信
多個子系統間同步處理易導致用戶請求響應慢的問題,引入消息隊列作為子系統間異步通信的工具,可實現削峰填谷,抗住流量的高峰值;
數據同步
消息隊列可用于各個子系統間數據的同步,如子系統A作為生產者,將數據發送至消息隊列,子系統B作為消費者,通過消費消息完成A到B的數據同步;
廣播
對于某些消息的一對多通知場景下,可通過引入消息隊列,上游將每次需要廣播的消息發送至消息隊列,下游子系統通過訂閱的方式接收消息,上游不再關心具體是誰訂閱,將會極大地減少開發和聯調的工作量;
設備接入
針對物聯網等場景下多設備接入的問題,可引入輕量級的MQTT消息隊列實現海量設備的接入、連接管理和數據發布訂閱;并且可選多種傳輸質量規格,解決了以下痛點場景:
· 設備連接數較大,服務端需要從海量客戶端(設備)中采集數據,或者下發指令到眾多設備;
· 客戶端CPU、內存比較小或帶寬較窄等;
· 要求消息能主動推送至客戶端,實時性較好。
為了幫助大家更好地理解消息隊列中間件在實際業務系統中的應用,以下將對BC-MQ在BC-DeepWatch中應用案例進行介紹。
二、BC-MQ在BC-DeepWatch大云運維管理平臺中的應用
1、BC-DeepWatch簡介
BC-DeepWatch是一款監控、性能、日志管理、資源管理、自動化運維、統一納管為核心的多維度統一運維管理平臺。涉足于多個領域,為政務云、金融云、公有云、混合云等不同形態的云服務提供規模化、定制化的運維解決方案,滿足行業內多種云服務的運維場景需求,作為運維管理平臺,為管理者隨時掌控系統運行的全方位信息提供了有力支持。
2、BC-MQ在BC-DeepWatch中的應用
1.系統解耦
系統中各模塊間沒有直接的調用關系,那么新接入的模塊對原本系統的影響將會較小;以大云運維管理平臺(BC-DeepWatch)為例,由于承接了眾多上云產品的監控告警、日志對接工作,因此平臺面臨著大量新增模塊的問題。
圖2-1 云監控產品對接示意圖
若各產品和平臺間采用上圖中直接調用的方法,那么每當有新增產品,就需要修改對應的調用接口,帶來重復工作量;同時新模塊的引入通常會降低系統的可用性。
在BC-DeepWatch中引入消息隊列BC-MQ,接入云監控的各產品按照一定的上報格式將產品的配置數據、性能數據和告警數據推送至消息隊列中,BC-DeepWatch再從消息隊列中消費具體數據,進行下一步的處理。由于消息隊列集群本身可以承接海量消息的積壓,所以平臺可以按照一定的采集頻率從消息隊列中消費數據,而與下游各產品無關,從而實現了平臺與各產品間的解耦,同時也可以避免下游子系統故障對核心業務系統的影響,提升了代碼可維護性和擴展性。
圖2-2 BC-MQ在系統解耦中的應用
由以上的例子我們可以看到,引入消息隊列具有如下優勢:
· 平臺可異步處理下游云服務上報的數據;
· 各個上云產品只負責將上報的數據寫入消息隊列,無需關心運維平臺如何獲取及使用性能數據;
· 有新的上云產品接入監控服務時,與現有產品無關;即使某一產品出現問題或請求超時,也不會影響到整個系統;
· 高并發時運維平臺可根據自己能夠處理的請求數從消息隊列中拿取數據,利用消息隊列消息堆積能力,起到削峰填谷、及時限流的作用;
2.數據同步
運維平臺中另一個應用到BC-MQ的場景為兩個CMDB集群之間數據的同步,一個集群作為消息的生產者,將待同步的數據發送至BC-MQ,另一個CMDB集群作為消費者,從隊列中消費數據并寫入集群中,從而實現數據的同步。
圖2-3 BC-MQ在數據同步中的應用
三、引入消息隊列可能帶來的問題及BC-MQ的應對
以上我們通過兩個例子展示了消息隊列中間件的引入帶來了一系列優勢,那么有的同學不禁要問,引入一個組件會帶來哪些風險和問題呢?以下我們將對消息隊列的弊端和BC-MQ的應對進行說明:
1.系統的可用性降低
新組件的引入必然會帶來系統可用性的影響,為了避免消息隊列服務異常對整個系統帶來影響,BC-MQ集群采用了Master-Slave的部署方式及Dledger(多副本模式),保障整個集群的各個組件無單點故障,以確保整個服務的可用性。
2.數據一致性問題
引入消息隊列后,本身由A到B的業務流程中間增加了消息隊列,如何保障分布式子系統間的一致性便成了問題。對此,BC-MQ支持事務消息類型,對于強一致性需求的業務系統,可通過事務消息保障。
3.系統復雜性提升
有的同學可能會擔心消息隊列的引入可能會帶來重復消費、消息順序性等問題,針對重復消費,BC-MQ在消息消費完畢后,會返回一個CONSUME_SUCCESS的確認消息給消息隊列,消息隊列就知道該消息被消費了,就會將該消息從消息隊列中刪除;針對消息順序性,可通過BC-MQ中順序消息類型保障。
四、總結
消息隊列BC-MQ是云管中臺-中間件組自研的一款基于分布式集群技術的中間件產品,具有安全可靠、簡單易用、高可用、低延遲等特點,可用于大型分布式系統各子系統間的消息存儲于收發;目前提供RocketMQ和MQTT消息隊列兩款產品優勢總結如下:
消息隊列RocketMQ
在開源RocketMQ基礎上進行優化,目前提供普通消息、事務消息、順序消息等多種類型的消息服務,可解決異步通知、削峰填谷等場景下的特性需求。
高性能:支持億級消息堆積;單節點吞吐量10Wtps+,滿足用戶消息收發的業務需求;
高可用:集群采用Master-Slave的部署方式,避免單點故障,保障服務的高可用;
簡單易用:支持Java版本的SDK,通過修改少量代碼即可接入服務;
消息查詢/軌跡查詢:可通過控制臺查詢消息/消息軌跡,方便用戶快速定位問題;
死信隊列:支持消息重試機制,當達到最大重試后消息進入死信隊列;提供死信隊列的查詢、導出、重新發送等功能;
消息隊列MQTT
針對移動互聯網、物聯網等場景設計的輕量級消息中間件產品;基于Pub/Sub(發布/訂閱)消息模型,支持一對多的消息收發方式;可連接各類物聯網設備,傳輸消耗低;
高性能:集群可支撐百萬級設備的在線連接,百萬級消息并發;可實現毫秒級消息推送;
功能全面:支持離線消息/遺言消息/保留消息類型,持久化/非持久化連接方式,QoS=0/1/2不同級別的傳輸質量;
安全可靠:通過對連接設備及消息發布訂閱進行鑒權,保障用戶數據安全;
消息隊列是分布式系統中不可或缺的中間件產品,除了對現有的RocketMQ和MQTT消息隊列的持續優化,團隊也將在今年提供AMQP協議支持,采用計算、存儲分離架構,兼容RabbitMQ客戶端的同時解決開源RabbitMQ在吞吐性能、可用性方面的痛點,希望大家持續關注;最后也歡迎大家多多試用BC-MQ~
? -? END? -
往期精彩
1.【干貨分享】如何量化用戶體驗?公有云產品用戶體驗度量體系搭建淺談
2.【干貨分享】UEFI啟動流程介紹
總結
以上是生活随笔為你收集整理的rabbitmq导出队列_消息队列BCMQ在大云运维管理平台BCDeepWatch中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3nm工艺太难了:台积电、三星一个比一个
- 下一篇: python编译make_Python在