Apache Kafka 基本原理
从上图,可以浅显的看到,一个topic配置了三个partition。Partition 1 有两个偏移量0和1;Partition 2 有四个偏移量0,1,2,3;Partition 3 有一个偏移量0。Broker中的replica的id与其server的id一致。
总之,如果topic的replication factor被设置为3,Kafka将会对应每个Partition创建1个完全相同的replica(总共3个)并放置到集群中的节点。为了平衡集群的负载,每个broker将对应至少一个partition。多个producer和consumer可以同时发布和拉取消息。
Topic : 归属于一种类别的数据流既是一个topic(主题);数据存放在多个Topic中;Topics会被分割成至少一个Partition(Kafka默认partition为1);每个partition的消息被塞入一个不可变且排序的序列中;一个partition由多个等大的分割文件组成
Partition : Topics可以有很多个partition,所以它可以hold住任意数量的数据
Partition offset : 每个被分割的消息都有一个唯一的序列id(即offset)
Replica of partition : Replica仅作为partition的备份,从不读写数据,只是为了防止数据丢失(容灾)
Broker : Broker相当于缓存服务器,缓存已发布的数据;每个broker都有0或更多的partition对应每个topic;举个栗子,如果该topic有N个partition,同时有N个broker,则每个broker有一个partition……如果该topic有N个partition,同时有(N+m)个broker,则将有m个broker一个partition都没有(没事做,浪费资源)……如果该topic有N个partition,同时有(N-m)个broker,则每个broker有多个partition
Kafka Cluster : 多个broker则构成一个kafka集群;一个kafka集群可以做到零停机时间扩展;这个集群将管理持久化以及replica中的数据
Producer : Producer是topic消息的生产者,发送数据到broker;producer实时发布消息到broker,broker拼接数据到某个partition中;producer也可以自定义发送数据到某个partition
Consumer : Consumer从broker中读取数据;consumer通过订阅topic,从broker中拉取相应topic的消息过来并做处理(即消费)
Leader : Leader节点负责相应partition的所有读写;每个partition都有一个server作为leader
Follower : 当集群中的leader挂了,其中一个follower将被选举为新的leader;一个follower作为一个普通的consumer,负责拉取数据并更新到自己的数据存储区

被折叠的 条评论
为什么被折叠?



