主题topic
kafka以topic构建消息队列
创建主题需要明确确定:分区数和副本数,zookeeper(旧版)
- 分区数,确定拆分成多少个队列,增加吞吐
- 副本数,确定队列的可靠性
- zookeeper存储基本的信息,比如客户端配置
分区和副本的数量,需要根据业务的吞吐量和稳定性要求进行评估
kafka支持修改topic,支持增加分区,不支持减少分区,这个时候消息队列消息的顺序会受影响,修改时需要三思,另外一个思路是新建一个topic,双写,进行数据切换
常用的工具
- 自带的shell工具
- kafka-admin
分区
分区可以通过参数,实现优先副本。分区平衡,代表的是当前topic数据的平衡。但是不代表每个节点都是如此。kafka支持rebalance.enable参数控制计算分区是否均衡,如果分区不平衡,自动进行leader再选举
节点宕机时,kafka支持分区再分配,进行节点迁移
- kafka不支持自动迁移,比如新增或减少机器,就需要运行脚本进行再迁移了
如何选择合适的分区呢?还是需要从业务场景,软件条件,硬件条件,负载进行选择了。
可以对kafka进行性能测试。