简述Kafka 的网络设计模式 ?

Kafka 的网络设计模式主要包括以下部分:

  1. 消息队列设计:Kafka 通常采用结构化的消息设计,例如 XML 或 JSON 格式。同时,Kafka 提供了传输协议设计,例如狭义的 AMQP、WebService + SOAP/MSMQ,以及广义的 RPC 框架如 PB、Dubbo。
  2. 消息队列模型:Kafka 支持两种消息队列模型,即点对点模型和发布/订阅模型。点对点模型中,生产者将消息发送到指定队列,消费者从指定队列获取消息。每条消息有一个发送者生产出来,且只能被一个消费者获取。发布/订阅模型中,消费者被动地接受消息,由消息队列推送给消费者;或者消费者主动获取消息。每条消息由一个生产者生产出来,可由多个消费者消费,实现消息复用。由于消息不删除,所以需要记录消费者消费消息的位置 offset。
  3. Reactor 模式:Kafka 的网络层采用了 Reactor 模式,这是一种基于事件驱动的模式。在 Java 的 NIO 中,提供了 Reactor 模式的 API。这种模式中,首先创建 ServerSocketChannel 对象并在 Selector 上注册 OP_ACCEPT 事件,ServerSocketChannel 负责监听指定网络端口上的连接请求。当 Acceptor 收到来自客户端的 Socket 连接请求时,为这个连接创建相应的 SocketChannel,将其设置为非阻塞模式,并在 Selector 上注册其关注的 I/O 事件,例如 OP_READ OP_WRITE。此时客户端服务端之间 socket 连接正式建立完成。

发表评论

后才能评论