apache kafka是一種分布式的訊息中介軟體,什麼是訊息中介軟體,它是一種可靠的訊息傳輸機制,可以進行與平台無關的資料交流,並基於資料通訊完成訊息傳遞和佇列模型,可以在分布環境下擴充套件程序間的通訊
1.流處理平台的三個關鍵能力
- 發布和訂閱訊息(流),在這方面,它類似於乙個訊息佇列或企業訊息系統
- 以容錯的方式儲存資料
- 在訊息流發生時處理他們
2.兩個優勢
- 可靠
- 可以實現資料和流之間的轉換
3.兩個特點
- 以集群的形式執行現在乙個或者多個系統上
- kafa集群儲存的訊息是以topic為類別記錄的
4.四個核心api
- producer api:發布訊息到乙個或者多個topic
- consumer api:訂閱乙個或者多個topic,並處理產生的訊息
- streams api:充當乙個流處理器,從乙個或者多個topic消費輸入流,並生產乙個輸出流到1個或多個輸出topic,有效地將輸入流轉換到輸出流
- connector api:允許構建或執行可重複使用的生產者或消費者,將topic連線到現有的應用程式或資料系統。例如,乙個關聯式資料庫的聯結器可捕獲每乙個變化
5.四個基本的術語
- topic:kafka將訊息種子分門別類,每一類的訊息稱之為乙個主題topic
- producer:生產者,即產生訊息的一方
- consumer:消費者,訂閱(接收)生產者產生的訊息
- broker:每乙個kafka及集群中的伺服器都是乙個broker
6.分布式
- log的分割槽被分配到集群中的多個伺服器上,每個伺服器處理他分到的分割槽
- 根據配置分割槽還可以複製到其他伺服器作為備份容錯
- 每個分割槽有乙個leader和多個follower,leader處理次分割槽的所有讀寫請求,而follower被動的複製資料
- 如果leader宕機,其他的乙個follower會被推薦為乙個新的leader
- 一台伺服器可能是乙個分割槽的leader,卻是另乙個分割槽的follower,這樣可以做到負載均衡,避免業務集中
7.異地資料同步技術
kafka mirrormaker為群集提供geo-replication支援。借助mirrormaker,訊息可以跨多個資料中心或雲區域進行複製。 您可以在active/passive場景中用於備份和恢復; 或者在active/passive方案中將資料置於更接近使用者的位置,或資料本地化
8.生產者
發布訊息到topic,需要選擇發布到那個分割槽,最簡單的方式是從分割槽列標中輪訓選擇,也可以一句某種演算法選擇分割槽
9.消費者
- 佇列:一組消費者從伺服器讀取訊息,一條訊息只有其中的乙個消費這來處理
- 發布-訂閱:訊息被廣播給所有的消費者,接收到訊息的消費之都可以處理此訊息
- kafka為這兩種模式提供了單一的消費者模型:
消費者用乙個消費者組名標記自己,乙個發布在topic上的訊息被分發給此消費者組中的乙個消費者,假如所有的消費者都在乙個組中,那麼就變成了queue模型,加入所有的訂閱者在不同的組中,就變成了發布-訂閱模型
10.主題,日誌和分割槽
topic是發布的訊息的類別,對於每乙個topic,kafka集群維護這乙個分割槽的log
每個分割槽都是乙個順序的,不可變的訊息佇列,並且可以持續的新增
分割槽中的訊息被分了乙個序列號,稱之為偏移量(offset),每個分割槽的偏移量都是唯一的
kafka集群中保持所有的訊息,一直到過期,不論這條訊息是否被消費。
所有的消費者維護的僅僅就是這個偏移量,即消費者在log中的位置,這個偏移量由消費者控制,可以將其重置為乙個更老的位置,重新讀取訊息
分割槽存在的目的有兩個,分別是:
1)處理更多的訊息,不受單台伺服器的限制
2)分割槽可以作為並行的處理單元
kafka並行處理帶來的問題
傳統的訊息佇列,是可以保證訊息的先後順序的,kafka作為分布式的系統,服務端很容易保證訊息的先後順序,但是服務端產生的訊息是被非同步的分發到多個消費者手中的,此時系統並不能保證每乙個消費者處理訊息之後的順序和之前是保持一致的,況且還面臨服務端訊息分割槽的情況。
kafka中提出的策略則是分割槽,因為乙個分割槽中的訊息只能被消費者組中的乙個消費者處理,這樣,當前分割槽中的訊息順序就得到了保證,如果所有的訊息都需要保證順序,那麼我們可以使用單一的分割槽來解決,此時多分割槽的優勢將不復存在,在資料處理效率上會產生大的影響
11.kafka的保證
- topic特定分割槽上訊息先後順序可以保證
- 如果配置個複製因子(replication factor)n,那麼它允許n-1臺機器宕機而不會丟失任何已經提交的資料
12.kafka作為儲存系統
訊息佇列和訊息分離的系統,訊息其實是被儲存在磁碟中,並且複製到其他的集群中以保證高容錯性,並允許生產者等待訊息應答,直到訊息完全寫入
kafka磁碟結構保證無論資料的大小,執行時相同的
13.kafka流處理
kafka除了讀寫操作,更加重要的目標是實現實時的流處理
在kafka中,流處理持續獲取資料topic的資料,進行處理加工,然後寫入輸出topic
kafka基本概念
kafka 1 是一種高吞吐量 2 的分布式發布訂閱訊息系統,有如下特性 kafka基本概念 消費模式 1 分割槽消費模式 vs 組消費模式 分割槽的日誌被分發到集群內的伺服器上,每台伺服器負責處理一些分割槽和對這些分割槽的讀寫請求。為滿足容錯需求,各分割槽的資料都按乙個可配置的量被複製到集群的其他...
kafka基本概念
1.topics 主題 屬於特定類別的訊息流成為主題。資料儲存在topics中,topics被拆分為分割槽。對於每個主題,kafka儲存乙個分割槽的資料 每個這樣的分割槽包含不可變有序序列的訊息。分割槽被實現為具有相等大小的一組分段檔案。2.partition 分割槽 主題可能有許多分割槽,因此它可...
kafka 基本概念
訊息 訊息相當於資料庫中的記錄,kafka中的的訊息是二進位制訊息流,所以kafka中的訊息沒有特別的格式或者含義 批次 訊息可以分批次的被傳送,這樣可以提高效率,單條訊息穿梭於網路間,會導致大量的網路開銷,批次越大單位時間內處理的訊息就越多,單個訊息的傳輸時間就越長,批次訊息會被壓縮 可以提公升效...