《阿里云产品四月刊》—得物 ZooKeeper SLA 也可以 99.99%丨最佳实践(13)https://developer.aliyun.com/article/1554128
总结
通 过 之 前 的 基 准 测 试 、 性 能 压 测 以 及 灰 度 测 试 , 发 现 了 ZooKeeper 的WatchManagerOptimized。这项优化不仅节省了内存,还通过锁的优化显著提高了节点之间的选举和数据同步等指标,从而增强了 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。