在kafka中,我们能创建多种类型的集群,一般如下:
- 单节点——单个broker集群
- 单节点——多broker集群
- 多结点——多broker集群
kafka集群中主要有五个组件:
- Topic:主题主要用于用一个名字标识生产者往kafka发送了什么类型的消息,作为消息归类的标识唯一键。在kafka中,主题被分区,消息按照顺序被切成几个分区存放,分区是以log文件的形式保存在集群中的。每一条消息在分区中被分配唯一标识符,这个叫offset(偏移量),可以类比于数组,kafka的消息在集群中保存类似于分段的数组,数组下标对应于offset。
- Broker:众所周知,kafka集群是由一个或者多个服务器组成的,每个服务器上可能有一个或者多个服务进程,那么这种服务进程,就叫做broker。Topic被创建在这样的broker里面。
- Zookeeper:zk服务是作为一个协调者出现的,主要用于协调broker和消费者。zk官网给出这样的描述:ZooKeeper allows distributed processes to coordinate with each other through
a shared hierarchical name space of data registers (we call these registers
znodes), much like a file system.然而,zk和标准的文件系统区别在于,zk是受限的文件系统,每个zk结点能够单独分配数据,并且数量受限,zk只能用于存储协调数据:状态信息、配置、本地信息等等。 - 生产者:生产者用于发布数据,选择某个topic合适的分区进行发送。为了负载均衡,消息分配给分区的策略可能采用轮询或者自定义函数(hash)。
- 消费者:用于消费数据。