dynamo和cassandra區別


1 如何處理副本的一致性。

cassandra:採用最後寫入獲勝。當有多個版本的數據存在時,以時間戳大的值爲準。
Dynamo:使用向量時鐘(vector lock)。爲數據保持一個時鐘列表,其中的每個元素是(更新值的節點,序列號),見下圖。
 
圖 向量時鐘處理多個版本的一致性
2 負載均衡
使用一致性hash來分佈數據可能會導致數據分佈不均勻。
dynamo:使用虛擬節點技術,一個物理節點可能在環上對應多個節點。

cassandra:分析節點的負載,移動節點在環上的位置。


3 hinted handoff
dynamo:用來處理節點暫時的失效。如某個節點A 異常,若此時有寫操作,則數據會臨時的寫入另外一個節點B上,待A節點恢復後,把數據寫入到恢復健康的節點A。這個操作會在寫入成功的節點數中計數【注: R/W請求中都會帶一個參數,表示R/W操作涉及到的最小副本數】,在A節點恢復之前,讀操作也可以從B節點上讀取,並且會計數。而在cassandra中,在B節點上進行讀寫操作,都不會計數,所以在cassandra中,hinted handoff只用來加速節點的恢復。

4 底層的存儲模型
cassandra:採用bigtable的存儲模型,表分爲多個列族,每個列族由memtable和sstable files組成。
dynamo:沒有公開的文檔顯示其存儲模型。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章