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:没有公开的文档显示其存储模型。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章