KeyDB重量發布6.3.0開源版,華為深度參與貢獻
KeyDB是目前Redis 分布式緩存生態鏈產品中唯一實現完全多線程的開源產品。自從今年4月Snapchat 收購EQAlpha之后(https://docs.keydb.dev/news/2022/05/12/keydb-joins-snap/ ),Snapchat及所屬的KeyDB團隊大力推進KeyDB 的開源社區的發展和建設,團隊開始全身投入KeyDB社區的推廣及影響力活動。5月12日 KeyDB 社區隆重發布了 6.3.0開源版本,將與華為加拿大研究院DCS團隊2021-2022年合作的成果,深度優化的企業版的能力貢獻給了開源社區。

合作優化的能力包括有完全多線程下進一步性能的提升,Async Rehash 的實現, Global lock& snapshot 優化算法的實現,Async命令,主備集群下的Fastsync的能力, 以及iStorage 接口實現與存儲的對接等功能。
在相同的硬件上,KeyDB可以實現比Redis5和Redis6 IO多線程條件下高得多的吞吐量。活動復制簡化了熱備盤故障切換,能夠輕松地在副本上分發寫入,并使用簡單的基于TCP的負載平衡/故障切換。KeyDB的更高的性能允許在更少的硬件上做更多的事情,從而降低了操作成本和復雜性。
下圖比較了幾個KeyDB最新版本和Redis設置,包括最新的Redis6 io-threads選項和TLS基準。在非TSL情況下比較最新的Redis版本性能有4-5倍的提升。在TSL安全加密情況下,性能更有超過9-10倍的提升。
KeyDB 團隊和Huawei DCS 云服務團隊在過去一年中在KeyDB社區中積極合作與配合,實現了KeyDB在原企業版基礎上的又一個飛躍。在性能,性價比和功能競爭力上有了新的突破。Huawei DCS 團隊將繼續參與KeyDB的社區合作,及持續投入參與該社區的核心發展工作中,力爭促進在KeyDB架構,及生態上的進一步的提升。
KeyDB 6.3.0 開源發布 Release Note(中文翻譯)
KeyDB 6.3.0版是第一個包含以前KeyDB企業功能的開源版本!此版本是多年來擺脫KeyDB全局鎖并實現跨核心更好擴展的工作的最極致產品。
Active Replication PSYNC
Active Replication PsyncKeyDB的功能在舊的版本中已經實現,但在連接到新對等體時始終需要完全同步。在此版本中,KeyDB支持部分同步,以實現快速群集愈合。此外,KeyDB能夠根據對等節點的知識更新其復制偏移量,這意味著從一個節點進行完全同步足以允許數據部分同步到網格中的其他節點。
此更改大大減少了將新節點添加到活動復制群集的時間。在我們的測試中,我們看到12節點網狀群集的時間從10分鐘以上縮短到1分半鐘。
異步命令
異步命令是可以在沒有全局鎖的情況下執行的命令。必須首先在配置文件中通過設置“enable-async-commands yes”啟用此功能。啟用異步命令時,一致性會略有修改,特別是來自其他客戶端的寫入可能需要配置的時間才能對其他客戶端可見。此時間使用max-snapshot-slip配置參數配置。
使用異步命令的排序規則如下:
寫入總是在客戶端之間完全有序執行寫入操作的客戶端始終立即可見寫入操作
對于大多數應用程序,對復制一致性模型的輕微修改將不可見。如果您的應用程序依賴于不同客戶端之間的排序,默認情況下禁用此功能。此外,還為那些確實依賴于客戶端之間的一致性但愿意插入圍欄以在正確時間斷言總排序的客戶端提供了一個名為“lfence”的新命令。
以下命令支持異步操作:
GET
MGET
隨著時間的增加,其他只讀命令將被添加。如果您特別感興趣的命令,請發布一個問題,以幫助我們確定您的用例的優先級。
異步重哈希
KeyDB依賴于自旋鎖來同步線程。在KeyDB的早期版本中,等待獲取鎖時消耗的CPU時間被浪費了。KeyDB現在能夠在這段時間內使用浪費的CPU時間執行重新哈希,以達到更有用的目的。在許多情況下,這幾乎可以完全隱藏重新哈希的開銷。啟用此功能不需要配置,默認情況下它運行。
過程中后臺保存
從歷史上看,Redis使用“fork”系統調用來創建一個執行后臺保存的新進程。這使得代碼更容易遵循,因為內核在后臺保存過程中處理內存寫時復制的艱巨任務。然而,這種方法的缺點是,無法準確估計所需的內存總量,包括后臺保存。
KeyDB現在使用新的“快照”系統在特定時間段創建數據庫的快照,并在進程中創建寫時復制新更改。因此,maxmemory設置現在是全局設置,并將包括用于后臺保存的內存。
為了向后兼容性,在后臺保存期間,maxmemory的語義會稍微修改。當后臺保存正在進行時,KeyDB將允許內存消耗超過maxmemory 20%。這是為了模擬后臺保存內存消耗不計入maxmemory設置的舊行為,同時允許輕松計算內存使用的總上限。
IStorage接口
此版本還不包括KeyDB基于RocksDB的閃存功能。但是,該版本包括KeyDB的IStorage接口,這是我們持久存儲功能的主干。通過為自定義存儲解決方案實施此接口,您將啟用所有KeyDB功能。
感謝我們的貢獻者:
感謝所有為KeyDB做出貢獻的人,包括錯誤報告、設計和測試:
Ben Schermel
Firaenix: Bug Report #393 - Crash in sorted sets with long names
Kerog: #401 Error after include *.confg
Gvsafronov: Fedora 35 Compile Failure
Talkabout: Always providing helpful and detailed bug reports, not limited to #378
Inakisoriamrf: #383 crash
Alebcay: #384 macOS build break
Server2245: #379 Install issue on RHEL7
Antiarchitect: #380 , and many others
Tchernomax: #352 missing support for systemd
Heng Kuang: Detailed bug reports and design suggestions
Kajaruban Surendran: Detailed performance analysis of async rehash and other features
Paul Chen: Your enthusiasm and willingness to help debug issues has been deeply appreciated.
特別感謝華為加拿大研究團隊詳細而深入的Bug報告、功能設計,驗證參與。
Thanks to the EQ Alpha Team that made this release possible: Malavan Sotheeswaran, Vivek Saini, Christian Legge, Peter Liang, Ben Schermel, John Sully
KeyDB 6.3.0 開源發布 Release Note 原文:https://github.com/Snapchat/KeyDB/releases/tag/v6.3.0
Redis 任務調度
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。