消息中間件kafka-架構及優勢

一、消息中間件

官方解釋:消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數據交流,並基於數據通信來進行分佈式系統的集成。

通過提供消息傳遞和消息排隊模型,它可以在分佈式環境下擴展進程間的通信。

說白了就是在分佈式中進行消息的收發和處理的,但是爲什麼用,怎麼用,用來解決什麼問題

二、使用場景

版本:kafka2.10

簡易架構:一般消息中間件有三大模塊,producer(消息生產),broker或者叫Queue(消息存放),consumer(消息消費)如下圖

一般情況下producer和consumer在兩個不同系統A和B,A系統生產消息,並把消息存放到broker中,B系統消費存放在

Broker上的消息信息,乍一看跟系統之間RPC調用沒什麼區別,都是爲了系統間通信,相對於RPC調用優勢在哪裏

1.異步處理:貌似RPC調用也可以實現異步調用的功能,但是RPC調用的異步處理跟消息中間件還是有很大的區別的

           rpc異步調用後,當前系統對是否通信成功並無感知(是否通信成功也可以理解爲消息是否已達),也許因爲網絡原

           因,異步的消息並沒有發送到其他系統;針對這一點消息中間件對消息做了改善,比如說持久化,接下來會以

           kafka講解支持消息重試

2.流量控制:系統的流量受到時間,季節,天氣,節日等因素的影響,流量並不是均勻的,比如說11.11,流量會很大,

           如果所有流量全都直接打到底層系統,甚至到數據庫,那麼系統很有可能會掛掉,這時候消息中間件的作用就

           體現出來了所有消息先存到broker上,consumer根據自己的消費能力處理broker的消息

3.服務解耦:電商項目中很多系統一般都會訂單感興趣,訂單創建,完成,取消或退回,如果沒有消息中間件,那麼每

          個訂單的創建都要通知到對訂單創建感興趣的系統,這樣各個系統都會耦合到一塊,增加了系統的複雜度;但是

          如果通過消息中間件實現,訂單創建後消息保存到消息中間件,對訂單感興趣的系統訂閱這個消息,然後處理自

          己系統的邏輯很大程度上降低了系統的耦合度

整體來說消息中間件具有以上三大優勢,可以根據具體的業務場景分析,是否應該接入;不過不同的消息中間件也會提

供一些特殊的功能,比如事務,通過消息中間件的事務來保證系統數據的最終一致性,對於系統的性能及吞吐量都有很

大的提升目前支持事務的消息中間件有RocketMq和老牌ActiveMq都是apache下的產品,本文要講的kafka並不支持事務

三、kafka的優勢

1.高吞吐量:據說 每秒可以生產約 25 萬消息(50 MB),每秒處理 55 萬消息(110 MB)

          在消息只支持持久化模式下能達到這麼高的吞吐量已經相當可觀了

2.高可用性:kafka只支持數據持久存儲,並且可以靈活配置數據備份模式及應答模式,有很高的可用性

3.高可擴展性:kafka基於zookeeper的,broker可以靈活擴展

4.消息被處理在consumer維護,而不是在server端,消費失敗可以靈活處理

四、kafka架構及使用

簡單瞭解一下kafka的架構:

producer:消息生產方,直接與broker進行連接;只需要連接到一臺broker上,就可以獲得整個集羣的broker信息,並

                 緩存在系統本地;並且定期更新緩存,防止broker掛掉系統無感知;生產消息到broker採用push的方式

consumer:消息消費方,kafka採用pull的模式消費topic

                 優點:可以根據自身系統的消費能力拉取並消費信息;相比於push方式來說,可以避免消息的丟失

                 缺點:需要實時關注broker中是否有消息產生

broker:消息存儲,並且把自身的信息註冊到zookeeper上

topic:主題,消息發送和消息接收指定的消息的主題,可以存在於多個broker上,但是一個消息只會存在一臺broker上

partitions:消息分區,在磁盤上表現爲一個文件夾,一個topic可以有多個partitions,並每一個partitions存放的數據是

                  互斥的,一個partitions只存在於一個broker上;一般會均勻的分佈在不同broker上

segment:消息片,在磁盤上表現爲一個文件,在partitions文件夾下,存放消息數據

replica:消息副本,對應於partitions,作爲消息的備份出現,可配置數量;一般會均勻的分佈在不同broker上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章