Garnet:微軟官方基於.NET開源的高性能分佈式緩存存儲數據庫

前言

前不久Redis宣佈從 Redis 7.4 開始,將原先比較寬鬆的 BSD 源碼使用協議修改爲 RSALv2 和 SSPLv1 協議,該協議變化意味着Redis不再開源。今天給大家分享一款完全開源(MIT協議)、免費的Redis替代性項目產品:Garnet。

Garnet項目介紹

Garnet是一款由微軟研究院基於.NET開源的高性能、跨平臺的分佈式緩存存儲數據庫,該項目提供強大的性能(吞吐量和延遲)、可擴展性、存儲、恢復、集羣分片、密鑰遷移和複製功能。並且無需做任何修改可以與現有的 Redis 客戶端配合使用。

Garnet獨特優勢

協議兼容性: Garnet 採用流行的 RESP 線路協議作爲起點,這使得可以從當今大多數編程語言(例如C#中的 StackExchange.Redis)中可用的未經修改的 Redis 客戶端使用 Garnet。

性能優勢: 相比同類開源緩存存儲,Garnet在處理多客戶端連接和小批量請求時表現更優,提供更好的吞吐量和可擴展性,從而節省成本。

低延遲: 在Azure VM上展示了極低的客戶端延遲,通常低於300微秒,對於實際場景至關重要。

技術特點: 基於最新的.NET技術,具有跨平臺、可擴展和現代化的特點,易於開發和維護,並在Linux和Windows上實現了最先進的性能。

Garnet項目源代碼

Garnet性能優勢

我們預配兩個運行 Linux (Ubuntu 20.04) 的 Azure 標準 F72s v2 虛擬機(每個虛擬機 72 個 vcpu,144 GiB 內存),並啓用加速 TCP。這個SKU的好處是我們保證不會與另一個VM共置,這將優化性能。一臺機器運行不同的緩存存儲服務器,另一臺機器專門用於發佈工作負載。我們使用名爲 Resp.benchmark 的基準測試工具來生成所有結果。在撰寫本文時,我們將 Garnet 與最新開源版本的 Redis (v7.2)、KeyDB (v6.3.4) 和 Dragonfly (v6.2.11) 進行了比較。

吞吐量獲取

數據庫大小爲 (a) 1024 個鍵和 (b) 2.56 億個鍵時的吞吐量(對數尺度)、不同數量的客戶端會話:

 數據庫大小爲 (a) 1024 個鍵和 (b) 2.56 億個鍵時的吞吐量(對數規模)、不同的批量大小:

延遲獲取/設置

延遲、不同客戶端會話數量(a)中值、(b)第 99 個百分位和(c)第 99.9 個百分位:

不同批量大小下的延遲(a)中值、(b)第 99 個百分位數和(c)第 99.9 個百分位數:

項目源碼地址

更多項目實用功能和特性歡迎前往項目開源地址查看👀,別忘了給項目一個Star支持💖。

優秀項目和框架精選

該項目已收錄到C#/.NET/.NET Core優秀項目和框架精選中,關注優秀項目和框架精選能讓你及時瞭解C#、.NET和.NET Core領域的最新動態和最佳實踐,提高開發工作效率和質量。坑已挖,歡迎大家踊躍提交PR推薦或自薦(讓優秀的項目和框架不被埋沒🤞)。

DotNetGuide技術社區交流羣

  • DotNetGuide技術社區是一個面向.NET開發者的開源技術社區,旨在爲開發者們提供全面的C#/.NET/.NET Core相關學習資料、技術分享和諮詢、項目框架推薦、求職和招聘資訊、以及解決問題的平臺。
  • 在DotNetGuide技術社區中,開發者們可以分享自己的技術文章、項目經驗、學習心得、遇到的疑難技術問題以及解決方案,並且還有機會結識志同道合的開發者。
  • 我們致力於構建一個積極向上、和諧友善的.NET技術交流平臺。無論您是初學者還是有豐富經驗的開發者,我們都希望能爲您提供更多的價值和成長機會。

歡迎加入DotNetGuide技術社區微信交流羣👨‍👩‍👦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章