kafka:一篇关于基础知识的入门学习笔记
kafka几大构件的名字解释及他们之间的关系说明。
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。
更多推荐
所有评论(0)