#作者:朱雷
文章目錄
- 1 概述
- 1.1內存數據結構存儲核心特性
- 1.2主流內存數據結構存儲設計與適用場景
- 1.3目前主流內存數據結構存儲對比
- 2 Valkey 說明
- 2.1 哨兵架構設計
- 2.2 集群架構設計
- 2.3 valkey 使用企業和業內生態?
- 3 評估指標
- 4 評估結果
1 概述
內存數據結構存儲?是指將數據以特定的邏輯和物理形式直接組織在計算機主內存(RAM)中,以支持高效的動態操作(如增刪改查)和實時處理。其核心目標是利用內存的高速讀寫能力,結合合適的數據結構,滿足對性能要求嚴苛的場景需求。
1.1內存數據結構存儲核心特性
1.? 超低延遲?
- 內存訪問速度?:RAM的訪問延遲在納秒級(約50-100ns),而磁盤I/O延遲在毫秒級(約10ms),兩者相差10萬倍。
- 適用場景?:高頻交易系統、實時推薦引擎、緩存層(如Redis、Memcached)。
2.? 動態操作效率? - 隨機訪問與原地修改?:內存數據結構支持直接通過指針或偏移量訪問元素,無需磁盤尋道或塊讀取。
- 對比磁盤存儲?:如B樹在磁盤上高效,但內存中哈希表或跳表的查找效率更高(O(1) vs O(log n))。
3.? 靈活性與可擴展性? - 動態內存分配?:支持運行時按需擴展(如鏈表、動態數組),而磁盤存儲需預分配塊或處理碎片化。
- 復雜邏輯結構?:內存中可高效實現圖、樹等復雜結構,而磁盤存儲需額外設計索引或壓縮策略。
1.2主流內存數據結構存儲設計與適用場景
1.3目前主流內存數據結構存儲對比
2 Valkey 說明
Valkey 是一個開源(BSD-3 許可)的內存數據結構存儲,可用作數據庫、緩存、消息代理和流引擎。Valkey 提供多種數據結構,例如 字符串、哈希、列表、集合、支持范圍查詢的有序集合、位圖、超級日志、地理空間索引和流。Valkey 內置復制、Lua 腳本、LRU 驅逐、事務和不同級別的磁盤持久化功能,并通過Valkey Sentinel提供高可用性,并通過Valkey Cluster實現自動分區。
為了實現最佳性能,Valkey 使用內存數據集。Valkey 可以通過定期將數據集轉儲到磁盤或將每個命令附加到基于磁盤的日志來持久化數據。如果您只需要功能豐富的聯網內存緩存,也可以禁用持久化功能。Valkey 支持異步復制,具有快速無阻塞同步和網絡分裂時自動重新連接以及部分重新同步的功能。可以在大多數編程語言中使用 Valkey。
該項目是在過渡到新的可用源許可證之前從開源 Redis 項目fork而來的,源于Redis 7.2.4 分支,由Redis原核心開發者組建,專注于兼容性優化和云原生適配?。采用 ?BSD-3? 協議,允許自由使用、修改和分發,并由Linux基金會管理,社區貢獻者包括 AWS、阿里云、谷歌等頭部企業,治理模式開放透明?。
Valkey是Redis 許可證協議問題或閉源后的直接替代品,由Redis 的原社區開發者開發和維護,完全兼容 開源版本Redis 協議與架構設計,使用方式與Redis類似,用戶可以像使用Redis一樣使用Valkey?。自項目啟動以來,Valkey已經在業界被廣泛使用,并且得到了亞馬遜云科技的積極支持?。
2.1 哨兵架構設計
Valkey Sentinel 的主要功能包括:
1.? 監控 Valkey 實例狀態?:Valkey Sentinel 負責監控 Valkey 主從節點的狀態,通過定期檢查確保節點的可用性,檢測節點的心跳、配置變化等情況。
2.? 自動故障檢測與通知?:當 Valkey Sentinel 發現某個節點不可用時,會立即通知其他 Sentinel 和客戶端,觸發故障轉移流程。
3.? 自動故障轉移?:在主節點不可用時,Valkey Sentinel 負責選擇一個合適的
從節點升級為主節點,并通知其他節點和客戶端更新配置,實現自動的故障轉移。
4.? 配置提供?:Valkey Sentinel 為客戶端提供關于當前 Valkey 集群的信息,包括主從關系、故障節點等,客戶端可以通過 Sentinel 獲取集群配置以便進行連接。
5.? 通知機制?:Valkey Sentinel 通過發布訂閱模式實現對節點狀態變化的通知,使其他節點和客戶端能夠及時了解集群的變化。
2.2 集群架構設計
Valkey Cluster 架構設計是圍繞高性能、高可用性和可擴展性構建的,其核心思想源于 Redis Cluster,但在實現細節和優化方向上進行了創新,以適應現代分布式系統的需求。
以下是 Valkey Cluster 架構設計的關鍵點和分析:
- 分布式架構與數據分片?
- 數據分片(Sharding)?:
Valkey Cluster 將數據分散到多個節點上,每個節點負責一部分數據(稱為“槽位”或“slot”)。默認情況下,數據被分為 16384 個槽位,每個槽位可以映射到集群中的任意節點。這種設計使得數據可以水平擴展,支持大規模數據存儲。 - 節點角色?:
集群中的節點分為兩類:- 主節點(Master)?:負責處理讀寫請求,并維護槽位的數據。
- 從節點(Replica)?:作為主節點的副本,提供高可用性和讀擴展能力。當主節點故障時,從節點可以自動提升為主節點。
- 一致性哈希?:
Valkey Cluster 使用一致性哈希算法來分配槽位,確保數據均勻分布,并在節點增減時最小化數據遷移。
- 高可用性與故障轉移?
- 故障檢測與自動恢復?:
Valkey Cluster 通過節點間的 Gossip 協議定期交換狀態信息,檢測節點是否存活。如果主節點故障,集群會自動將從節點提升為主節點,并重新分配槽位。 - 多副本與數據持久化?:
每個槽位的數據在集群中可以有多個副本(主從復制),確保數據的高可用性。同時,Valkey 支持 RDB 和 AOF 兩種持久化方式,防止數據丟失。 - 手動故障轉移?:
除了自動故障轉移,Valkey 還支持手動故障轉移(如 CLUSTER FAILOVER 命令),允許管理員在維護時主動切換主節點。
- 集群通信與協議?
- Gossip 協議?:
Valkey Cluster 使用 Gossip 協議進行節點間的通信,傳播集群狀態信息(如節點上線、下線、槽位分配等)。這種協議具有去中心化、容錯性強的特點。 - MOVED 重定向?:
當客戶端請求的槽位不在當前節點時,節點會返回 MOVED 錯誤,并告知客戶端正確的節點地址。客戶端需要重新路由請求到正確的節點。 - ASK 重定向?:
在槽位遷移過程中,如果客戶端請求的槽位正在遷移中,節點會返回 ASK 錯誤,并告知客戶端臨時目標節點。客戶端需要先發送 ASKING 命令,再發送實際請求。
- 可擴展性與性能優化?
- 水平擴展?:
Valkey Cluster 支持動態添加或刪除節點,集群會自動重新分配槽位,實現無縫擴展。 - 讀寫分離?:
客戶端可以配置只從從節點讀取數據(READONLY 命令),減輕主節點的壓力,提高讀性能。 - Pipeline 與異步操作?:
Valkey 支持 Pipeline 操作,允許客戶端批量發送命令,減少網絡往返時間。此外,異步操作(如異步復制)可以進一步提高性能。 - 內存優化?:
Valkey 在內存管理上進行了優化,支持多種數據結構(如字符串、哈希、列表、集合、有序集合等),并提供了內存淘汰策略(如 LRU、LFU)來管理內存。
- 監控與管理?
- 集群狀態監控?:
Valkey 提供了 CLUSTER INFO、CLUSTER NODES 等命令,允許管理員查看集群狀態、節點信息、槽位分配等。 - 配置管理?:
管理員可以通過 CLUSTER MEET、CLUSTER ADDSLOTS 等命令動態管理集群配置。 - 慢查詢日志?:
Valkey 支持慢查詢日志,幫助管理員識別性能瓶頸。
- 與 Redis Cluster 的區別?
- 性能優化?:
Valkey 在 Redis Cluster 的基礎上進行了性能優化,例如改進了網絡通信協議、減少了重定向開銷等。 - 功能增強?:
Valkey 可能增加了一些新功能(如更靈活的槽位分配策略、更高效的故障轉移機制等),具體取決于其版本和實現。 - 生態兼容性?:
Valkey 通常保持與 Redis Cluster 的兼容性,使得現有的 Redis 客戶端和工具可以無縫遷移到 Valkey。
2.3 valkey 使用企業和業內生態?
2.3.1 Valkey 的企業應用現狀?
1.? 云服務廠商的采用?
- AWS?:將Valkey集成至ElastiCache服務,推出Valkey 7.2版本,提供20%-33%的成本節約,并推出Valkey Glide客戶端,支持多語言(Java、Python等)及智能拓撲感知,適配微服務、實時消息等場景。
- 阿里云?:作為Valkey社區核心維護者,將內部Redis優化成果(如集群無感擴縮容、主從無感HA)貢獻至Valkey,并計劃引入TairHash、TairString等增強型數據結構。
- 華為云?:通過參與Valkey社區建設,推動Sentinel組件優化及邏輯多租引擎方案,幫助企業降低Redis使用門檻。
2.? 操作系統與發行版的集成? - Arch Linux?:2025年4月宣布將Valkey作為默認內存型數據庫,取代Redis,成為首個在核心發行版中完成遷移的主流系統。
- 其他Linux發行版?:Valkey的BSD-3協議兼容性及Redis命令兼容性,使其成為Red Hat、Ubuntu等發行版考慮替換Redis的候選方案。
3.? 企業級應用場景? - 緩存與會話存儲?:Valkey的毫秒級延遲和高吞吐量,使其成為電商、社交平臺等場景的首選。
- 實時消息隊列?:通過Pub/Sub模式及RDMA技術,Valkey在金融交易、IoT數據流等場景中替代Kafka或RabbitMQ。
- 分布式鎖與任務調度?:利用SETNX、Lua腳本等特性,Valkey在微服務架構中實現跨節點資源協調。
2.3.2 Valkey 的業內生態?
1.? 開源社區與基金會支持? - Linux基金會托管?:Valkey由社區驅動,避免Redis因商業利益導致的許可證變更風險,吸引Redis核心貢獻者加入。
- 活躍的開發者生態?:GitHub上Valkey已獲超2萬Star,社區貢獻者涵蓋AWS、阿里云、谷歌等企業,形成技術迭代閉環。
2.? 技術擴展與插件生態? - Valkey Over RDMA?:通過RDMA技術優化網絡通信,降低集群節點間延遲,適用于高頻交易、AI模型推理等場景。
- 可擴展插件系統?:支持自定義數據結構(如RedisJSON的替代方案)及訪問模式,滿足特定行業需求。
3.? 商業解決方案與合作伙伴? - 云原生托管服務?:AWS ElastiCache for Valkey、阿里云Tair(基于Valkey)等,提供自動化運維、監控告警等企業級功能。
- 硬件協同優化?:與AWS Graviton4等ARM架構芯片深度適配,通過IO多線程技術提升性能,降低TCO。
4.? 行業聯盟與標準制定? - 跨云兼容性?:Valkey Glide客戶端通過“大多數規則算法”實現集群拓撲動態感知,確保混合云環境下的高可用性。
- 安全與合規?:支持RDB+復制backlog雙通道持久化,滿足金融、醫療等行業的強一致性需求。
3 評估指標
4 評估結果
Valkey作為Redis社區分叉后的開源項目,憑借其開源協議優勢和持續技術創新,已在AWS、阿里云、華為云等頭部云廠商及Arch Linux等主流發行版中快速落地,形成了覆蓋云原生、數據庫、分布式系統等領域的生態格局,展現出成為新一代高性能鍵值存儲標準的潛力。可以作為Redis存在協議風險或閉源之后的替代品