kafka和zookeeper

kafka基础

简单来说,kafka就是一个分布式的消息系统(在生产者和消费者之间构建通信),生产-存储-消费的架构。

术语的定义

Broker:Kafka集群包含一个或多个服务器,每个服务器被称为broker。
Topic:每条发布到Kafka集群的消息都有一个分类,这个类别被称为Topic(主题)。
Producer:指消息的生产者,负责发布消息到kafka broker。
Consumer:指消息的消费者,从kafka broker拉取数据,并消费这些已发布的消息。
Partition:Partition是物理上的概念,每个Topic包含一个或多个Partition,每个partition都是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。
Consumer Group:消费者组,可以给每个Consumer指定消费组,若不指定消费者组,则属于默认的group。
Message:消息,通信的基本单位,每个producer可以向一个topic发布一些消息。

拓扑结构

kafka和zookeeper
1、写消息时允许多个生产者写到同一个Partition中。
2、读消息时一个Partition只允许被一个消费组中的一个消费者所消费,而一个消费者可以消费多个Partition。
3、kafka不会直接把消息传递给消费者,而是在broker中进行存储,为了减少磁盘写入的次数,broker会将消息暂时缓存起来,当消息的个数或尺寸、大小达到一定阀值时,再统一写到磁盘上。
4、kafka中每条消息写到partition中,是顺序写入磁盘的。
5、推荐partition的数量一定要大于同时运行的consumer的数量,partition的数量要小于等于集群broker的数量,这样消息数据就可以均匀的分布在各个broker中。

kafka tool基本使用

下载安装

kafka tool下载地址

安装时,不断的点下一步即可

基本使用

kafka和zookeeper
test成功后,即可看到目录。
kafka和zookeeper

kafka和zookeeper

Zookeeper

ZooKeeper是一种为分布式应用所设计的高可用、高性能的开源协调服务。它提供了一项基本服务:分布式锁服务,同时,也提供了数据的维护和管理机制,如:统一命名服务、状态同步服务、集群管理、分布式消息队列、分布式应用配置项的管理等等。

拓扑结构

kafka和zookeeper
Leader:领导者角色,主要负责投票的发起和决议,以及更新系统状态。
follower:跟随着角色,用于接收客户端的请求并返回结果给客户端,在选举过程中参与投票。
observer:观察者角色,用户接收客户端的请求,并将写请求转发给leader,同时同步leader状态,但是不参与投票。Observer目的是扩展系统,提高伸缩性。
client:客户端角色,用于向zookeeper发起请求。

写流程

1、客户端Client首先和一个Server或者Observe通信,发起写请求;
2、Server将写请求转发给Leader,Leader再将写请求转发给其它Server;3、其它Server在接收到写请求后写入数据并响应Leader;
4、Leader在接收到大多数写成功回应后,认为数据写成功;
5、最后响应Client,完成一次写操作过程。

引自:https://blog.****.net/qq_42255763/article/details/99541914
https://www.cnblogs.com/FengGeBlog/p/10582626.html