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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

消息中间件:为什么我们选择 RocketMQ

發布時間:2025/3/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 消息中间件:为什么我们选择 RocketMQ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:李偉

說起消息隊列,ActiveMQ、RabbitMQ、RocketMQ、Kafka、Pulsar 等紛紛涌入我們的腦海中, 在如此眾多的開源消息隊列產品中,作為一名合格的架構師如何給出高性價比的方案呢?商業化的產品暫不納入選項中。

接下來我將從選型要素、RocketMQ 的優勢兩個方面解釋為什么選擇 RocketMQ 。
?

選型要素

?
首先從公司、消息隊列服務提供者(一般是中間件團隊)、最終用戶三個角度來簡單總結分析。
?

一、從公司層面看, 關注如下幾點:

?
1. 技術成本
?
技術成本,一般包含服務器成本、二次開發成本、后期維護成本等,言而總之:都是錢。

服務器目前基本都使用云服務器,不同的云廠商的相同配置的服務器性能也有一定差異, 服務器成本一般需要了解:云廠商機器性能、云廠商優惠、所需服務器配置、服務器臺數、單臺服務器目前的價格、單臺服務器優惠后的價格等。
?
2. 人力成本
?
人力成本,一般包含現有技術人員成本、新人招聘成本。
?
新的技術選型對于目前的技術人員接受程度怎么樣,學習的難易程度怎樣等,都是需要考慮的。如果太難的話,上線周期會變長、業務需求實現速度慢,甚至有人直接離職。

新人招聘成本,一般招聘一個新人有如下幾個過程:簡歷篩選、預約面試、數輪面試、發 offer 、接受 offer 、正式入職、試用期、轉正。這中間涉及到獵頭成本、人力資源溝通成本、面試成本、新人入職后環境適應成本等等。
?
3. 其他
?
目前處于不同階段的互聯網公司對于技術成本、人力成本有著不一樣的要求,但是很多有一定規模的公司實際上還是用“買買買”的心態來對待的:只要業務發展快速,買服務器、招人都不是問題,如果成本高了就做技術降成本、裁員。這不僅是員工之痛,也是業務之痛,更是公司之痛。
?

二、從中間件組層面看, 關注如下幾點:

?
1. 穩定
?
公司級的服務首要的一點就是穩定。擁有穩定的組件、穩定的服務,業務才能有條不紊的進行。所以說,無論什么時候, 穩定都是王道。
?
2. 功能支持

不同的業務場景需要的功能也不盡相同,通常我們會考慮重試、死信機制,位點重置,定時延遲消息、事物消息,主從切換,權限控制等方面。
?
3. 性能
?
目前包含寫入延遲和吞吐。
?
4. 管理平臺
?
首先需要滿足最終用戶接入、查看、排障,管理員管控 topic 、消費者方便等。管理平臺有現成的最好,方便二次開發 。
?
5. 監控、報警
?
監控報警是否完善、是否方便接入公司內部自研體系,或者行業的事實標準 Prometheus 。
?
6. 運維 & 支持 & 開源社區
?
如果產品上線后, 大部分時間,我們都是在做運維&支持。運維包含服務部署、遷移、服務升級、解決系統 Bug 、用戶使用答疑、管理平臺和監控報警平臺升級等。
?
7. 其他
?
我們除了依賴自身以外,也可以借助社區的力量,同一個問題可能別人遇到過并且提交過 PR ,已經得到解決,我們就可以以此作為借鑒。所以社區的活躍情況也是非常重要的考慮。
?

三、從最終用戶(一般包含業務后端研發以及他們的 Leader )看

?
1. 穩定性
?
對于業務的研發和他們的 Leader ,他們的核心任務是實現業務邏輯。如果一個服務三天兩頭總是有問題, 對于他們來說是比較致命的,所以穩定性是比較核心的一部分。
?
2. 改造現有項目的難度
?
舊項目改造其實是業務研發接入新中間件實際操作最多的部分。
?
3. 新項目接入是否便捷
?
是否便捷接入跟他們的工作量有著直接的關聯。
?
4. 與目前的 App 微服務框架兼容怎樣
?
新項目的接入和公司微服務框架兼容都比較容易。一般中間件在提供服務時都會考慮業務研發接入的便利性。
?

RocketMQ 的優勢

?
下面將按照選項要素的要求, 分析 RocketMQ 在這方面的優勢。
?

一、RocketMQ 如何解決和友好面對公司層面的訴求

?
1. 技術成本
?

就技術成熟度而言,在經歷阿里雙十一數萬億洪峰、微眾銀行、民生銀行、螞蟻金服、平安、字節跳動、快手、美團、京東、網易等各種行業大廠的考驗后,就不言而喻了。
?
RocketMQ 對于服務器的配置要求不高, 普通的云主機都可以。曾經我們驗證 8C 16G 500G SSD 的 2 主 2 從的集群,發送 tps 可以到 4~5w ,消費 tps 峰值 20w +,穩定在 8w~9w 。并且,還能根據業務實際的需求無感的橫向擴展。
?
綜合而言, 技術成本相對可控且人才多。
?
2. 人力成本
?
人力成本主要是現有的技術人員的學習成本、招新人的成本。
?
RocketMQ 是 java 開發的,代碼也非常穩定、有條理,各個版本之間除了功能有差異之外,Api 、傳輸協議幾乎沒有太多變化,對于升級而言也更加方便。
?
java 也是目前中間件采用的比較主流的語言,使用的技術人員非常廣泛。RocketMQ 在金融行業比如:微眾銀行、民生銀行、螞蟻金服、平安; 其他行業公司,比如阿里、字節跳動、快手、美團、京東、網易等與大量中小企業都在使用,候選人范圍相對較大。
?
RocketMQ 社區也比較活躍,釘釘群、微信群、QQ 群眾多,社區文檔非常豐富和完善,原理剖析視頻、文檔也非常多,非常易于學習和入門。
?
下面是釘釘群,歡迎大家加群留言、答疑。

對于 java 方面的消息隊列方面的人才相比 C/C++、C#、Python、Go 等還是更多的:主流的 Kafka 是 scala + java、pulsar 是 java ,對于招聘也有極大的優勢。
?
綜合而言,RocketMQ 技術員對于人力成本比較友好。
?

二、從中間件組層面看,RocketMQ 是如何提供優秀的能力,為業務保駕護航呢?

?
1. 穩定性
?
金融級可靠、阿里雙十一穩定支持萬億級消息洪峰,在筆者之前所在公司也有過 2 年+零事故的佳績
?
2. 功能豐富,支持的場景眾多
?

  • 重試、死信機制,友好、無感的業務重試機制。
  • 順序消息、事物消息
  • 萬級 Topic 數量支持
  • 消息過濾
  • 消息軌跡追蹤
  • 主從自動切換
  • 原生支持 Prometheus 監控
  • 原生支持易用管理平臺:RocketMQ Console
  • 訪問權限控制(ACL)

3. 性能
?

  • RocketMQ 可以支持 99.9% 的寫入延遲在 2 ms ,其他的開源消息隊列中間件基本都是大于 5 ms ;目前大部分消息隊列中間間都支持橫向擴展,吞吐上橫向擴展幾乎都可以滿足。RocketMQ 的在滴滴做的性能測試: _https://developer.aliyun.com/article/664608 _, 大家參考。
  • 發送、消費 tps 和 kafka 一個數量級,Topic 數量劇增對于性能影響較小。

4. 管理平臺
?
RocketMQ Console 原生支持:
https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console
?
5. 監控、報警
?
RocketMQ Exporter 原生支持 Prometheus:
https://github.com/apache/rocketmq-exporter
?
6. 運維 & 支持 & 開源社區
?

  • 無 zk 等第三方依賴,開箱即用
  • 社區釘釘群、微信群、QQ 群非常活躍,釘釘群、微信群有問必答。
  • 社區最近新來一位小姐姐 Commiter ,團隊也在不斷壯大。

綜合看來,RocketMQ 穩定、可靠、性能好,開箱即用,不依賴 Zookeeper ,系統的穩定性更高,復雜度更小。監控報警等周邊設施完善,場景支持全,社區活躍、文檔豐富,是中間件團隊的不二之選。
?

三、對于最終用戶:業務研發、業務研發 Leader,他們的核心擔憂是提供的技術是否穩定可靠、是否快速方便的接入

?
從中間件組層面看這個問題時,RocketMQ 穩定、可靠,那對于接入是否友好呢?
?
RocketMQ 提供 java 原生客戶端、Spring 客戶端,C++ 客戶端、Python 客戶端、Go 客戶端等多類型、多語言的客戶端,對于各種項目都可以統一接入。
?
微服務框架中 Spring Cloud 基本已經成為事實標準,RocketMQ 支持 Spring boot Starter 和 Spring Cloud Function 等多種方式融合入微服務框架,對于 Spring 體系支持更加方便快捷。
?

Kafka vs RocketMQ

?
實際中,很多人應該面臨過 RocketMQ vs Kafka ,Kafka 適合對于延遲不敏感、批量型、Topic 數量可控、對于消息丟失不敏感的場景。比如大數據場景的 MySQL-2Hive、MySQL-2-Flink 的數據流通道,日志數據流通道等。

RocketMQ 適用于金融轉賬消息、訂單狀態變更消息、手機消息 Push 等業務場景。這些場景 Topic 數量通常過萬,對于消息延遲和丟失極度敏感,數據通常是論條處理。對于海量數據的問題,一般地橫向擴容完全可以解決。

合適的場景選擇合適的產品,萬能的產品是不存在的,都是折中,都是取舍。

作者介紹

?
李偉,Apache RocketMQ 社區 Commiter ,Python 客戶端項目負責人, Apache RocketMQ 北京社區聯合發起人,Apache Doris Contributor 。目前就職于騰訊,主要負責 OLAP 數據庫開發,對分布式存儲系統設計和研發有豐富經驗,也熱衷于知識分享和社區活動。

RocketMQ 學習資料

?
阿里云知行實驗室提供一系列的 RocketMQ 在線實操環境,包含操作文檔、ubuntu 實驗環境,大家隨時嘗試玩玩:
?

  • Apache RocketMQ 開源入門最佳實踐:

https://start.aliyun.com/course?spm=a2ck6.17690074.0.0.53c52e7dSi19ML&id=eAz6VTK5

  • 《RocketMQ 分布式消息中間件:核心原理與最佳實踐》隨書實戰:https://start.aliyun.com/course?spm=a2ck6.17690074.0.0.7aec2e7dCPMDFG&id=ASeJlmpX

  • 在 Spring 生態中玩轉 RocketMQ:

https://start.aliyun.com/course?spm=a2ck6.17690074.0.0.241e2e7d0aEIxJ&id=hzidp9W1

實驗預覽圖如下:
?

其他資源

?

  • RocketMQ vs. ActiveMQ vs. Kafka:

_ http://rocketmq.apache.org/docs/motivation/_

  • RocketMQ 源碼:

_ https://github.com/apache/rocketmq_

  • RocketMQ Exporter 源碼:

_ https://github.com/apache/rocketmq-exporter_

  • RocketMQ Spring 源碼:

_ https://github.com/apache/rocketmq-spring_

  • RocketMQ C++ 客戶端源碼:

_ https://github.com/apache/rocketmq-client-cpp_

  • RocketMQ Python 客戶端源碼:

_ https://github.com/apache/rocketmq-client-python_

  • RocketMQ Go 客戶端源碼:

_ https://github.com/apache/rocketmq-client-go_

  • RocketMQ Console 源碼:

_ https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console_

  • RocketMQ Flink Connector 源碼:

_ https://github.com/apache/rocketmq-externals/tree/master/rocketmq-flink_

  • RocketMQ 如何保證消息可靠:

    [https://mp.weixin.qq.com/s/imLTVwgm8MOiY1_5s3rdFQ](https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247502152&idx=1&sn=3c356a4b65d50e964f0350a13ba08df3&scene=21#wechat_redirect)
  • 大揭秘!RocketMQ 如何管理消費進度:

    [https://mp.weixin.qq.com/s/rHs9L1gTuFs05Cs2F4JXOw](https://mp.weixin.qq.com/s?__biz=MjM5NTk0NjMwOQ==&mid=2651114644&idx=1&sn=fa93f0264989b536153dc683a246601a&scene=21#wechat_redirect)
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的消息中间件:为什么我们选择 RocketMQ的全部內容,希望文章能夠幫你解決所遇到的問題。

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