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

主从线程模型

【Kafka零基础学习】Broker网络和API层之间的主从多线程模型_第1张图片
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

你可能感兴趣的:(【Kafka零基础学习】Broker网络和API层之间的主从多线程模型)