Kafka 是如何封装 Selector 多路复用器(中篇)

Kafka 是如何封装 Selector 多路复用器(中篇)

来源丨华仔聊技术(ID:gh_97b8de4b5b34)

聊聊 Kafka 是如何封装 Selector 多路复用器的,本系列总共分为3篇,今天是中篇,主要剖析4、5两个问题:

  • 针对 Java NIO 的 SocketChannel,kafka 是如何封装统一的传输层来实现最基础的网络连接以及读写操作的?
  • 剖析 KafkaChannel 是如何对传输层、读写 buffer 操作进行封装的?
  • 剖析工业级 NIO 实战:如何基于位运算来控制事件的监听以及拆包、粘包是如何实现的?
  • 剖析 Kafka 是如何封装 Selector 多路复用器的?
  • 剖析 Kafka 封装的 Selector 是如何初始化并与 Broker 进行连接以及网络读写的?
  • 剖析 Kafka 网络发送消息和接收响应的整个过程是怎样的?
  • 认真读完这篇文章,我相信你会对 Kafka 封装 Java NIO 源码有更加深刻的理解。

    这篇文章干货很多,希望你可以耐心读完。

    Kafka 是如何封装 Selector 多路复用器(中篇)

    01 总体概述

    大家都知道在 Java NIO 有个三剑客,即「SocketChannel通道」、「Buffer读写」、「Selector多路复用器」,上篇已经讲解了前2个角色,今天我们来聊聊最后一个重要的角色。

    Kafka Selector 是对 Java NIO Selector 的二次封装,主要功能如下:

  • 提供网络连接以及读写操作
  • 对准备好的事件进行收集并进行网络操作
  • 为了方便大家理解,所有的源码只保留骨干。

    02 Selector 封装过程