ZooKeeper 常用的技术应用场景如下所述。
场景一:分布式协调
分布式锁 :在分布式环境中,程序都在独立的节点上,分布式锁是控制分布式系统之间同步访问共享资源的一种方式,分布式锁主要有如下2种类型:
- 独占锁:主要实现原理是利用ZooKeeper在一个具体路径下每个进程创建一个有序的临时节点,每个进程会判断自己的节点是否序号最小的节点,如果是则获得锁,如果不是则创建一个监听等待前一个序号小的临时节点释放锁。
- 共享锁:共享锁可以支持多个进程同时获取这把锁进行读操作,但是如果某个进程要获取写操作的权限,那么在写操作之前是没有读操作的数据,并且该进程是第一个获取到写操作类型锁的。
分布式队列 :队列功能可以利用ZooKeeper的有序节点,实现先进先出(First Input First Output,简称FIFO)的分布式队列,即先进入队列的先被消费,后加入队列的后被消费。在创建znode时开启sequence 和 ephemeral模式,则被创建的节点结尾是一个递增的值,且不会重复。
场景二:配置中心
运用ZooKeeper的存储模式,实现配置信息的集中管理和数据的动态更新,保证了配置数据的一致性和实时性。
场景三:微服务领域的注册中心场景
在微服务场景里,利用ZooKeeper的注册和监听功能。ZooKeeper可以用作Dubbo和Spring Cloud的注册中心。
MSE提供的ZooKeeper企业级服务
MSE提供的ZooKeeper企业级服务,分为单机版和集群版两种,更多关于单机版和集群版的功能特性,请参见版本特性。
优势一:稳定高可用
多AZ部署:平均部署可用区,提高集群容灾能力。例如,当一个5节点的ZooKeeper集群,部署在3个可用区的时候,它应该是2/2/1的分布,任意一个可用区出现故障,不影响ZooKeeper的整体可用性。
高可用负载均衡:MSE ZooKeeper自动对用户请求做负载均衡,会把请求压力均衡到后端的节点上去,并且能保障请求会到监控正常的节点上面去。
数据安全:MSE ZooKeeper提供了快照备份能力,在集群出现意外状况时候,能快速重建恢复集群的数据,保障数据的安全。
优势二:可观测性增强
提供监控中心:MSE ZooKeeper提供了多达20余项常用的监控指标,包括业务指标和系统资源指标等,供您免费开启使用。
支持核心告警规则:支持配置告警规则,一旦发生指标异常,及时进行告警,可以满足日常运维使用。
优势三:性能提升
写入性能提升:ZooKeeper的写入性能和磁盘性能是强相关。MSE ZooKeeper提供了自研的超高IO磁盘供您选择,整个写入TPS性能可提高约25%。
参数性能调优:MSE ZooKeeper对JVM参数进行了调优,堆的参数设置会根据不同的规格进行动态调整。
优势四:丰富的控制台功能
对比项 | MSE ZooKeeper | 自建ZooKeeper |
---|---|---|
系统搭建成本 | 资源全托管免运维,故障节点自动摘除。 | 自行购买各种资源搭建系统,运维升级需投入精力,人工成本高。 |
易用性 | 提供可视化的数据管理,支持页面修改全局参数,重启生效。 | 不支持可视化。 |
高可用 | 多AZ部署,故障自动检测以及数据及时备份成快照。 | 需自行开发高可用保障体系。 |
性能 | 集成超高IOS磁盘,提高ZooKeeper读写性能。 | 需要自行调试。 |
监控告警 | 对集群状态,znode数,连接数,请求平均延时等指标监控。 | 没有监控体系,需要自己搭建。 |