偏移量管理
- 每个consumer内存里的数据结构保存每个topic的每个分区的消费的offset,定期会提交offset,老版本是写入zookeeper,但是我们知道zookeeper是不支持高并发的,kafka当初的架构设计的不合理采用zk用来控制并发,是不够的,zk是用来做分布式协调的,轻量级的可以,不能负责高并发操作,作为简单的数据存储可以,例如集群信息等和clickhouse现在面临的问题一样
- 现在新的版本提交offset发送给kafka内部topic:__consumer_offset,提交过去的时候,key是group_id +topic + 分区号保留最新的数据
- __conusmer_offsets可能会接收高并发的请求,所以默认分区数是50个,这样如果你的kafka部署了一个大集群,比如50台机器,就可以用50台机器来抗offset提交请求的压力