admin管理员组文章数量:1567015
黏性分区策略(StickyPartitioning Strategy)
0.10之后的kafka版本实现了黏性分区策略(StickyPartitioning Strategy)来实现生产者发送数据分区优化。
kafkaproducer发送数据并不是一个一个消息发送,而是取决于两个producer端参数。一个是linger.ms
,默认是0ms,当达到这个时间后,kafkaproducer就会立刻向broker发送数据。另一个参数是batch.size
,默认是16kb,当产生的消息数达到这个大小后,就会立即向broker发送数据。
按照这个设计,从直观上思考,肯定是希望每次都尽可能填满一个batch再发送到一个分区。
但实际决定batch如何形成的一个因素是分区策略(partitionerstrategy)。
在Kafka2.4版本之前,在producer发送数据默认的分区策略是轮询策略(没指定keyd的情况。如果多条消息不是被发送到相同的分区,它们就不能被放入到一个batch中。
所以如果使用默认的轮询partition策略,可能会造成一个大的batch被轮询成多个小的batch的情况。鉴于此,kafka2.4的时候推出一种新的分区策略,即StickyPartitioning Strategy,StickyPartitioning Strategy会随机地选择另一个分区并会尽可能地坚持使用该分区——即所谓的粘住这个分区。
鉴于小batch可能导致延时增加,之前对于无Key消息的分区策略效率很低。社区于2.4版本引入了黏性分区策略(StickyPartitioning Strategy)。该策略是一种全新的策略,能够显著地降低给消息指定分区过程中的延时。使用StickyPartitioner有助于改进消息批处理,减少延迟,并减少broker的负载。
kafka低版本
低版本轮询数据
kafka高版本
高版本轮询数据
参考:https://baijiahao.baidu/s?id=1709319051451705303&wfr=spider&for=pc
版权声明:本文标题:kafka新版本的一个特性:黏性分区策略(StickyPartitioning Strategy) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1725700935a1037461.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论