Kafka基本术语
-
Message(消息):传递的数据对象,主要由四部分构成:offset(偏移量)、key、value、timestamp(插入时间);其中offset和timestamp在kafka集群中产生,key/value在producer发送数据的时候产生
-
Broker(代理者):Kafka集群中的机器/服务被成为broker, 是一个物理概念。
-
Topic(主题):维护Kafka上的消息类型被称为Topic,是一个逻辑概念。
-
Partition(分区):具体维护Kafka上的消息数据的最小单位,一个Topic可以包含多个分区;Partition特性:ordered& mmutable。(在数据的产生和消费过程中,不需要关注数据具体存储的Partition在那个Broker上,只需要指定Topic即可,由Kafka负责将数据和对应的Partition关联上)
-
Producer(生产者):负责将数据发送到Kafka对应Topic的进程
-
offset:消息在日志中的位置,可以理解是消息在 partition 上的偏移量,也是代表该消息的
唯一序号 -
Consumer(消费者):负责从对应Topic获取数据的进程
-
Consumer Group(消费者组):每个consumer都属于一个特定的group组,一个group组可以包含多个consumer,但一个组中只会有一个consumer消费数据.
-
Zookeeper:保存着集群 broker、topic、partition 等 meta 数据;另外,还负责 broker 故
障发现,partition leader 选举,负载均衡等功能
Consumer Group,同样是逻辑上的概念,是Kafka实现单播和广播两种消息模型的手段。同一个topic的数据,会广播给不同的group;同一个group中的worker,只有一个worker能拿到这个数据。换句话说,对于同一个topic,每个group都可以拿到同样的所有数据,但是数据进入group后只能被其中的一个worker消费。group内的worker可以使用多线程或多进程来实现,也可以将进程分散在多台机器上,worker的数量通常不超过partition的数量,且二者最好保持整数倍关系,因为Kafka在设计时假定了一个partition只能被一个worker消费(同一group内)。