標籤:
Kafka 是一個高吞吐、分布式、基於發布訂閱的訊息系統,利用Kafka技術可在廉價PC Server上搭建起大規模訊息系統。Kafka具有訊息持久化、高吞吐、分布式、多用戶端支援、即時等特性,適用於離線和線上的訊息消費
Kakfa特點:
- 解耦:訊息系統在處理過程中插入一個隱含、基於資料的介面層。
- 冗餘:訊息佇列持久化,防止資料丟失。
- 擴充性:訊息佇列解耦處理過程,容易擴充處理過程。
- 可恢複性:處理過程失效,恢複後可繼續處理。
- 順序保證:訊息佇列保證順序。Kafka保證一個Partition內訊息有序。
- 非同步通訊:訊息佇列允許訊息排入佇列,等需要時再處理。
Kafka 的術語
Kafka 架構
典型Kafka架構
一個典型的Kafka叢集中包含若干Producer(可以是web前端應用產生的訊息,也可以是類似通過上網Flume收集上網日誌產生的Events等),若干broker(Kafka支援水平擴充,一般broker數量越多,叢集吞吐率越高),若干Consumer Group,以及一個Zookeeper叢集。Kafka通過Zookeeper管理叢集配置及服務協同。Producer使用push模式將訊息發布到broker,Consumer通過監聽使用pull模式從broker訂閱並消費訊息。
多個broker協同合作,producer和consumer部署在各個商務邏輯中被頻繁的調用,三者通過zookeeper管理協調請求和轉寄。這樣一個高效能的分布式訊息發布和訂閱系統就完成了。圖上有個細節需要注意,producer刡broker的過程是push,也就是有資料就推送給broker,而consumer給broker的過程是pull,是通過consumer主動去拉資料的,而不是broker把資料主動發送給consumer端的。
producer、consumer、broker以及zookeeper返四者的關係
我們看上面的圖,我們把broker的數量減少,叧有一台。現在假設我們按照進行部署: ?
Server-1 broker其實就是kafka的server,因為producer和consumer都要去連它。Broker主要還是做儲存用。 ?
Server-2是zookeeper的server端,zookeeper的具體作用你可以去上網查,在這裡你可以先想象,它維持了一張表,記錄了各個節點的IP、連接埠等資訊(以後還會講到,它裡面還存了kafka的相關資訊)。 ?
Server-3、4、5他們的共同之處就是都配置了zkClient,更明確的說,就是運行前必須配置zookeeper的地址,道理也很簡單,這之間的串連都是需要zookeeper來進行分發的。 ?
Server-1和Server-2的關係,他們可以放在一台機器上,也可以分開放,zookeeper也可以配叢集。目的是防止某一台掛了。
簡單說下整個系統啟動並執行順序:
1. 啟動zookeeper的server
2. 啟動kafka的server
3. Producer如果生產了資料,會先通過zookeeper找到broker,然後將資料存放進broker
4. Consumer如果要消費資料,會先通過zookeeper找對應的broker,然後消費。
大資料架構之:Kafka