《阿里云产品四月刊》—得物 ZooKeeper SLA 也可以 99.99%丨最佳实践(3)

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代

本文来源于阿里云社区电子书《阿里云产品四月刊》


《阿里云产品四月刊》—得物 ZooKeeper SLA 也可以 99.99%丨最佳实践(2)https://developer.aliyun.com/article/1554139


性能压测

 

JMH 微基准测试

 

ZooKeeper 3.6.4  源码编译,  JMH micor  压测  WatchBench

image.png

 

  • pathCount:表示测试中使用的  ZNode  路径数目。

 

  • watchManagerClass:表示测试中使用的 WatchManager 实现类。

 

  • watcherCount:表示测试中使用的观察者(Watcher)数目。

 

  • Mode:表示测试的模式,这里是 avgt,表示平均运行时间。

 

  • Cnt:表示测试运行的次数。

 

  • Score:表示测试的得分,即平均运行时间。

 

  • Error:表示得分的误差范围。

 

  • Units:表示得分的单位,这里是毫秒/操作(ms/op)

 

ZNode    Watcher 100  万条订阅关系,默认版本使用  50MB,优化版只需要  0.2MB而且不会线性增加。

 

添加 Watch,优化版(0.406 ms/op)比默认版(2.669 ms/op)提升 6.5 倍。

大量触发 Watch ,优化版(17.833 ms/op)比默认版(84.455 ms/op)提升 5 倍。

 

性能压测

 

接下来在一台机器 (32C 60G) 搭建一套 3 节点 ZooKeeper 3.6.4 使用优化版与默认版进行容量压测对比。

 

场景一:20W znode 短路径

 

Znode 短路径: /demo/znode1

image.png

 

 

场景二:20W znode 长路径

 

Znode 长路径:

 

/sentinel-cluster/dev/xx-admin-interfaces/lock/_c_bb0832d5-67a5-48ab-8fe0

-040b9ddea-lock/12

image.png

 

Watch 内存占用跟 ZNode 的 Path 长度有关。

 

Watch    的数量在默认版是线性上涨,在优化版中表现非常好,这对内存占用优化来说改善非常明显。

 

灰度测试

 

基于前面的基准测试和容量测试,优化版在大量 Watch 场景内存优化明显,接下来开始对测试环境的 ZK 集群进行灰度升级测试观察。

 

第一套 ZooKeeper 集群 & 收益

 

 

image.png

 

默认版

image.png

 

优化版

 

 

image.png

 

image.png

 

效果收益:

 

  • election_time (选举耗时):降低 60%

 

  • fsync_time (事务同步耗时):降低 75%

 

  • 内存占用:降低 91%

 

第二套 ZooKeeper 集群 & 收益

image.png

 

 

image.png

 

image.png

 

 

 

效果收益:

 

  • 内存:变更前  JVM Attach  响应无法响应,采集数据失败。

 

  • election_time(选举耗时:降低 64%。

 

  • max_latency(读延迟:降低 53%。

 

  • proposal_latency(选举处理提案延迟):1400000 ms --> 43 ms

 

  • propagation_latency(数据的传播延迟):1400000 ms --> 43 ms

 

第三套 ZooKeeper 集群 & 收益

image.png

 

 

 

默认版

image.png

 

 

 

优化版

image.png

 

效果收益:

 

  • 内存:节省 89%

 

  • election_time(选举耗时:降低 42%

 

  • max_latency(读延迟:降低 95%

 

  • proposal_latency(选举处理提案延迟):679999 ms --> 0.3 ms

 

  • propagation_latency(数据的传播延迟):928000 ms--> 5 ms

 

 

总结

 

通 过 之 前 的 基 准 测 试 、 性 能 压 测 以 及 灰 度 测 试 , 发 现 了 ZooKeeperWatchManagerOptimized。这项优化不仅节省了内存,还通过锁的优化显著提高了节点之间的选举和数据同步等指标,从而增强了 ZooKeeper 的一致性。还与阿里 MSE 的同学进行了深度交流, 各自在极端场景模拟压测, 并达成了一致的看法:

 

WatchManagerOptimized 对 ZooKeeper  的稳定性提升显著。总体而言,这项优化使得 ZooKeeper 的 SLA 提升了一个数量级。

 

ZooKeeper 有许多配置选项,但大部分情况下不需要调整。为提升系统稳定性,建议进行以下配置优化:

 

  • dataDir(数据目录dataLogDir(事务日志目录分别挂载到不同的磁盘上,并使用高性能的块存储。

 

  • 对于 ZooKeeper 3.8 版本,建议使用 JDK 17 并启用 ZGC 垃圾回收器;而对于

3.5 和 3.6 版本,可使用 JDK 8 并启用 G1 垃圾回收器。针对这些版本,只需要简单配置 -Xms 和 -Xmx 即可。

 

  • SnapshotCount 参数默认值 100,000 调整为 500,000,这样可以在高频率ZNode 变动时显著降低磁盘压力。

 

  • 使用优化版的 Watch 管理器 WatchManagerOptimized

 

Ref: 参考一考二

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
2月前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态。
|
8天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 11 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
6天前
|
Cloud Native API 微服务
微服务引擎 MSE 及云原生 API 网关 2024 年 11 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 11 月产品动态。
|
27天前
|
Cloud Native API 微服务
微服务引擎 MSE 及云原生 API 网关 2024 年 10 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 10 月产品动态。
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 10 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
2月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 09 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
3月前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2024 年 8 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 8 月产品动态。
|
3月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 08 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
4月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 07 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
4月前
|
资源调度 Java Scala
实时计算 Flink版产品使用问题之如何实现ZooKeeper抖动导致任务失败时,能从最近的检查点重新启动任务
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。