博客 / 詳情

返回

What's new in Pika v3.5.0

時隔兩年,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

若您有任何疑問,誠摯歡迎您掃描微信二維碼,加入我們的交流羣,與一眾志同道合的成員展開深入的討論,我們熱切期待與您分享見解、交流心得,為共同的技術探索和創新之旅添磚加瓦。在這個羣體中,我們將以卓越的智慧和互動的合作精神,構建出一個相互學習、不斷進步的技術共同體。

pika-wechat-cn.png

user avatar xingfudemianbao 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.