1. 程式人生 > >超高效能鍵值儲存資料庫 Anna

超高效能鍵值儲存資料庫 Anna

Anna 是伯克利 RISE 實驗室推出的鍵值儲存資料庫,也是一個具備驚人的存取速度、超強的伸縮性和優秀的一致性的 KVS。

Anna 的效能和伸縮性主要歸功於它的完全無協調機制,節點工作程序有 90% 的工作負載是在處理請求,而其他大部分系統(如 Masstree 和英特爾的 TBB)只有不到 10% 的時間在處理請求,它們其餘的 90% 時間花在了等待協調上。不僅如此,其他系統因為使用了共享記憶體,還會出現處理器快取擊穿問題。

Anna 不僅速度快,在一致性方面也達到了很高的水準。多年前,他們釋出的事務協議 HATs 就已表明,無協調的分散式一致性和事務隔離性存在很大的提升空間,包括級聯一致性和讀提交事務級別。Anna 將 Bloom 的單格子組合設計模式移植到了 C++ 中,是第一個實現了上述所有級別一致性的系統。當然,也是因為設計上的簡潔,才能達到如此快的速度。

Anna 架構

上圖是 Anna 單節點的架構圖。Anna 伺服器由一系列獨立的執行緒組成,每個執行緒執行無協調的 actor。每個執行緒對應一個 CPU 核心,執行緒數量不超過 CPU 的總核數。客戶端代理負責將遠端請求分發給 actor,每個 actor 都有一個私有的雜湊表,這些雜湊表存放在共享記憶體中。執行緒間的變更通過記憶體廣播進行交換,而伺服器間的變更則通過 protobuf 進行交換。