首頁  >  文章  >  Kafka的特點有哪些

Kafka的特點有哪些

hzc
hzc原創
2020-06-29 11:40:529348瀏覽

Kafka的特點有:1、同時為發布和訂閱提供高吞吐量;2、可進行持久化操作,將訊息持久化到磁碟,因此可用於批量消費;3、分散式系統,易於向外擴展;4、支援online和offline的場景。

Kafka的特點有哪些

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn