consumer
1.先根据任意一个broker建立连接
2.根据Groupid通过算法获取到分区号,去_consumer_offsets的topic上找到leader所在的broker,创建GroupCoordinator并建立连接
3.加入GroupCoordinator选出consumer的leader(谁先进谁就是leader),并分配策略(同组的consumer Leader会进行partition的分配,哪个consumer连接哪个partition)
4.consumer leader将分配策略同步给Group Coordinator,以便consumer的follow去Group Coordinator上同步获取策略
5.获取各个分区的offset的位置
6.根据各个分区的offset来拉取数据
NIO
<b><font color="#f44336">需要扩展学习</font></b>
涉及如何request与response相对应
PageCache
命中PageCache直接取走
零拷贝
直接从磁盘sendfile给Consumer,不再经过broker
broker进行mute、unmute操作一条条的读取
发送的机制:先层层封装,只有真正发送的时候,才会触发写事件