建设移动网站,wordpress添加电台,青岛网站推广哪家效果好,易居系统登录文章收录在网站#xff1a;http://hardyfish.top/
文章收录在网站#xff1a;http://hardyfish.top/
文章收录在网站#xff1a;http://hardyfish.top/
文章收录在网站#xff1a;http://hardyfish.top/ 选举机制
控制器#xff08;Broker#xff09;选举 控制器就是…文章收录在网站http://hardyfish.top/
文章收录在网站http://hardyfish.top/
文章收录在网站http://hardyfish.top/
文章收录在网站http://hardyfish.top/ 选举机制
控制器Broker选举 控制器就是一个Borker。 在Kafka集群中有多个Broker节点但是它们之间需要选举出一个Leader其他的Broker充当Follower角色。 集群中第一个启动的Broker会通过在Zookeeper中创建临时节点/controller来让自己成为控制器。 其他Broker启动时也会在Zookeeper中创建临时节点但是发现节点已经存在所以它们会收到一个异常意识到控制器已经存在那么就会在Zookeeper中创建Watch对象便于它们收到控制器变更的通知。 优先副本选举 如果一个分区的Leader副本不可用就意味着整个分区不可用此时需要从Follower副本中选举出新的Leader副本提供服务。 优先副本 指一个分区所在的AR集合的第一个副本。 比如分区1它的AR集合是[2,0,1]表示分区1的优先副本就是在Broker2上。 理想情况下优先副本应该就是Leader副本。 对分区Leader副本进行选举的时候尽可能让优先副本成为Leader副本。 控制器
控制器主要作用是在 ZooKeeper 的帮助下管理和协调整个 Kafka 集群。 集群中任意一台 Broker 都能充当控制器的角色但是在运行过程中只能有一个 Broker 成为控制器。 Broker 在启动时会尝试去 ZooKeeper 中创建 /controller 节点。 第一个成功创建 /controller 节点的 Broker 会被指定为控制器。 控制器的作用 1.主题管理创建、删除、增加分区 2.分区重分配 3.Preferred 领导者选举 4.集群成员管理新增 Broker、Broker 主动关闭、Broker 宕机 自动检测新增 Broker、Broker 主动关闭及被动宕机。 比如控制器组件会利用Watch 机制检查 ZooKeeper 的 /brokers/ids 节点下的子节点数量变更。 目前当有新 Broker 启动后它会在 /brokers 下创建专属的 znode 节点。 一旦创建完毕ZooKeeper 会通过 Watch 机制将消息通知推送给控制器。 5.数据服务 向其他 Broker 提供数据服务。控制器上保存了最全的集群元数据信息其他所有 Broker 会定期接收控制器发来的元数据更新请求从而更新其内存中的缓存数据。 控制器故障转移Failover 当运行中的控制器突然宕机或意外终止时Kafka 能够快速地感知到并立即启用备用控制器来代替之前失败的控制器。 该过程是自动完成的。 幂等性
在 0.11.0.0 版本支持增加了对幂等的支持。幂等是针对生产者角度的特性。幂等可以保证上生产者发送的消息不会丢失而且不会重复。
开启幂等性配置
只需要把 Producer 的配置 enable.idempotence 设置为 true 即可
props.put(“enable.idempotence”, ture)
//或者
props.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG true)底层具体实现原理就是用空间换时间的优化思路即在broker端多存一些字段来标识数据的唯一性。
当Producer发送了具有相同字段值的消息后broker会进行匹配去重丢弃重复的数据。 他只能保证单分区上的幂等性即一个幂等性Producer只能够保证某个topic的一个分区上不出现重复消息无法实现多分区的幂等。此外如果Producer重启也会导致幂等重置。