个人关于kafka使用的总结,停留在使用的层面是远远不够的,希望大家,会用,更懂得为什么这么用。基于0.8版本的总结
关于生产者:
- 分区策略:指定分区就用分区,没有指定分区就用key,没有就随机给一个的。
- 发送:支持批量发送
- 分区:有一个leader,和多个从的,当前无效的时候会选择一个leader,所有从的消息同步了,才commit能消费。
关于消费者
- 一个消费者可以消费多个分区内容。
- 一个topic可以被多个goupId 消费
- 一个分区只能被一个groupId的一个消费者消费
- list kafkaStream 由 获取是设置的map里面的value值决定。
- 消费者线程数要大于等于list集合的长度。
- 消费者的设置初始offeset 为smallest 保证之前的消息可以被消费想要多线程消费kafka必须要设置分区数大于1,同时注意多线程消费kafak数据,会存在同一个数据,不通状态,消费速度不通导致的问题。
- offset维护在消费者这里,会同步到zk里面,消费之前问Zookeeper要当前组,当前分区消费的位置。
关于zookeeper
- 注册功能 borker注册,生产者注册,消费者注册,topic注册
- 负载均衡 生产者负载均衡,消费者负载均衡
- 消费记录,offerset消费信息记录
不足的地方还是会继续更新的,欢迎指正。
其实目前公司用的都是基本的生产者,消费者模式,配置项目,发送,消费,分区,工作模式等等,还是有很多需要去理解运用。