1.kafka名字解释

(1)Broker:Kafka节点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。
(2)Topic:一类消息,消息存放的目录即主题,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发。
(3)Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列
(4)Segment:partition物理上由多个segment组成,每个Segment存着message信息
(5)Producer : 生产message发送到topic
(6)Consumer : 订阅topic消费message, consumer作为一个线程来消费
(7)Consumer Group:一个Consumer Group包含多个consumer, 这个是预先在配置文件中配置好的。各个consumer(consumer 线程)可以组成一个组(Consumer group ),partition中的每个message只能被组(Consumer group ) 中的一个consumer(consumer 线程 )消费,如果一个message可以被多个consumer(consumer 线程 ) 消费的话,那么这些consumer必须在不同的组。Kafka不支持一个partition中的message由两个或两个以上的consumer thread来处理,即便是来自不同的consumer group的也不行。

2.关系说明

(1)多个Broker节点向Zookeeper注册时,Zookeeper选择一个作为Broker Controller,如果宕机则其他Broker节点重新注册,Zookeeper重新选择一个节点作为Controller;
(2)一个Topic绑定多个Partition,Producer给Topic发送的消息会负载均衡的存储在绑定的几个Pertition中;
(3)producer先把message发送到partition leader,再由leader发送给其他partition follower
(4)Partition会分配给Broker节点;
(5)Consumer Group里面包含多个Consumer;
(6)同一partition的一条message只能被同一个Consumer Group内的一个Consumer消费。不能够一个consumer group的多个consumer同时消费一个partition;
(7)一般情况下,一定是一个consumer group处理一个topic的message;
(8)每个partition可以在其他的kafka broker节点上存副本,以便某个kafka broker节点宕机不会影响这个kafka集群。存replica副本的方式是按照kafka broker的顺序存。例如有5个kafka broker节点,某个topic有3个partition,每个partition存2个副本,那么partition1存broker1,broker2,partition2存broker2,broker3。。。以此类推;
(9)多个partition经hash分配到不同的broke。

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐