What's new in PikiwiDB(Pika) v3.5.4
PikiwiDB (Pika) 社区非常荣幸地宣布,我们的最新 v3.5.4 正式生产可用版本现已发布。
v3.5.4 解决了历史遗留的 bug,对 PikiwiDB (Pika) 的一些遗留 bug 进行修复和优化,旨在打造出一个高稳定性的版本。本次的重点优化主要包括,PikiwiDB (Pika) 支持动态调整限速参数、增强 PikiwiDB (Pika) 的客观测性指标、 磁盘 IO 限速支持读限速及写限速等。
1 新特性
- Pika 支持动态调整全量同步限速参数 rsync-timeout-ms 和 throttle-bytes-per-second。
自 v3.5.0 版本开始,PikiwiDB (Pika) 服务摒弃了通过子进程内使用原来 rsync 工具进行主从全量同步的逻辑,在 PikiwiDB (Pika) 内部以线程方式【称作 rsync 线程】自行实现了新的全量同步逻辑,避免因为外部进程不可控引起的主从同步问题,根据 360 内部 Pika 线上大规模集群运维的经验,在 PikiwiDB (Pika) 主从进行全量同步的过程中,如果遇到某些不利的外部因素,如 网络波动,硬件故障(如网卡降速导致的主从网卡速率不匹配)等,可能引起 rsync 线程请求持续超时(PikiwiDB (Pika) 内置 rsync 模块用于全量同步阶段的文件传输),且超时重试所发出的包可能引发更大的网络信道负担。此时对于运维人员来说,如果能动态调整 rsync 请求的超时时间和 rsync 传输的速率上限,不仅意味着对全量同步阶段控制粒度的进一步细化,更大大降低了在该场景下的运维处置难度。
关键 PR:
https://github.com/OpenAtomFoundation/pika/pull/2633
- 将 info key space 1 的结果输出至 info all 并展示到监控界面中。
PikiwiDB (Pika) 是通过 Info 命令采集数据至 Pika-Exporter,展示到 Grafana 界面上的,目前界面上部分数据是没有展示的,如 keys 的数量,本次将执行 info keyspace 的结果展示到监控界面,用户可以通过这个指标来查看存储的量级等。
关键 PR:
https://github.com/OpenAtomFoundation/pika/pull/2603
3.Pika 磁盘 IO 限速参数支持 OnlyRead、OnlyWrite、ReadAndWrite,默认支持 OnlyWrite。
自 3.5.0 版本开始,PikiwiDB(Pika) 服务可以通过调整 rate-limit 参数实现写限速,防止在网卡质量不高的情况下磁盘 IO 过重导致服务不可用,或者 binlog 阻塞的情况发生。360 内部 Pika 线上大规模集群运维的经验,在 PikiwiDB (Pika) 实例的网卡较差情况下,也需要对读实例进行限速,本次修改支持读、写限速,默认是写限速,调整 config 配置中的 rate-limiter-mode 可以设置为读限速,或者同时读写限速。
关键 PR:
2 改进列表
-
slotmigrate 添加 go test。
-
INFO 命令耗时优化,降低查磁盘频率,避免因为数据采集调用 info 命令时查磁盘太过频繁导致服务性能下降。
-
对五种基本数据类型命令增加 Redis tcl 测试。
3 Bug 修复
-
修复使用 Pika Exporter 时可能会出现 slots 分配不均衡的问题。
-
修复 Codis dashboard 不能正确更新 master 实例状态的问题。
-
修复 Redis 事务 binlog 解析失败导致的主从同步异常问题。
-
修复 Pika Expoter 启动时不带参数导致启动失败问题。
-
修复使用 Pika Operater 拉起集群 Codis-proxy panic 的问题。
-
修复 CI 编译出的二进制进行自动化测试时 cp 命令失败问题。
-
修复变量未初始化导致 cache 启动失败的问题。
-
修复 userpass 和 userblacklist 动态修改参数功能异常问题。
-
修复 scard sscan 结果不一致的问题。
-
修复当 max-rsync-parallel-num 大于 4,slave 会在主从复制时 coredump 的问题。
-
调整不常用的线程池线程数,避免因为空跑导致性能损耗。
-
修复 Pika 事务边缘测试 case 不通过的问题。
-
将 cache-model 修改成 cache-mode。
-
修复使用 info keyspace 后,info all 死锁的问题。
-
修复因修改 zsetscorekey comparator impl 字典序比较熟顺序,导致 353 352 极端场景不兼容的问题。
-
修复 compact 死锁的问题。
-
Slotmigrate 添加 go test。
-
更新 Pika Operater 使用的 pika 版本。
-
修复 config rewrite 后 blockcache 数值异常的问题。
-
修复 slotmigrate 动态修复后值错误的问题。
-
修复 spop 可能会出现主从数据不一致的问题。
-
修复 CloseFd (it->second [i]) 出现越界的问题。
-
修复 Flushall 和 FlushDB 死锁的隐患,并删除 FlushSubDB 接口。
-
增加参数控制是否清理 tcl 测试后产生的数据文件,防止废弃数据占据磁盘。
4 社区
PikiwiDB (Pika) 开源社区热烈欢迎您的参与和支持。如果您有任何问题、意见或建议,可通过以下渠道联系我们:
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
微信扫一扫 关注该公众号