- 在工业实践中由于zk便捷的使用方式、卓越的运行性能以及良好的稳定性,已经被广泛的应用在越来越多的大型分布式系统中,用来解决诸如配置管理、分布式通知与协调、集群管理和master选举等一些列分布式问题。
1、hadoop
- Hadoop核心是HDFS和MapReduce(YARN),分别用于海量数据的存储和计算。
- 在hadoop中,zk主要用于实现HA,这部分逻辑主要集中在Hadoop Common的HA模块中,HDFS的NameNode与YARN的ResourceManager都是基于HA模块来实现自己的HA功能的。同时,在YARN中又特别提供了zk来存储应用的运行状态。
(1)使用zk进行master选主实现ResourceManager高可用
- 为了解决ResourceManager单点问题,YARN设计了一套Active/Standy模式的HA架构。运行期间,会有多个ResourceManager并存,并且只有一个ResourceManager处于Active状态,另外的则处于Standy状态,上Active节点无法工作(机器挂掉或者重启时候)其余处于Standy状态的节点则通过竞争选举产生新的Active节点
(1)创建锁节点
(2)注册watcher监听
(3)主备切换
(2)使用zk存储ResourceManager状态
- 用zk保存状态,实现了分布式数据的一致性(前提是数据量不大)
2、HBase
- HBase针对数据写入具有强一致性的特性,甚至包括索引列也都要实现强一致性。在HBase中使用zk来完成对整个系统的分布式协调工作。zk是串联起HBase集群和client的关键所在。
3、Kafka
- 在Kafka中使用zk来作为服务的注册中心(发布订阅)和负载均衡。
4、Dubbo
- dubbo中使用zk作为注册中心,用于服务的注册和订阅
网友评论