赞
踩
Kafka集群由若干个Broker组成,Topic由若干个Partition组成,每个Partition里面的消息通过Offset来获取。
Producer使用Push模式将消息发布到Broker上,Consumer使用Pull模式从Broker上订阅并消费消息。Producer根据指定路由方法(Round-Robin、Hash等),将消息Push到Topic的某个Partition里。Kafka集群收到Producer发过来的消息后,将其持久化到硬盘,并保留消息指定时长,而不关注消息是否被消费。Consuber从Kafka集群Pull数据,并控制获取消息的Offset。
区分Replica Leader和Broker Leader
Topic的Partition含有N个Replica,N为副本因子。其中一个Replica为Leader,其他都为Follower,Leader处理Partition的所有读写请求,与此同时,Follower会定期地去同步Leader上的数据。Partition就像一个一个磁盘,而Topic就像将Partition磁盘做了RAID 0一样,这些磁盘存储Topic不同部分的数据,而Replica就是类似磁盘上的数据在其他磁盘有备份一样,也就是磁盘交错备份数据,有原始数据的那个磁盘的数据就是Leader。
kafka内部各个Broker之间的角色并不是完全相等的,Broker内部负责管理分区和副本状态以及异常情况下分区的重新分配等这些功能的模块称为KafkaController。每个Kafka集群中有且只有1个Leader状态的KafkaController,相当于集群只有一个master主机。当Leader状态的KafkaController出现异常时,其余的Standby状态下的KafkaController会通过Zookeeper选举出又一个Leader状态的KafkaController。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。