kafka(5) ===》 broker

1.当一个broker加入集群的时候会把自己的id注册到zookeeper上,如果broker停机,会从zookeeper中删除临时节点,如果他以相同的id启动一个新的broker加入集群,那他会被分配相同的分区和副本

2.kafka使用zookeeper的临时节点来选举控制器,并在节点加入集群或退出集群时通知控制器,控制器负责咋节点加入或离开集群时进行分区首领选举,控制其使用epoch来避免脑裂(指两个控制器同时认为自己是主节点)

3.副本分为两种,首领副本和跟随者副本,跟随者副本又包括同步副本和不同步副本,生产者发送的每一个消息都会经过首领副本,再由首领副本复制给跟随者副本,跟随者副本每次请求三个消息,不处理完之前是不会请求第四个的,如果10s内都没有请求消息,就被认为是不同步的,如果首领副本挂掉之后,新的首领副本会在同步副本中产生,如果没有同步副本就会在非同步副本中产生(可配置)。

4.并不是所有保存在分区首领上的数据都可以被客户端查看到,大部分客户端只能查看已经同步到所有分区副本的消息(为了防止消息丢失)

kafka的可靠性:

复制:分区的副本,以及上面说的副本同步机制

复制系数:主题级别的配置参数是rplication.factor,复制系数不应该太多,太多了同步消息会比较慢,而分区太少了的话则安全性会降低。默认是3

不完全的首领选举:unclean.leader.election参数 默认是true 代表如果分区首领挂掉的时候所有副本分区都不是同步副本的情况下,允许选举出首领分区继续提供服务,但这样意味着有可能会造成数据的丢失

猜你喜欢

转载自blog.csdn.net/ma1476684479/article/details/85014720