这篇文章主要聊一聊,Zookeeper 在业界构建系统时,一般承担什么样的功能,注册中心?分布式锁?亦或是 Name Serivce 等
什么是 Zookeeper
Zookeeper 是 Yahoo! 基于 Google Chubby 论文的思想,结合自己的实践经验开发而来,2011 年成为 Apache 顶级项目,本质上是一个高可用的分布式协调服务(highly reliable distributed coordination),应用可以基于它实现数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Leader 选举、分布式锁等一系列服务。
应用场景
那 Zookeeper 的常见应用场景有哪些呢?这里列举几个典型应用。
数据发布订阅
Zookeeper 采用推拉结合的方式,客户端可以在 Zookeeper 上对感兴趣的节点注册 Watcher,而服务端借助 Watcher 机制可以方便地向客户端推送数据变更的事件通知,然后客户端会发起请求拉取最新数据。这样的特性有诸多应用场景,例如动态开关、监控、配置信息等,它们具有数据量小,时效性要求高的特点。这里受限于 Zookeeper 本身的性能瓶颈,目前配置中心这种服务越来越倾向于去 zk 化,改用其他的实现方式。
注册中心
例如 Dubbo 支持以 Zookeeper 作为服务注册中心,这就是一种动态 DNS 解析服务,借此服务的提供者和调用者间可以解耦,批次的更改可以通过注册中心做到无感知变更,需要做的只是替换服务的节点地址,再通过 Zookeeper 将变更推送到服务的调用