24 | Kafka的协调服务ZooKeeper:实现分布式系统的“瑞士军刀”
该思维导图由 AI 生成,仅供参考
ZooKeeper 的作用是什么?
- 深入了解
- 翻译
- 解释
- 总结
Kafka利用ZooKeeper构建集群,实现路由寻址和监控节点变化。ZooKeeper作为分布式协调服务框架,提供了分布式存储系统和临时节点,以及订阅ZNode状态变化的Watcher机制。Kafka在ZooKeeper中保存了Broker信息和主题、分区的状态,利用ZooKeeper实现了集群的快速选举、节点间通信、分布式锁等功能。Kafka的客户端并不直接连接ZooKeeper,而是通过Broker进行远程通信,利用ZooKeeper中的元数据实现路由寻址。Kafka的设计思路与RocketMQ的NameServer不同,但同样有效地解决了路由寻址的问题。此外,文章还提到了ZooKeeper的使用注意事项和Kafka开发者对于替代ZooKeeper的元数据服务的讨论。文章深入分析了Kafka客户端如何找到对应的Broker以及Broker中的元数据缓存与ZooKeeper中的元数据保持同步的过程。文章内容丰富,对于理解Kafka和ZooKeeper的关系以及技术细节有很好的帮助。
《消息队列高手课》,新⼈⾸单¥59
全部留言(19)
- 最新
- 精选
- 饭粒ZooKeeper 集群宕机后 Kafka 不可以依靠客户端自身的元数据缓存或者 Broker 的元数据缓存工作吗?
作者回复: 你可以试验一下,实际上是不行的,因为Kafka它很多地方都依赖zk的watch机制,不仅仅是元数据缓存的问题。
2019-11-1717 - jack老师,有两个问题:1、hadoop集群的高可用也是用zookeeper保证的,是不是也要拆分成小集群,2、那么提供服务的时候是否需要路由,将不同的业务分发到不同的集群上呢?
作者回复: Hadoop并不需要这么做,原因是,Hadoop它有它自己的NamingService,也就是namenode。ZK的作用只是协调namenode主从复制,namenode出现问题的时候,做主从切换使用。
2019-10-0110 - 老杨老师能否讲讲RocketMQ或Kafka是如何做高可用,落地过程中有哪些坑,已经最佳实践有哪些?
作者回复: 通过学习5、22、23、24这几节课,你应该已经掌握了RocketMQ和Kafka的高可用的实现原理。具体操作上,你需要去看一下他们的对应的配置文档,应该可以正确的配置出可靠的集群。 至于所谓的“坑儿”,这俩产品都已经非常成熟了,只要你正确的配置和使用,基本上不会遇到什么“坑儿”的。
2019-09-236 - 山头老师,每个分区节点下面是一个名为 state 的临时节点,节点中保存着分区当前的 leader 和所有的 ISR 的 BrokerID。,这里的leader是指的一个分区的master,isr指的是从?
作者回复: ISR是所有“保持同步的节点”,包括Leader
2019-09-265 - slam最后说到kafka严重依赖zk集群的可用性,有计划搞个服务替换,这里搞一套服务跟zk有什么区别?kafka的可用性不是也会依赖这个新服务吗?
作者回复: 他们肯定希望新的服务比zk更稳定
2019-09-2023 - 海神名老师,听说kafka对部署环境资源要求较低,请问具体体现在哪些方面呢?有没有具体的推荐配置表?
作者回复: 主流的消息队列都对服务器的配置没有太多要求,如果你的业务不是处理海量消息,配置很低的服务也都可以满足需求。
2019-09-1923 - 山头老师,你讲的很好,通过这节课懂了很多,能否说说一个消息发出去,我是如何路由到文件里去的呢?比如通过hash取模会对应到一个broke,又通过一个操作选择了一个队列,接着又怎么去选择写队列里的一个文件,思路模糊是没法造轮子的,请老师指正
作者回复: 我会考虑在后面的答疑中讲解这部分内容。
2019-09-262 - 山头老师,consumergroup和主题或者队列是什么关系,几对几的关系?还是consumergroup和分区有关系?是几对几
作者回复: 这个问题我在03和08两节课中有详细的描述,你可以复习一下。
2019-09-2622 - Pantheon既然客户端是和borker进行通信获取元数据信息,为啥客户端在连kafka的时候还要指定zk的地址
作者回复: 新版本的Kafka不需要指定ZK地址。
2019-09-22 - 书中迷梦个人感觉使用ZK不太适合做注册中心,因为作为注册中心首先要保证的是AP而不是CP,因为注册中心不是数据库2019-11-11831