二、集群和中央控制器

集群和中央控制器

一个独立的Kafka服务器被称为broker。broker用来接收来自生产者的消息,为消息设置偏移量,并把消息保存到磁盘。换句话说,多个kafka实例组成kafka集群,每个实例(server)被称为broker。

broker中央控制器:Kafka集群中多个broker,在Kafka启动时只有一个会被选举为broker中央控制器(controller leader)。

中央控制的主要工作为:

  • 管理整个集群中的分区

  • 监控副本的状态

这些工作如:

  • leader副本故障,由中央控制器负责为该partition重新选举新的leader 副本

  • 当检测到同步列表发生变化,有中央控制器通知集群中所有broker更新其元数据缓存信息

  • 当增加某个topic分区的时候也会由中央控制器管理分区的重新分配工作 

broker中央控制器的选举过程:

 

当broker启动的时候,都会创建KafkaController对象,但是集群中只能有一个leader对外提供服务,这些每个节点上的KafkaController会在指定的zookeeper路径下创建临时节点,只有第一个成功创建的节点的KafkaController才可以成为leader,其余的都是follower。当leader故障后,所有的follower会收到通知,再次竞争在该路径下创建节点从而选举新的leader。

主题

主题就是数据主题,是数据记录发布的地方,可以用来区分业务系统。Kafka中的Topics总是多订阅者模式,一个topic可以拥有一个或者多个消费者来订阅它的数据。

分区

对于每一个topic,Kafka集群都会有一个或者多个分区。分区角色有分为Leader分区和Follower分区。每个分区都是有序且顺序不可变的记录集,并且不断地追加到log文件中。

为什么设计分区?

  • 为了并发读写,加快读写速度;通过这种优化,可以极大的提高并发响应

  • 运用多分区的存储,利于数据的均衡;

  • 加快数据的康复速率。如:一旦某台机器挂了,全部集群只需要康复一部分数据,可加快故障康复的时间。

猜你喜欢

转载自www.cnblogs.com/w-ting/p/12912753.html