一、分割槽目的
kafka的結構是topic、分割槽、訊息三層結構
topic下的多個分割槽可以部署在不同的伺服器上,實現負載均衡,提高吞吐量。資料的讀寫就是針對分割槽實現的。
二、分割槽策略
分割槽策略指的是:生產者將訊息發往哪個分割槽的演算法。
輪詢策略:按照分割槽依次傳送資料
隨機策略:按照分割槽數隨機生成傳送的分割槽
按訊息鍵儲存策略:根據key hash後對分割槽數求餘,將key相同的資料發往同乙個分割槽
輪詢策略、隨機策略、按訊息鍵儲存策略等
三、舉例
某公司的訊息間是存在因果關係的,為了保持訊息的順序性,可以採用單分割槽或按訊息鍵儲存策略+多分割槽的方法。但是如果分割槽數變了,會導致同乙個key訊息發到不同的分割槽中。
四、分割槽訊息和生產者訊息順序一致問題?
比如:生產者連續傳送訊息ab,但是a因為網路原因傳送失敗,而b傳送成功。或者a訊息在重試傳送成功前,b傳送成功,會導致生產者的訊息順序和分割槽中的訊息順序不一致的問題。設定max.in.flight.requests.per.connection=1可以保持順序性。
我有乙個朋友,他們公司的kafka訊息中是存在因果關係的,採用的是多分割槽+按訊息鍵值儲存策略,分割槽數是在服務剛啟動時,已經設定好,不會允許動態增刪分割槽數。但是沒有設定max.in.flight.requests.per.connection=1,原因是每個訊息中都攜帶了流水號,倘若發生流水號跟快取中不一致時,會強制發起資料同步,而訊息快取時會直接丟棄,保證了資料的順序性。
Kafka生產者訊息分割槽機制原理剖析
目錄 1.kafka簡單介紹 2.kafka 生產者的分割槽策略 kafka 是一種分布式的訊息引擎系統,它的主要功能是提供一套完備的訊息發布與訂閱解決方案。在 kafka 中,發布訂閱的物件是主題 topic 向主題發布訊息的客戶端應用程式稱為生產者 producer 而訂閱這些主題訊息的客戶端應...
kafka生產者分割槽策略
kafka生產者 分割槽策略 分割槽的原因 1 方便在集群中擴充套件,每個partition可以通過調整以適應它所在的機器,而乙個topic又 可以有多個partition組成,因此整個集群就可以適應任意大小的資料了 2 可以提高併發,因為可以以partition為單位讀寫了。分割槽的原則 1 指明...
Kafka生產者與消費者分割槽策略
分割槽的目的在於可以提高併發,並在可在集群中擴充套件以適應不同大小的資料 producer傳送的資料會被封裝成producer recorder物件 在生成producer recorder物件時指明partition的情況下,直接進入對應的partition分割槽 沒有指明partition值,但...