Dragonfly 專案正在開發 Redis 和 Memcached 的更快替代品

Dragonfly 記憶體快取系統的第一個版本現已推出,提供對 Memcached 和 Redis 協議的支持,但允許以更高的效能和更少的記憶體消耗執行查詢。 該系統以鍵/值格式操作數據,可用作輕量級解決方案來加速高負載站點的工作,在 RAM 中緩存對 DBMS 的慢速查詢和中間數據。 Dragonfly 程式碼是用 C/C++ 編寫的,並根據 BSL(商業原始碼許可證)分發。

BSL 許可證是由 MySQL 聯合創始人提出的,作為 Open Core 模型的替代方案。 BSL的本質是高級功能的程式碼最初是可以修改的,但在一段時間內只有滿足附加條件才可以免費使用,而這需要購買商業許可證才能規避。 Dragonfly 專案的附加授權條款要求僅在 2.0 年 1 月 2027 日將程式碼轉移到 Apache XNUMX 授權。 到目前為止,該許可證僅允許使用該程式碼來確保其服務和產品的運行,但禁止用於建立作為 Dragonfly 附加元件的付費雲端服務。

根據開發人員和演示測試,Dragonfly 聲稱是最快的記憶體儲存系統。 與 Redis 相比,Dragonfly 在典型工作負載下效能提高了 25 倍,記憶體消耗降低了 2 倍。 一台 Dragonfly 伺服器每秒可以處理數百萬個請求,例如,在 Amazon EC6 c16gn.3.8xlarge 環境中,可以實現每秒 XNUMX 萬個請求的效能。

Dragonfly 專案正在開發 Redis 和 Memcached 的更快替代品

在儲存 5 GB 資料的測試中,Dragonfly 所需的記憶體比 Redis 少 30%。 使用「bgsave」命令建立快照時,記憶體消耗會增加,但在高峰時刻仍然比 Redis 少近三倍,並且快照記錄操作本身要快得多(測試中 Dragonfly 中的快照寫入時間為 30 秒)秒,而Redis - 42 秒)。

Dragonfly 專案正在開發 Redis 和 Memcached 的更快替代品

高效能的實現得益於多執行緒架構,無需共享資源(無共享),這意味著每個執行緒都被分配一個單獨的處理器及其自己的資料部分,無需互斥鎖和自旋鎖即可工作。 為了確保使用多個鍵時的原子性,使用了輕量級 VLL 鎖定。 為了在記憶體中有效地儲存訊息,使用了 dashtable 結構,它實作了一種分區哈希表。

在第一個版本中提供的功能中,值得注意的是對 RESP2 協定和 130 個 Redis 命令的支持,這大約對應於 Redis 2.8 版本的功能。 此外,Dragonfly 支援除CAS(check-and-set)之外的所有memcached 命令,提供對創建快照的非同步操作的支持,提供可預測的記憶體消耗,提供內建的Lua 5.4 解釋器,並支援複雜的數據類型,例如雜湊、集合和清單(ZSET、HSET、LIST、SETS 和 STRING)。

單獨提供快取模式,在可用記憶體耗儘後自動用新資料取代舊資料。 可以為資料附加一個生命週期,在此期間資料被認為是相關的。 儲存狀態可以在背景刷新到磁碟,以便稍後重新啟動後恢復。 為了管理系統,提供了一個 HTTP 控制台(綁定到 TCP 連接埠 6379)和一個用於傳回指標的 API,與 Prometheus 相容。 在未來的版本中,我們計劃擴展對 Redis 命令的支持,並實現複製儲存的功能,以提供容錯和負載平衡。

來源: opennet.ru

添加評論