It's our wits that make us men.

分布式模型

Posted on By eatMelon-Masses

kafka每个主题的多个分区日志分布式地存储在kafaka集群上,同时为了故障容错,每个分区都会以副本的方式复制到多个消息代理节点上。其中一个节点会作为主副本,其他节点作为备份副本,主副本负责所有客户端的读写操作,备份副本仅仅从主分本同步数据。主副本出现故障时,备份副本中的一个副本会被选择为新的主副本。

kafka的生产者和消费者行对于服务端而言都是客户端,生产者客户端发布消息到服务端的指定主题,会指定消息所属的分区。生产者发布消息时是否有键,采用不同的策略。

kafka的消费者通过订阅主题来消费消息,并且每个消息都会设置一个消费组名称。因为生产者发不到主题的每一条消息都只会发送给消费组的一个消费者。所以,如果要实现传统消息系统的“队列“模型,让每个消费者都拥有相同的消费组名称。如果要实现”发布-订阅“模型,则每个消费者的消费组名称都不同,这样每条消息就会广播给所有的消费者。