Anna超高性能鍵值存儲數(shù)據(jù)庫
Anna 是伯克利 RISE 實驗室推出的鍵值存儲數(shù)據(jù)庫,也是一個具備驚人的存取速度、超強的伸縮性和優(yōu)秀的一致性的 KVS。
Anna 的性能和伸縮性主要歸功于它的完全無協(xié)調(diào)機制,節(jié)點工作進程有 90% 的工作負載是在處理請求,而其他大部分系統(tǒng)(如 Masstree 和英特爾的 TBB)只有不到 10% 的時間在處理請求,它們其余的 90% 時間花在了等待協(xié)調(diào)上。不僅如此,其他系統(tǒng)因為使用了共享內(nèi)存,還會出現(xiàn)處理器緩存擊穿問題。
Anna 不僅速度快,在一致性方面也達到了很高的水準。多年前,他們發(fā)布的事務(wù)協(xié)議 HATs 就已表明,無協(xié)調(diào)的分布式一致性和事務(wù)隔離性存在很大的提升空間,包括級聯(lián)一致性和讀提交事務(wù)級別。Anna 將 Bloom 的單格子組合設(shè)計模式移植到了 C++ 中,是第一個實現(xiàn)了上述所有級別一致性的系統(tǒng)。當然,也是因為設(shè)計上的簡潔,才能達到如此快的速度。
Anna 架構(gòu)
上圖是 Anna 單節(jié)點的架構(gòu)圖。Anna 服務(wù)器由一系列獨立的線程組成,每個線程運行無協(xié)調(diào)的 actor。每個線程對應(yīng)一個 CPU 核心,線程數(shù)量不超過 CPU 的總核數(shù)。客戶端代理負責將遠程請求分發(fā)給 actor,每個 actor 都有一個私有的哈希表,這些哈希表存放在共享內(nèi)存中。線程間的變更通過內(nèi)存廣播進行交換,而服務(wù)器間的變更則通過 protobuf 進行交換。
參考:https://mp.weixin.qq.com/s/3WmGpZkEuSz-ox_2CPCsqg
論文原文:http://db.cs.berkeley.edu/jmh/papers/anna_ieee18.pdf
