真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

kafka-consumer-分配策略-創(chuàng)新互聯(lián)

目錄

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有??得赓M網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

分區(qū)的分配及再平衡

1 分區(qū)分配策略之Range

2?分區(qū)分配策略之RoundRobin

3 分區(qū)分配策略之Sticky


分區(qū)的分配及再平衡

一個consumer group中有多個consumer組成,一個topic有多個partition組成,現(xiàn)在的問題是,到底由哪個onsumer來消費哪個partition的數(shù)據(jù)?

Kafka有四種主流的分區(qū)分配策略: Range、RoundRobin、Sticky、CooperativeSticky。
可以通過配置參數(shù)partition.assignment.strategy,修改分區(qū)的分配策略。默認策略是Range + CooperativeSticky。Kaka可以同時使用多個分區(qū)分配策略。

發(fā)生分配的過程在消費者組初始化過程中的第4步leader消費者制定消費方案和第7步中再平衡的過程中,具體初始化流程在此文章中有記錄kafka-consumer-基本介紹(理論)_SeaDhdhdhdhdh的博客-博客

1 分區(qū)分配策略之Range

Range是對單個topic而言的。

首先對同一個topic里面的分區(qū)按照序號進行排序,并對消費者按照字母順序進行排序。
假如現(xiàn)在有7個分區(qū),3個消費者,排序后的分區(qū)將會是0,1,2,3,4,5,6;消費者排序完之后將會是C0,C1,C2。

通過 partitions數(shù)/consumer 數(shù)來決定每個消費者應(yīng)該消費幾個分區(qū)。如果除不盡,那么前面幾個消費者將會多消費1個分區(qū)。

例如,7/3=2余1,除不盡,那么消費者C0便會多消費1個分區(qū)。8/3=2余2,除不盡,那么C0和C1分別多消費一個。

注意:如果只是針對1個topic而言,C0消費者多消費1個分區(qū)影響不是很天。但是如果有N多個topic,那么針對每個topic,消費者C0都將多消費1個分區(qū),topic越多,C0消費的分區(qū)會比其他消費者明顯多消費N個分區(qū)。除此之外, 如果再C0消費者掛掉之后生產(chǎn)者發(fā)送消息(掛掉以后45秒以內(nèi)),那么本來有C0消費的0,1,2分區(qū)會重新分配給下一個序號的消費者(C1)消費。此時生產(chǎn)者再次發(fā)送消息(掛掉45秒以后)會觸發(fā)再平衡,將剩余兩個消費者根據(jù)range策略再次進行分配。
容易產(chǎn)生數(shù)據(jù)傾斜!

2?分區(qū)分配策略之RoundRobin

RoundRobin針對集群中所有Topic而言。

RoundRobin 輪詢分區(qū)策略,是把所有的partition和所有的consumer都列出來,然后按照hashcode進行排序,最后通過輪詢算法來分配partition給到各個消費者。

修改分區(qū)策略代碼:

//設(shè)置分區(qū)分配策略
properties.put(ConsumerConfig.PARTITION_ASSIGIIEINTLSTRATEGY_CONFI, "org.apache.kafka.clients.consumer.RoundRotinassignor");

注意測試時所有的消費者都要配置分配策略。

如果再C0消費者掛掉之后生產(chǎn)者發(fā)送消息(掛掉以后45秒以內(nèi)),那么本來有C0消費的0,1,2分區(qū)會重新分配給其他消費者(C1,C2)消費。此時生產(chǎn)者再次發(fā)送消息(掛掉45秒以后)會觸發(fā)再平衡,將剩余兩個消費者根據(jù)RoundRobin策略再次進行分配。

3 分區(qū)分配策略之Sticky

粘性分區(qū)定義:可以理解為分配的結(jié)果帶有“粘性的”。即在執(zhí)行一次新的分配之前,考慮上一次分配的結(jié)果,盡量少的調(diào)整分配的變動,可以節(jié)省大量的開銷。
粘性分區(qū)是Kafka 從 0.11.x版本開始引入這種分配策略,首先會盡量均衡的放置分區(qū)到消費者上面,在出現(xiàn)同一消費者組內(nèi)消費者出現(xiàn)問題的時候,會盡量保持原有分配的分區(qū)不變化。

//設(shè)置分區(qū)分配策略
properties.put(ConsumerConfig.PARTITION_ASSIGIIEINTLSTRATEGY_CONFI, "org.apache.kafka.clients.consumer.StickyAssignor");

如果再C0消費者掛掉之后生產(chǎn)者發(fā)送消息(掛掉以后45秒以內(nèi)),那么本來有C0消費的0,1,2分區(qū)會重新分配給其他消費者(C1,C2)消費。此時生產(chǎn)者再次發(fā)送消息(掛掉45秒以后)會觸發(fā)再平衡,將剩余兩個消費者根據(jù)sticky策略再次進行分配。

注意:sticky和RoundRobin的不同點在于:RoundRobin是輪詢分配,分配到不同消費者的分區(qū)會有一定的規(guī)律,sticky更重于均勻分配,分配到不同消費者的分區(qū)不一定會有規(guī)律。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


當前題目:kafka-consumer-分配策略-創(chuàng)新互聯(lián)
分享鏈接:http://weahome.cn/article/edpep.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部