学习kafka的基本信息总结 (3)

日志的partitions分布在Kafka集群的每个server上,每个服务器负责一部分partitions的数据处理和请求。每个partition都可以设置若干备份分布在Kafka集群的其他server上,并且每个partition都有一个server作为leader,0个或多个server作为辅助的follows。Leader处理其负责的partition所有的读写请求,follows对leader上所有的读写请求等元数据进行备份,以便leader宕机之后follow充当leader的角色。扮演leader的服务器处理部分partitions,其他的follows处理其他的partitions,这样Kafka集群就实现了负载均衡的功能。

Producers

Produce将消息发布到它选择的topic中,并负责将消息分发到其对应topic的partition中。

Consumers

传统消息有排队和发布-订阅两种模型。在排队模型中,consumer池中的consumer从一个server读取消息,每条消息只能被一个consumer取到。在分发-订阅模型中,每条消息被广播到所有的consumers。Kafka用consumer group整合了这两种模型的特点。 每个consumer都属于一个consumer group。Kafka集群和consumer group之间的消息分发采用了发布-订阅模型,consumer group中的consumer通过consumer group和Kafka集群采用了排队模型。

alt text

alt text

上图所示:每个server中的partition都广播到各个consumer group,每个consumer group中的consumer都从group中获取消息。 两种极端的情况: 1. 若所有的consumer都属于同一个consumer group,每个consumer都从Kafka集群以队列模型获取消息 2. 若所有的consumer属于不同的consumer group,kafka集群相当于将消息广播到每个consumer Kafka通过将topic分成partitions的方式维持并行性,并通过consumer线程池确保消息的有序性和负载均衡。具体做法为:将topic分成若干partitions,在consumer group中创建若干consumers,每个partition对应一个consumer,这样每个consumer都有序的读取其对应partition上的消息。从整个topic来看,若干consumers并行读取topic中的消息。

安装和使用 Centos安装Zookeeper

解压zookeeper包
##以版本号zookeeper-3.4.8.tar.gz为例,将zookeeper-3.4.8.tar.gz解压到/home/kafka目录下

sudo tar xvf zookeeper-3.4.8.tar.gz -C /home/kafka mv zookeeper-3.4.8 zookeeper

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywsfd.html