Kafka的特點有:1、同時為發布和訂閱提供高吞吐量;2、可進行持久化操作,將訊息持久化到磁碟,因此可用於批量消費;3、分散式系統,易於向外擴展;4、支援online和offline的場景。
Kafka的特色及使用情境
Kafka是分散式發布-訂閱訊息系統。它最初由LinkedIn公司開發,之後成為Apache專案的一部分。 Kafka是一個分散式的,可分割的,冗餘備份的持久性的日誌服務。
它主要用於處理活躍的串流資料。在大數據系統中,常常會碰到一個問題,整個大數據由各個子系統組成,數據需要在各個子系統中高效能,低延遲的不停流轉。
傳統的企業訊息系統並不是 非常適合大規模的資料處理。為了已在同時搞定線上應用(訊息)和離線應用程式(資料文件,日誌)Kafka就出現了。 Kafka可以起到兩個作用:
降低系統組網複雜度。
降低程式設計複雜度,各個子系統不在是相互協商接口,各個子系統類似插口插在插座上,Kafka承擔高速資料匯流排的作用
Kafka主要特點:
同時為發布和訂閱提供高吞吐量。據了解,Kafka每秒可生產約25萬個訊息(50 MB),每秒處理55萬個訊息(110 MB)。
可進行持久化運算。將訊息持久化到磁碟,因此可用於大量消費,例如ETL,以及即時應用程式。透過將資料持久化到硬碟以及replication來防止資料遺失。
分散式系統,易於向外擴展。所有的producer、broker和consumer都會有多個,都是分散式的。無需停機即可擴展機器。
訊息被處理的狀態是在consumer端維護,而不是由server端維護。失敗時能自動平衡。
支援online和offline的場景。
Kafka的設計重點:
1、直接使用linux 檔案系統的cache,來有效率地快取資料。
2、採用linux Zero-Copy提高發送效能。傳統的資料傳送需要傳送4次上下文切換,採用sendfile系統呼叫之後,資料直接在內核態交換,系統上下文切換減少 為2次。根據測試結果,可以提高60%的資料傳送效能。
3、資料在磁碟上存取代價為O(1)。 kafka以topic來進行訊息管理,每個topic包含多個part(ition),每個part對應一 個邏輯log,有多個segment組成。每個segment中儲存多個訊息(見下圖),訊息id由其邏輯位置決定,即從訊息id可直接定位到訊息的儲存 位置,避免id到位置的額外對應。每個part在記憶體中對應一個index,記錄每個segment中的第一個訊息偏移。發佈者發到某個topic的消息會被均勻的分佈到多個part上(隨機或根據用戶指定的回調函數進行分佈),broker收到發布訊息往對應part的最後一個segment上添加該消息,當當某個segment上的消息條數達到配置值或訊息發佈時間超過閾值時,segment上的消息會被flush到磁碟,只有flush到磁碟上的消息訂閱者才能訂閱到,segment達到一定的大小後將不會再往該segment寫數據,broker會建立新的segment。
4、明確分佈式,也就是所有的producer、broker和consumer都會有多個,都是分散式的。 Producer和broker之間沒有負 載均衡機制。 broker和consumer之間利用zookeeper進行負載平衡。
所有broker和consumer都會在zookeeper中進 行註冊,並且zookeeper會保存他們的一些元資料資訊。如果某個broker和consumer發生了變化,所有其他的broker和 consumer都會被通知。
以上是Kafka的特點有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!