时隔两年,Pika 社区正式公布经由社区 50 多人参加开发并在 360 生产环境验证可用的 v3.5.0
版本,新版本在晋升性能的同时,也反对了 Codis 集群部署,BlobDB KV 拆散,减少 Exporter 等新个性。
咱们将具体介绍该版本引入的重要新个性。
1 去除 Rsync
在 v3.5.0 版本之前,Pika 应用 Rsync 工具进行引擎中存量数据的同步,Pika 过程启动时创立 Rsync 子过程。这种同步形式在理论应用中呈现了一些问题,包含 Pika 过程 crash 后从新拉起无奈失常同步以及同步过程中 Rsync 过程无端退出等。在往年公布的 v3.5.0 版本中,咱们在全量同步计划方面进行了重要的改良,摒弃了以往应用的 Rsync,实现了全新的数据同步计划,反对了断点续传,动静调节传输限速等个性,以确保同步过程更加稳固、可控。这些改良不仅加强了同步的可靠性,还为用户提供了更好的应用体验。
- 去除 Rsync 过程,应用自研全量同步形式
- 实现断点续传,传输限速性能
- Pika 主从同步时,进行 master run\_id 的测验
2 兼容更多 Redis 命令
在 v3.5.0 版本中,咱们迈出了更大的一步,晋升了对 Redis 命令的兼容性,对 Redis 命令提供了更宽泛的反对。这个版本的改良使得 Pika 在与 Redis 生态系统的集成中体现更加杰出,为用户提供了更丰盛的性能和更广大的可能性。咱们对命令反对的扩大,为用户提供了更多的灵活性,以满足不同场景下的需要。
- 反对 UNLINK 命令
- 反对 INFO COMMANDSTATS 命令
- 反对 HELLO、SETNAME 命令
- 反对 BLPOP、BRPOP 命令
- 新增 Pika 原创 DISKRECOVERY 命令
3 RocksDB 版本升级和分级压缩
在 v3.5.0 版本中,咱们进行了一项重要的降级,将 RocksDB 引擎降级至 v8.1.1 版本,并实现了分级压缩性能的整合。这一降级不仅是技术的飞跃,也是咱们对系统性能和优化的继续关注的体现。通过这项降级,咱们为 Pika 减少了更高级别的数据管理能力,同时也让零碎更好地适应不同的压缩需要,为用户的数据存储和检索提供了更大的灵活性和效率。
- 降级 RocksDB 版本到 v8.1.1
- 实现 RocksDB 分级压缩
- 新增 RocksDB 缓存配置项 num-shard-bits 可能从配置文件中读取
4 反对 BlobDB
在 v3.5.0 版本中,咱们引入了引人瞩目的翻新 – 对 BlobDB 和 KV 存储层进行了拆散,为咱们的零碎注入了新的生机。这个版本的降级使得 Pika 在数据存储方面更加灵便和高效。咱们通过反对 BlobDB KV 拆散,提供了更优化的数据存储构造,为用户的数据管理和查问操作带来了更深层次的劣势。这一重要改良将在更多利用场景下展现出其弱小的后劲。
- 反对 BlobDB KV 拆散
5 基于 Codis 的集群模式
在 v3.5.0 版本中,咱们踊跃引入了 Codis 集群模式,此外,咱们不仅仅将 Codis 集群模式融入了零碎中,还为其提供了迁徙 slot 的命令反对,从而实现了更加智能化的集群治理。这一重大改革不仅扩大了 Pika 在大规模数据存储场景中的利用范畴,还进一步晋升了零碎的可扩展性和高可用性。通过引入 Codis 集群模式,咱们对用户的数据处理和治理提供了更优化的解决方案。
- 引入 Codis 到 Pika
- 引入 Codis 的 CI
- 反对 Codis 迁徙 slot 命令
- 新增是否在 reload 的 slotmigrate 状态
6 可观测性
在 v3.5.0 版本中,咱们引入了一个创新性的工具 –pika\_exporter,以晋升对 Pika 数据库的可观测性。这一工具的退出不仅是对咱们对系统监测能力的继续加强的反映。而在版本的后续更新中,咱们进一步空虚了指标,不断丰富了 Pika 的可观测性。为用户提供了更为全面和精准的数据洞察力。
- 新增 Pika 可观测零碎 pika\_exporter
- 新增网络 I/O 流量监控指标
- 新增命令统计耗时指标
- 新增 estimate\_pending\_compaction\_bytes 度量来剖析碎片率指标
- 新增 RocksDB 指标
7 容器化部署
在 v3.5.0 版本中,咱们引入了一个具备翻新意义的里程碑 –pika-operator mvp 版本,这一版本在技术上实现了一个重要指标:将 Pika 单实例服务迁徙到 Kubernetes(K8s)平台上的疾速部署。这不仅是对咱们继续关注行业倒退的体现,也是咱们一直晋升用户体验的谋求。通过 pika-operator,咱们为用户提供了更便捷的部署计划,将 Pika 的高性能数据库引擎与 Kubernetes 的灵活性相交融,从而为用户的应用环境带来更高效、更弹性的反对。
- 实现 Pika 单例服务在 K8s 上疾速部署
- 实现了在 MiniKube 环境中部署 Pika
- 给 pika-operator 增加 E2E 测试
8 跨平台编译
在 v3.5.0 版本中,Pika 呈现出一种全面性的蓬勃发展态势,得以在不同操作系统平台上展示其优越性。此版本的突破性之处在于,Pika 实现了对 MacOS、CentOS 和 Ubuntu 这些次要平台的残缺编译和应用反对。这个动作不仅仅体现了咱们对多样化技术环境的关注,也是为了最大水平地拓展用户根底,为宽泛的用户群体提供灵便、高效的数据库解决方案。这种跨平台兼容性的增强将 Pika 推向更广大的技术生态。
- 反对 MacOS 平台
9 多平台 CI、Go 集成测试、TCL 单元测试、PythonE2E 测试、CTest 单元测试
在 v3.5.0 版本中,咱们迈出了一个令人瞩目的步调,不仅在多个次要操作系统平台上实现了反对,还在测试畛域施行了全面降级。咱们为 Ubuntu、CentOS 和 MacOS 这三大平台搭建了继续集成(CI)环境,以确保零碎的完整性和稳定性。在测试方面,咱们引入了更为宽泛的笼罩,包含 Go 语言的集成测试、TCL 的单元测试以及 Python 的端到端(E2E)测试。通过这些测试策略的降级,咱们在确保零碎性能和可靠性方面迈出了更大的一步。
- 新增 CentOS 环境下的 CI
- 新增 MacOS 环境下的 CI
- 新增 E2E 测试框架
- 新增在 Github CI Workflow 中增加 CMake 编译环境
- 新增在 TCL 脚本中 populate 办法模仿 Redis debug populate 办法,用以填充测试数据
- 新增在 blackwidow 中增加 CMake 文件,增加对 blackwidow 的单元测试
- 移植 Redis 测试脚本
10 Others
若您有任何疑难,诚挚欢迎您扫描微信二维码,退出咱们的交换群,与一众气味相投的成员开展深刻的探讨,咱们热切期待与您分享见解、交流心得,为独特的技术摸索和翻新之旅添砖加瓦。在这个群体中,咱们将以卓越的智慧和互动的单干精力,构建出一个互相学习、不断进步的技术共同体。