ZooKeeper的架构介绍如下:
1. 概述
ZooKeeper是一个开源的分布式协调服务,用于实现分布式系统中的数据管理、同步服务、集群管理等功能。
2. 功能架构
- 数据注册与管理:支持树形数据节点结构
- 集群管理:管理集群成员状态
- 同步服务:同步提供数据节点更改通知
- 配置维护:集中管理配置信息
- 分布式锁:提供分布式锁服务
- 服务注册发现:支持服务注册与发现
3. 技术架构
- 主从复制架构:一个Leader,多个Follower
- ZAB协议:在主从间达成数据一致
- Watch机制:实现对数据变更的发布订阅
4. 部署架构
- 集群模式部署:一般3-5节点
- 支持容错,当节点失败时自动选举新Leader
5. 数据架构
- 数据模型为树形结构,节点称为znode
- znode可以存储数据,也可以作为目录
6. 安全架构
- 支持SASL认证
- ACL进行权限控制
- 也可以将通信加密
ZooKeeper的优缺点和对标如下:
优点:
- 提供可靠的分布式协调服务
- 数据更新能够快速同步到各个节点
- 简单易用的树形数据模型和接口
- 高性能,可支持海量并发访问
- 可构建高可用服务,失败转移快速
- 提供原子性分布式锁和一次性操作
缺点:
- 大量节点连接会对单机造成性能压力
- 未设置ACL可能存在安全隐患
- 理解其一致性模型需要一定学习成本
- 不适合存储大规模数据
对标产品:
- Eureka: 更适合作为服务注册中心使用
- Consul: 支持多语言,但不如ZooKeeper成熟
- Doozerd: 类似产品,提供分布式数据管理服务
- Etcd: 提供可靠的分布式键值存储服务
- Kubernetes: ZooKeeper常用于K8s集群管理
ZooKeeper通过可靠的分布式数据一致性,可以实现诸多分布式场景和协调服务。