【Kafka零基础学习】Broker网络和API层之间的主从多线程模型

主从线程模型

image.png

说明:

  • 图中有m个acceptor线程,一个acceptor对应多个processor线程。此类线程接收客户端连接请求并创建socketChannel,然后将socketChannel以轮询方式加入到processor的newConnections队列中。
  • processor为I/O线程,负责网络I/O读写。processor线程监听到OP_READ后会创建request并加入到requestQueue中。processor线程监听到OP_WRITE后会将responseQueue中的消息发送到客户端。
  • 整个过程中只有一个RequestChannel,其中包含RequestQueue和ResponseQueue。一个processor对应一个ResponseQueue,多个processor公用一个RequestQueue。
  • processor线程会将读request加入到RequestQueue,之后API线程从RequestQueue获取request并处理,并将response加入到对应processor的ResponseQueue(API线程用到的processor为request包含的processor,是该processor创建了此request),最后再由processor线程处理响应并返回给客户端。

所用环境信息

  • Java JDK:1.8.0_92
  • Scala:2.10.6
  • gradle:3.1
  • zookeeper: 3.4.9
  • kafka: 0.10.0.1
  • Intellij idea Scala 插件:2017.2.13
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容