php网站开发费用,局域网建设直播网站,wordpress域名根管,保定酒店网站制作文章目录 一、Kafka的Zookeeper元数据梳理 一、Kafka的Zookeeper元数据梳理
1、zookeeper整体数据 Kafka将状态信息保存在Zookeeper中#xff0c;这些状态信息记录了每个Kafka的Broker服务与另外的Broker服务 有什么不同。通过这些差异化的功能#xff0c;共同体现出集群化的… 文章目录 一、Kafka的Zookeeper元数据梳理 一、Kafka的Zookeeper元数据梳理
1、zookeeper整体数据 Kafka将状态信息保存在Zookeeper中这些状态信息记录了每个Kafka的Broker服务与另外的Broker服务 有什么不同。通过这些差异化的功能共同体现出集群化的业务能力。这些数据需要在集群中各个Broker 之间达成共识因此需要存储在一个所有集群都能共同访问的第三方存储中。 2、Controller Broker选举机制 在Kafka集群进行工作之前需要选举出一个Broker来担任Controller角色负责整体管理集群内的分区和 副本状态。选举Controller的过程就是通过抢占Zookeeper的/controller节点来实现的。 3、Leader Partition选举机制 在Kafka中一个Topic下的所有消息是分开存储在不同的Partition中的。在使用kafka-topics.sh脚本创 建Topic时可以通过–partitions 参数指定Topic下包含多少个Partition还可以通过–replication-factors参 数指定每个Partition有几个备份。而在一个Partition的众多备份中需要选举出一个Leader Partition负责 对接所有的客户端请求并将消息优先保存然后再通知其他Follower Partition来同步消息。 4、Leader Partition自动平衡机制 在一组Partiton中Leader Partition通常是比较繁忙的节点因为他要负责与客户端的数据交互以及向 Follower同步数据。默认情况下Kafka会尽量将Leader Partition分配到不同的Broker节点上用以保证 整个集群的性能压力能够比较平均。 5、Partition故障恢复机制 Kafka设计时要面对的就是各种不稳定的网络以及服务环境。如果Broker的服务不稳定随时崩溃Kafka 集群要怎么保证数据安全呢 当一组Partition中选举出了一个Leader节点后这个Leader节点就会优先写入并保存Producer传递过来 的消息然后再同步给其他Follower。当Leader Partition所在的Broker服务发生宕机时Kafka就会触发 Leader Partition的重新选举。但是在选举过程中原来Partition上的数据是如何处理的呢 Kafka为了保证消息能够在多个Parititon中保持数据同步内部记录了两个关键的数据 LEO(Log End Offset): 每个Partition的最后一个Offset 这个参数比较好理解每个Partition都会记录自己保存的消息偏移量。leader partition收到并记录了生产 者发送的一条消息就将LEO加1。而接下来follower partition需要从leader partition同步消息每同步 到一个消息自己的LEO就加1。通过LEO值就知道各个follower partition与leader partition之间的消息 差距。 HW(High Watermark): 一组Partiton中最小的LEO。 follower partition每次往leader partition同步消息时都会同步自己的LEO给leader partition。这样 leader partition就可以计算出这个HW值并最终会同步给各个follower partition。leader partition认为这 个HW值以前的消息都是在所有follower partition之间完成了同步的是安全的。这些安全的消息就可以 被消费者拉取过去了。而HW值之后的消息就是不安全的是可能丢失的。这些消息如果被消费者拉取过 去消费了就有可能造成数据不一致。