kafka一个主题的一个分区在同一个group中只能被一个消费者消费,如果不是同一个group中的消费者可以同时消费。为了实现这个功能kafka需要管理和分配group中的消费分区。这一大块功能属于coordinator。
kafka可以分成3大块,kafka服务器端、生产者、消费者。生产者的逻辑较为简单,主要是对消息发送进行处理减少网络通信次数。
对于生产者我们要关注的就是它的线程模型或者说网络模型。
在解析PoolArena和PoolByteBuf的过程中会发现有一个类频繁的出现:PooledByteBufAllocator。
PooledByteBufAllocator可以理解为内存分配的工厂类。
在解析PoolChunk、PoolSubpage和PoolArena中会发现最终分配的内存和PooledByteBuf有密切的关系。
前面解析了PoolChunk、PoolSubpage和PoolChunkList的内容,接下来解析PoolArena。在之前解析的过程中可以发现PoolChunk、PoolSubpage和PoolChunkList都是被PoolArena管理着。