問(wèn)題:有哪些分區(qū)策略/分區(qū)算法嗅回?
分區(qū)策略的定義:決定生產(chǎn)者將消息發(fā)送到哪個(gè)分區(qū)的算法咙轩。
1. 輪詢策略/順序分配(默認(rèn)分區(qū)策略)
優(yōu)點(diǎn):可以提供非常優(yōu)秀的負(fù)載均衡能力殴泰,可以保證消息被平均分配到所有分區(qū)上巧还。
缺點(diǎn):無(wú)法保證消息的有序性穗泵。
2. 隨機(jī)策略
優(yōu)點(diǎn):消息的分區(qū)選擇邏輯簡(jiǎn)單泽篮。
缺點(diǎn):負(fù)載均衡能力一般盗尸,也無(wú)法保證消息的有序性
3. hash策略(如果指定了key,默認(rèn)分區(qū)策略為hash策略)
kafka允許為每條消息定義消息key帽撑,可以根據(jù)key來(lái)為消息選擇分區(qū)泼各。
優(yōu)點(diǎn):可以保證相同key的消息被發(fā)送到相同的分區(qū),因此可以保證相同key的所有消息之間的順序性亏拉。
缺點(diǎn):可能會(huì)產(chǎn)生數(shù)據(jù)傾斜 —— 取決于數(shù)據(jù)中key的分布扣蜻,以及使用的hash算法。