微軟開源Garnet儲存相容Redis

微軟開源了NoSQL系統Garnet,旨在創建快取儲存並與現有的Redis儲存客戶端程式庫相容。 Garnet 支援建立可擴展的資料快取集群,可使用跨集群節點的複製、金鑰遷移和資料分片。該專案採用 C# 編寫,儲存核心採用 C++,在 MIT 許可證下開放,可以在 .NET 支援的所有平台上運行(主要平台是 Linux 和 Windows)。

為了儲存數據,使用了 Tsavorite 引擎(Microsoft FASTER 儲存的一個分支),它支援多執行緒查詢處理、交易、以非阻塞模式修復變更(檢查點)、從故障中恢復、保存冗餘副本並維護操作日誌。 Garnet 中的網路引擎是使用 ShadowFax 研究專案提出的共享記憶體架構建構的。 TLS 處理和與儲存的互動在單一執行緒中執行,這使得可以避免切換執行緒的開銷,並在透過網路傳輸資料時更有效地使用 CPU 快取。

Garnet架構將解析和處理請求的邏輯與儲存操作分開。資料使用兩個基於 Tsavorite 庫的鍵值儲存進行儲存。第一個「主」儲存針對快速字串操作進行了最佳化,第二個「物件」儲存針對複雜物件和進階資料類型(例如雜湊和清單)進行了最佳化。第二個儲存中的資料類型是使用.NET 函式庫實現的。資料儲存在堆(C# 堆)上,這使得資料可以有效率地更新,並以序列化形式儲存在磁碟上。

微軟開源Garnet儲存相容Redis

石榴石的特點:

  • 可以部署多層存儲,涵蓋 RAM、SSD 驅動器和雲存儲,其中需求較少的數據被推送到慢速存儲中,以創建大於 RAM 的緩存。
  • 可擴展的設備支持,允許建立針對不同設備進行最佳化的層,例如,有用於 SDD、硬碟和 Azure 儲存雲端儲存的層。
  • 一種重複 RAM 中釋放空間、防止碎片的有效機制。
  • 對用於索引、日誌和物件儲存的記憶體大小的可配置限制。
  • RESP 協定用於存取存儲,這使得 Garnet 可以與未經修改的 Redis 用戶端一起使用。
  • 支援儲存字串值和複雜的資料結構,例如列表、雜湊、集合、排序列表和地理位置資料。能夠決定密鑰的生命週期。
  • 用於執行分析查詢(HLL/Hyperloglog、點陣圖)、交易(MULTI/EXEC)和使用發布/訂閱範例的 API 的可用性。
  • 透過 ACL 進行靈活存取控制的方法的可用性。
  • 能夠以 JSON 或 redis.conf 格式定義配置。
  • 支援連接附加網路處理程序。能夠使用 TLS 加密流量(基於 SslStream)。
  • 能夠在 C# 中建立擴展,以使用字串和物件實現其他操作。
  • 支援跨多個鍵的事務預存程序。
  • 能夠從先前儲存的位置恢復狀態(檢查點恢復)。存在僅附加文件模式(AOF,僅附加文件),其中所有舊資料仍然可用且不會被取代。
  • 支援建立具有複製、分片、節點間動態金鑰遷移以及故障節點復原的儲存叢集。
  • 執行查詢時具有高效能和低延遲。透過大量用戶端會話有效處理小批量請求,使您能夠實現比競爭解決方案高出一個數量級的吞吐量(每秒處理的請求數)。在 Azure 雲端中的虛擬機器中執行時,大多數情況下,用戶端延遲不超過 300 微秒。在我們的測試中,Garnet 在效能和反應能力方面明顯領先於 Redis、Dragonfly 和 KeyDB。在某些測試中,Garnet 的效能比競爭系統高出十倍之多。
    微軟開源Garnet儲存相容Redis
    微軟開源Garnet儲存相容Redis
    微軟開源Garnet儲存相容Redis
    微軟開源Garnet儲存相容Redis

來源: opennet.ru

添加評論