本文介绍ZooKeeper的使用场景和MSE ZooKeeper的优势。

ZooKeeper的技术应用场景

场景一:大数据领域的高可用

Kafka、Hadoop、HBase和Flink等大数据系统默认把ZooKeeper当作分布式协调的组件,利用ZooKeeper做出高可用方案,从而提高集群可用性。大数据领域

场景二:自研系统的分布式协调

  • Master的选举:
    • 抢占主节点的方式:系统需要选举出1个Master来执行任务,如下图所示,Node1为Master,它会创建临时主节点,并将自己的信息写入Master,当Node1宕机,临时主节点被释放,此时Node2和Node3会争抢创建临时主节点。假如Node2创建了临时主节点,Node2变为Master,Node3发现主节点已存在,不再创建和获取主节点信息。抢占主节点
    • 最小节点方式:利用ZooKeeper的临时有序节点实现Master的选举。选Master的时候,每台Server往目录下面写一个临时有序节点,约定序号最小的节点作为Master,当主节点宕机之后,按照从下到大的顺序产生主节点。
  • 分布式锁:在分布式环境中,程序都分布在独立的节点中,分布式锁是控制分布式系统之间同步访问共享资源的一种方式,分布式锁主要有如下2种类型:
    • 排他锁(Exclusive Locks):又称为独占锁,利用ZooKeeper一个具体路径下只能创建一个节点的特性,即哪个节点优先创建成功,就意味着此节点抢到了锁;同时其他节点也要监听这个节点的变化,如果此节点删除了,其他节点可以被通知去抢锁。
    • 共享锁(Shared Locks):又称为读锁,多个进程可以同时获取这把锁进行读操作,但是如果某个进程要获取写操作权限,那么此进程必须没有读数据的操作,且此进程是第一个获取到写操作类型的锁。
  • 分布式队列:利用ZooKeeper的持久化有序节点,实现先入先出(First Input First Output,简称FIFO)的分布式队列,即先进入队列的请求操作先完成后,才会开始处理后进入队列的请求。
  • 配置中心

    利用ZooKeeper的存储配置,实现配置信息的集中式管理和数据的动态更新,保证数据一致性。

    配置中心

场景三:微服务领域的注册中心场景

在微服务场景,利用ZooKeeper的注册和订阅功能,ZooKeeper可用作Dubbo和Spring Cloud的注册中心。注册中心

MSE提供的ZooKeeper企业级服务

MSE提供的ZooKeeper企业级服务,分为开发版和专业版两种,前者适用于开发测试,后者在性能、可观测和高可用方面做了诸多提升,用于生产环境。更多关于开发版和专业版的功能特性,请参见版本特性

优势一:稳定高可用

  • 多AZ部署:平均部署可用区,提高集群容灾能力。例如,当一个5节点的ZooKeeper集群,部署在3个可用区的时候,它应该是2/2/1的分布,任意一个可用区出现故障,不影响ZooKeeper的整体可用性,同时阿里云AZ之间的延时低于3ms,可以做到故障的风险可控。
  • 高可用负载均衡:MSE ZooKeeper提供的主备高可用的SLB,自动对用户请求做负载均衡,会把请求压力分散到后端节点,并且会自动摘除后端故障节点,保证请求到正常的节点上。
  • 节点故障自愈:依托于K8s的Liveness能力,在节点出现故障时,会自动恢复故障节点,及时的保障服务的可持续性。
  • 数据安全:MSE ZooKeeper专业版提供了快照的备份能力,在集群出现非预期的情况时,能够快速重建恢复集群中的数据,保障数据的安全。
优势1

优势二:免运维且控制台功能丰富

自建ZooKeeper和MSE ZooKeeper专业版对比如下:

对比项 自建ZooKeeper MSE ZooKeeper专业版
系统搭建及运维成本 需自行购买各种资源搭建系统,运维升级需投入精力,人工成本高。 资源全托管免运维,内置SLB,自动绑定域名,故障节点自动摘除。
易用性 不支持可视化,需通过黑屏命令行手动操作。针对每个节点手动修改配置文件,需按序重启,容易出现配置不一致导致集群选主失败,效率低、风险高。 提供可视化的配置数据查询和更新功能。系统参数已调优,支持页面修改全局参数,自动重启生效。
高可用 需自行探索和开发高可用保障体系,对团队技术要求高。 多可用区部署,故障自动检测及恢复,SLA保障率高达99.95%。
扩缩容要全量重启。 支持扩缩容不重启。
性能 需要自行调试。 集成高性能JVM,做了深度优化,性能提升1倍。
监控告警 不支持,需自行搭建监控告警体系。 可对集群状态、连接数、TPS、ZNode、请求延时等指标进行监控,提供自定义告警规则及钉钉、电话、短信等告警渠道。
权限管理 不支持。 服务注册及配置管理支持RAM鉴权,RAM用户(即子账号)可管理实例访问权限。

优势三:可观测性增强

  • 提供监控大盘:MSE ZooKeeper专业版和阿里云Prometheus监控进行集成,提供20多个ZooKeeper常用的监控指标和4个核心资源监控指标,供您免费开启使用。
  • 支持核心告警规则:可以满足日常运维需求,在使用过程如果您发现核心告警规则无法满足需求,请提交工单
  • 开放Metrics标准指标:MSE ZooKeeper专业版,通过API的形式把ZooKeeper内置的70+Metrics指标开放。利用这些数据您可以自行的绘制监控大盘。

优势四:性能提升

  • 写入性能提升:ZooKeeper的写入性能和磁盘性能强相关。MSE ZooKeeper采用了阿里云ESSD高性能云盘,最大IOPS能够达到5W,最大吞吐量350M/S,数据的可靠性达99.9999999%(即9个9),整个写入TPS性能可提升约20%。
  • 基于Dragonwell进行构建,读取性能提升:MSE ZooKeeper集成阿里高性能JDK,开启协程优化能力,并对ZooKeeper的读写任务队列做出锁粒度的优化,在高并发处理的场景下,读取性能相比开源能够提升1倍左右。
  • 参数性能调优,降低GC时间:ZooKeeper是时延敏感型的应用,GC的时间和次数直接影响处理的吞吐量。MSE ZooKeeper专业版对JVM参数进行调优,堆的参数设置会根据不同的配置进行动态调节,同时提前做了资源碎片的回收,使GC时间降低80%,避免出现FullGC。CG前后时间对比