高性能可伸縮的分布式消息中間件設計
本博客遷移到部署在jae上的獨立博客系統wordpress,博客地址:點擊打開獨立博客。歡迎大家一起來討論IT技術。
消息中間件基本上是每一個大型互聯網公司的標準基礎技術組件配置,雖然有很多的開源消息中間件,功能也很強大,但是今天我還是想介紹一下怎樣自主架構與設計并實現一套完整的分布式消息中間件。
開源的消息中間件或多或少存在一些所謂“坑”,沒有遇到大家用得都很happy,遇到的同學就只有加班查資料、google搜索或者直接review開源代碼尋找問題原因了。還有就是基本上開源的消息中間件一般都是大而全的功能,一般比較強調通用嘛。今天為大家介紹的是可以靈活橫向擴展并且具有高性能的分布式消息中間件的架構設計,也會介紹一些實現的關鍵技術,也可能很多開源軟件實現也有同樣的功能,所以通過了解這些設計與實現的核心技術,也可以更好的理解和使用開源的消息中間件。
一、設計目標
先簡單此設計需要達到的一些目標吧:
(1)高性能:應該能夠充分利用cpu、內存和網卡等資源,通常情況下是把網卡(1000M網卡)撐滿;
(2)消息轉發實時性:延遲必須在一個設定目標內(可配置);
(3)消息不丟失:正常情況下不丟失(如果由于某一個消息接收到自己網絡出現問題導致連接斷開丟失的不算,這個需要消息中間件的客戶端解決的問題);
(4)可以橫向無縫擴展:當一個服務節點服務能力不足時,可以無縫的擴展服務節點,對其他服務節點和所有客戶端透明;
(5)安全性:客戶端需要通過用戶名和密碼才能和服務器建立連接、發送消息和訂閱消息等;
(6)可以無縫升級系統:程序由于bug或者新增功能等上線是在所難免的,但是不應該影響正常的消息通信;
(7)可以無縫縮減服務節點:如果消息轉發量不是很大使用過多的節點是資源的浪費(服務器、電費等);
(8)分布式,防單點;
(9)支持分組訂閱:這個分組訂閱的功能太好使用了,尤其在做任務的負載均衡調度的時候,后面我會用一篇單獨的文章介紹基于分布式消息中間件的負載均衡調度系統設計;
(10)其他。。。。
二、基本架構圖
先上圖,在解釋,如下圖:
整個內容請看:www.wuyouqiang.com
浙公網安備 33010602011771號