Kafka分区
分区的好处
- ==便于合理的使用存储资源==,每个Partition在一个Broker上存储,可以把海量的数据按照分区切割成一块一块的数据存储在多台Broker上。合理控制分区任务,可以实现==负载均衡==的效果。
- ==提高并行度==,生产者可以以分区为单位==发送数据==;消费者可以以分区为单位进行==消费数据==。
分区策略
- 多 Partition 分布式存储,利于集群数据的均衡。
- 并发读写,加快读写速度。
- 加快数据恢复的速率:当某台机器挂了,每个 Topic 仅需恢复一部分的数据,多机器并发。
选择分区的原则
- 指明 partition 的情况下,使用指定的 partition;
- 没有指明 partition,但是有 key 的情况下,将 key 的 hash 值与 topic 的 partition 数进行取余得到 partition 值;
- 既没有指定 partition,也没有 key 的情况下,kafka采用Sticky Partition(黏性分区器),会随机选择一个分区,并尽可能一直使用该分区,待该分区的batch已满或者已完成发送,==Kafka在随机一个分区进行使用(必须和上一次的分区不同,相同就再选)==
自定义分区器
为了满足业务需求,你可能需要自定义分区器。
需求
例如:我们实现一个分区器,姓名是小明的就发送到0号分区,小红的发送到1号分区,其他发送到2号分区。
实现步骤
- 定义类实现Partitioner接口
- 重写partition() 方法
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果