這里不是說Kafka的主題為什么要分區,而是說在分區的結構下,如何讓具有某種特點的消息發送到特定分區。
化隆ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創新互聯建站的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
這里有一個很明顯的問題,就是主題分區,那么生產者發送的消息到底被發送到了哪個分區呢?一般我們都知道有輪詢機制或者是隨機機制,這兩種機制都比較好理解。而且Kafka也都支持,在新版本中默認使用的是輪詢機制,如下圖所示:
但是在某些場景下我們需要控制某種類型的消息發送到特定分區或者說我們需要嚴格的進行消息的順序消費,也就是說這些消息有因果關系,要想消費下一條必須先要消費前一條。消費者消費某個分區的消息肯定是順序消費,但是由于消息不是順序進入分區的,你可以從上圖看到0002消息并不是在0001消息之后,這就導致有可能消費者程序先消費了0002。如果這些消息沒有因果關系那么則沒問題,只要保證消費者都消費完就可以了至于先后順序無需關心。但是如果有因果關系就不行,這樣會造成混亂。
要想實現因果關系的消費可以有2個辦法
我們創建一個具有單分區的主題,這樣消息就順序進入分區,消費者也就順序消費。這樣實現了全局順性,不過這樣就降低了吞吐量。
這種就是為消息設置Key,Key相同的發送到同一分區。要注意這里雖然是多個分區看似吞吐量增加,但是你可以設想一下如果你的因果消息Key都一樣那么這種模式和上面的單分區模式其實一樣。如果你的因果消息可以繼續細分為幾個不同的Key,那么在多分區模式下相對于整體來講吞吐量是提高的。
kafka-python 模塊的使用
Java客戶端的使用
網頁題目:Kafka學習(五) 消息分區
文章URL:http://m.kartarina.com/article18/dsoggdp.html
成都網站建設公司_創新互聯,為您提供移動網站建設、營銷型網站建設、網站內鏈、服務器托管、商城網站、網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯