Kafka集群直接通信原理

概要

当前跟着课程配置好了zookeeper集群和Kafka集群,学习操作之前首先了解他俩集群是如何构建的,框架需要了解。

整体架构流程

这是Kafka和zookeeper交互的基础架构,可以看出主要有四部分:生产者Producer、消费者Consumer、Kafka集群服务器、zookeeper服务器。

生产者和消费者通过网络客户端与Kafka集群通信,生产者可以传输消息到Kafka集群上指定的主题,消费者可以从Kafka集群上指定的主题获取消息。

 Kafka集群里:每一台节点上都存在网络服务器和网络客户端,用来保持与其他节点/生产者/消费者之间进行通信,每台节点上都有zookeeper的客户端zkClient,用来与zookeeper服务器进行通信,Kafka集群里存在一个Controller节点(即leader),其他节点可以作为备选controller,当Controller节点宕机/无法连接时,其他备选节点可以通过zookeeper进行投票机制选出新的Controller节点。

每台Kafka节点支持对数据进行分区/副本存储,所以每台节点上存在管理数据/副本的manager,即replicationManager(副本管理器),LogManager(日志管理器 因为Kafka早起就是做日志信息存储的所以用这个名称管理数据),每台节点里存的分区数据只有在该节点上访问才允许读写操作,其他节点存储该节点的副本无法读写,即副本分为Leader和Follower,Leader就是存在本节点的数据,follower就是存在其他节点上的副本。

Kafka的broker节点与zookeeper通信步骤(三节点)

当我们首先启动zookeeper,还未启动Kafka集群时,此时zookeeper里保存Kafka集群信息的节点还没有数据,一些重要的节点:例如broker节点下的id子节点,controller节点里都没有数据。

接下来启动Kafka集群(三台服务器)那么将会有三个broker-id,他们回去争夺controller,对于Kafka选举controller的机制较为简单,即那个broker节点先把信息注册到controller节点里该节点就变成controller,那么对于最快启动的第一个broker节点来说,它会进行上述4个步骤:

1.在zookeeper/brokers/ids子节点下注册,此时该broker的id会写入/ids节点

2.此时该broker不知道zookeeper的/controller下是否已经有注册的controller节点,它会监听/controller

3.由于它是第一个broker,所以/controller里不存在注册的controller节点,它会在/controller里注册节点,此时它会成功注册 成为controller节点

4.它成功变成controller节点后,会监听zookeeper里/brokers/ids下的节点信息,后面来的broker对/brokers/ids的修改它会及时得到更新。

第一个broker与zookeeper通信后,第二个broker和zookeeper进行通信,同样的:

1.它先在/brokers/ids注册它自己的broker-id

2.由于它也是新加入的broker,它不知道controller里是否有已经注册的broker信息,它会对/controller进行监听

3.它监听发现已经有注册的controller(即broker 1),它接下来的行为 向/controller里注册自己的broker-id 会失败

4.broker 1 作为controller,它监听了/brokers/ids下的节点数据,由于broker 2在该节点路径下修改了数据(把自己的broker-id加入进去),broker 1会收到更新

5.broker 1收到更新后 会通知集群里其他非controller的broker,此时集群里只有两个broker,所以它会通知broker 2 ,将集群相关的元数据发送给broker 2

接下来集群里最后一个broker与zookeeper通信,还是同样的:

1.它首先在/brokers/ids里注册自己的broker-id信息

2.它一样会监听/controller看是否已经有broker注册成controller

3.它发现已经有controller后它向/controller里注册自己的broker-id会失败

4.broker 1会收到broker 3在/brokers/ids里更新的broker-id

5.broker 1会向集群里其他非controller的broker发送集群相关的元数据

以上就是在zookeeper启动环境下 首次启动Kafka集群时,Kafka服务器broker是如何与zookeeper进行通信 并写入相应信息到zookeeper节点下的原理。

当/controller节点下保存的broker-id信息丢失时会如何呢?

使用prettyzoo可以查看zookeeper具体节点的可视化工具,当Kafka集群完全启动后,能发现此时/brokers/ids里保存了三个id信息,并且/controller下也有broker-id:2 意味着该id对应的broker成为了controller,此时如果我们人为删去/controller,意味着broker 0 1 2三台服务器监听的/controller节点信息发生改变,从有注册信息-->没有注册信息,于是三台broker会开始争夺controller,然后决定出新的controller。

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《深入理解kafka(核心设计与实践原理) pdf》是一本介绍了Kafka技术原理、实现和部署的全面指南。它从多个角度阐述了Kafka的核心设计思想和实践原理,让读者可以更深入地理解Kafka的工作机制和应用场景。 本书首先介绍了Kafka的基本概念和架构,包括生产者、消费者、Broker、Topic和Partition等。随着阅读的深入,读者将学会如何使用Kafka进行数据传输和存储,并了解到Kafka如何支持高吞吐量、高可用性和高扩展性。 《深入理解kafka(核心设计与实践原理) pdf》还重点阐述了Kafka的持久化存储机制、消息传递方式和消息压缩技术。它详细介绍了Kafka中不同的数据结构和算法,以及如何优化Kafka的性能和可靠性。 此外,本书还附带了丰富的实例和案例分析,帮助读者更深入地了解Kafka的应用场景和实际应用。例如,它介绍了如何使用Kafka进行日志集中存储、实时流式处理、事件驱动等。 总之,《深入理解kafka(核心设计与实践原理) pdf》是一本深度剖析Kafka技术的书籍,不仅适合Kafka初学者,也适合已经有一定经验的开发者和架构师。它不仅告诉读者Kafka的基本原理,更重要的是让读者深入理解Kafka的应用场景,掌握Kafka的最佳实践。 ### 回答2: 《深入理解kafka(核心设计与实践原理) pdf》是一本对于Kafka消息队列系统进行深入探究的书籍。Kafka是开源的分布式消息系统,它具有高吞吐、可靠性和可扩展性等优点,因此已经被广泛应用于各类实时数据处理场景中。 该书从Kafka的基础概念讲起,包括Kafka的消息模型、生产者和消费者的架构以及Kafka集群的工作原理。它还详细介绍了Kafka的API,包括生产者API、消费者API和管理API等,并结合实际案例进行讲解,使读者能够更好地理解这些API的使用方法和场景。 书中还介绍了Kafka的重要性能指标,包括吞吐量、延迟和可靠性等指标,并提供了一些优化性能的实践方法,帮助读者更好地提高Kafka的应用性能。 此外,该书还深入研究了Kafka如何处理故障和容错,包括故障转移、数据备份和恢复等方面。它也讨论了一些高级主题,如Kafka的安全性、复制和分区等,并提供了一些实践案例和代码示例,以帮助读者更好地掌握这些概念和技术。 总而言之,《深入理解kafka(核心设计与实践原理) pdf》是一本权威的Kafka技术指南,它通过清晰地阐述Kafka的基本原理、性能指标、容错处理和高级主题等内容,全面介绍了Kafka的核心设计和实践原理,帮助读者更好地应用Kafka来处理实时数据和构建可靠的分布式系统。 ### 回答3: 《深入理解kafka(核心设计与实践原理) pdf》是kafka技术方面的一本经典书籍,该书着重介绍了kafka的核心设计和实践原理。kafka是一种高吞吐量分布式消息系统,它能够快速的处理流式数据,因此在实时处理大数据方面非常有用。 该书主要分为四部分,第一部分介绍了kafka的基础知识,包括kafka是什么,为什么要使用kafka等,还详细介绍了kafka的架构、核心组件和通信协议等。第二部分介绍了kafka的生产者和消费者模型,包括kafka的消息模型、消息处理流程等。第三部分深入讲解了kafka集群的管理和优化,包括kafka的监控、故障排查、性能调优等。最后一部分介绍了kafka的高级应用,包括kafka在大数据处理、实时数据分析等方面的应用。 该书通俗易懂,以实例为主,将复杂的技术原理浓缩到了1000多页的书籍里,给读者提供很好的阅读体验。在这本书中,读者可以深入理解kafka的设计思想,掌握kafka的核心原理和实践技巧,能够高效地应用kafka在实际项目中。无论你是kafka的初学者还是熟练使用者,本书都是一本非常优秀的参考书籍,有助于你更深入理解kafka的技术实现细节。如果你对kafka感兴趣,想要深入理解kafka的设计和工作原理,这本书将是你的不二之选。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值