日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

喜马拉雅 Apache RocketMQ 消息治理实践

發布時間:2024/8/23 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 喜马拉雅 Apache RocketMQ 消息治理实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介:本文通過喜馬拉雅的RocketMQ治理實踐分享,讓大家了解使用消息中間件過程中可能遇到的問題,避免實戰中踩坑。

作者:曹融,來自喜馬拉雅,從事微服務和消息相關中間件開發。

本文通過喜馬拉雅的RocketMQ治理實踐分享,讓大家了解使用消息中間件過程中可能遇到的問題,避免實戰中踩坑。

業務背景現狀以及遇到的問題

1、消息隊列概況

(1)在線場景:RabbitMQ,實例數9個;

(2)離線場景:Kafka,8個集群;

2、遇到的問題

在線場景缺乏治理:

? 業務混用,相互干擾,非核心對接積壓過多觸發集群限流;

? 節點負載不均衡,資源浪費嚴重;

? 資源和應用無關聯,消息積壓;

? 業務混用,相互干擾,非核心對接積壓過多觸發集群限流;

在線MQ集群改造方案

1、選型

(1)業務便捷性:易于開發、使用、維護,提高效率,如自帶重試、自帶死信、自帶事務保障;

(2)性能:包容業務的不確定性,如抗短時突發流量、抗積壓等;

(3)簡單:架構適用于拆分小集群;Java語言易于排查問題和二次開發;社區活躍,使用的人多,方便排查問題;

2、治理方案

(1)集群劃分方針:劃分小集群,減少相互干擾,減少影響面;

(2)拆分方案:

如上圖所示,對于公司和“錢”相關的業務及核心業務,不僅要給足資源,同時要保證較高的數據安全,在這里就使用了SYNC_MASTER;

  • 對于非核心業務,我們希望它的性價比高,使用盡量少的資源去支撐足夠多的數據量,此處就使用了ASYNC_MASTER,伸縮性會更好;
  • 對于其它數據安全要求不高的業務,包括消息軌跡,我們使用單MASTER集群,保證了性能需要,資源使用也少;
  • 對于延時集群,專注于積壓消息,pagecache利用率低,目前還沒用做,未來考慮在云上采用按需購買的方式來使用;另外對于臨時集群目前也沒有涉及。

3、控制面管理

(1)統一消息治理后臺;

對所有消息中間件的后臺做了一個統一的管理后臺,如上圖。

(2)對RabbitMQ,僅維護,自動維護關聯關系;

(3)對于RocketMQ,用于提升用戶體驗,比如發送/查詢消息、一鍵接入demo、死信重發等;

消息管理界面

配置demo

死信重發

(4)PaaS化審批

我們對消息化的資源管理做了一個PaaS化的管理,對功能做了一些限制,開發和運維只能在測試環境下做申請和審批,審批通過后再同步到其它環境,然后創建資源、通知用戶。

4、統一接入SDK

(1)用戶只關心用什么資源,不需要了解namesrv地址,減少出錯概率;

(2)動態配置熱生效,節約用戶時間;

(3)收/發消息,失敗重試,為中間件做兜底;

(4)熔斷限流,為業務做兜底;

(5)灰度收消息(消息開關),滿足業務特殊場景;

(6)集成公司其他功能,如調用鏈、全鏈路壓測等;

5、多維度監控

  • 運維:整體情況,cluster 內 top 情況,所屬物理機情況;
  • 資源:Topic 上下游 qps,lag 等;
  • 用戶:實例消息收發均勻,延遲。

老集群遷移方案

1、人工遷移

場景:消息上下游均為自己的服務;

遷移流程:雙收(RocketMQ&RabbitMQ)-> 雙發-> 單發(RocketMQ)-> 單收;

需要注意的問題:業務重構,topic合并可能導致下游多tag消息傾斜,導致lag異常問題;

2、自動遷移

  • RabbitMQ <--> RocketMQ 相互鏡像遷移;
  • 粒度: exchange < -- > topic;
  • 注意: 相同組的任務互斥;

(1)RabbitMQ -> RocketMQ的遷移方案:

  • 把RabbitMQ的exchange整體同步到topic,在abc.exchange加一個topic前綴為topic_abc.excange;
  • 把RabbitMQ的Routing key預設為RocketMQ的tag;
  • 通過migrator任務程序收集RabbitMQ的消息隊列,按照不同的類型傳遞到RocketMQ;

(2)RocketMQ -> RabbitMQ的遷移方案:

方法類似,見下圖:

(3)自動遷移的幾種情況:

  • 消費者遷移,生產者不動:
    配置RabbitMQ -> RocketMQ 任務;
  • 生產者遷移,消費者不動:
    配置RocketMQ -> RabbitMQ 任務;
  • 生產者先不遷移,然后遷移了:
    先配置RabbitMQ -> RocketMQ 任務;
    遷移完畢后,關閉RabbitMQ -> RocketMQ 任務;

? ? 配置RocketMQ -> RabbitMQ 任務。

原文鏈接

本文為阿里云原創內容,未經允許不得轉載。?

總結

以上是生活随笔為你收集整理的喜马拉雅 Apache RocketMQ 消息治理实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。