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
Pika 磁盘IO 限速参数支持 OnlyRead、OnlyWrite、ReadAndWrite,默认支持OnlyWrite
自 3.5.0 版本开始,PikiwiDB(Pika) 服务可以通过调整 rate-limit 参数实现写限速,防止在网卡质量不高的情况下磁盘 IO 过重导致服务不可用,或者 binlog 阻塞的情况发生。360内部 Pika 线上大规模集群运维的经验,在 PikiwiDB(Pika) 实例的网卡较差情况下,也需要对读实例进行限速,本次修改支持读、写限速,默认是写限速,调整 config 配置中的 rate-limiter-mode 可以设置为读限速,或者同时读写限速。
关键PR:
https://github.com/OpenAtomFoundation/pika/pull/2599
2 改进列表
slotmigrate 添加 go test。
https://github.com/OpenAtomFoundation/pika/pull/2576
INFO 命令耗时优化,降低查磁盘频率,避免因为数据采集调用 info 命令时查磁盘太过频繁导致服务性能下降。
https://github.com/OpenAtomFoundation/pika/pull/2554
对五种基本数据类型命令增加 Redis tcl 测试。
https://github.com/OpenAtomFoundation/pika/pull/2527
3 Bug 修复
修复使用 Pika Exporter 时可能会出现 slots 分配不均衡的问题。
https://github.com/OpenAtomFoundation/pika/pull/2651
修复 Codis dashboard 不能正确更新 master 实例状态的问题。
https://github.com/OpenAtomFoundation/pika/pull/2650
修复 Redis 事务 binlog 解析失败导致的主从同步异常问题。
https://github.com/OpenAtomFoundation/pika/pull/2642
修复 Pika Expoter 启动时不带参数导致启动失败问题。
https://github.com/OpenAtomFoundation/pika/pull/2640
修复使用 Pika Operater 拉起集群 Codis-proxy panic 的问题。
https://github.com/OpenAtomFoundation/pika/pull/2633
修复 CI 编译出的二进制进行自动化测试时 cp 命令失败问题。
https://github.com/OpenAtomFoundation/pika/pull/2614
修复变量未初始化导致 cache 启动失败的问题。
https://github.com/OpenAtomFoundation/pika/pull/2613
修复 userpass 和 userblacklist 动态修改参数功能异常问题。
https://github.com/OpenAtomFoundation/pika/pull/2600
修复 scard sscan 结果不一致的问题。
https://github.com/OpenAtomFoundation/pika/pull/2596
修复当 max-rsync-parallel-num 大于4,slave 会在主从复制时 coredump 的问题。
https://github.com/OpenAtomFoundation/pika/pull/2595
调整不常用的线程池线程数,避免因为空跑导致性能损耗。
https://github.com/OpenAtomFoundation/pika/pull/2590
修复 Pika 事务边缘测试 case 不通过的问题。
https://github.com/OpenAtomFoundation/pika/pull/2586
将 cache-model 修改成 cache-mode。
https://github.com/OpenAtomFoundation/pika/pull/2585
修复使用 info keyspace 后,info all 死锁的问题。
https://github.com/OpenAtomFoundation/pika/pull/2584
修复因修改 zsetscorekey comparator impl 字典序比较熟顺序,导致 353 352极端场景不兼容的问题。
https://github.com/OpenAtomFoundation/pika/pull/2583
修复 compact 死锁的问题。
https://github.com/OpenAtomFoundation/pika/pull/2581
Slotmigrate 添加 go test。
https://github.com/OpenAtomFoundation/pika/pull/2576
更新 Pika Operater 使用的 pika 版本。
https://github.com/OpenAtomFoundation/pika/pull/2572
修复 config rewrite 后 blockcache 数值异常的问题。
https://github.com/OpenAtomFoundation/pika/pull/2561
修复 slotmigrate 动态修复后值错误的问题。
https://github.com/OpenAtomFoundation/pika/pull/2548
修复 spop 可能会出现主从数据不一致的问题。
https://github.com/OpenAtomFoundation/pika/pull/2541
修复 CloseFd(it->second[i]) 出现越界的问题。
https://github.com/OpenAtomFoundation/pika/pull/2539
修复 Flushall 和 FlushDB 死锁的隐患,并删除 FlushSubDB 接口。
https://github.com/OpenAtomFoundation/pika/pull/2533
增加参数控制是否清理 tcl 测试后产生的数据文件,防止废弃数据占据磁盘。
https://github.com/OpenAtomFoundation/pika/pull/2507
4 社区
PikiwiDB (Pika) 开源社区热烈欢迎您的参与和支持。如果您有任何问题、意见或建议,可通过以下渠道联系我们: