cassandra最终一致性相关算法数据结构

Merkle Tree(MT)是一个非常容易理解的数据结构,简单来说就是一颗hash树,在这棵树中,叶子节点的值是一些hash值、非叶节点的值均是由其子节点值计算hash得来的。在Dynamo中,每个节点保存一个范围内的key值,不同节点间存在有相互交迭的key值范围。在去熵操作中,考虑的仅仅是某两个节点间共有的key值范围。MT的叶子节点即是这个共有的key值范围内每个key的hash,通过叶子节点的hash自底向上便可以构建出一颗MT。 Dynamo首先比对MT根处的hash,如果一致则表示两者完全一致,否则将其子节点交换并继续比较的过程。

1.Dynamo中每个子节点保存一个范围内的key值,如何比较不同节点上相同key范围的hash?
2.MT与线段树数据结构的比较
线段树:
http://baike.baidu.com/view/670683.htm

CommitLog类>
3.双端队列数据结构
private final Deque segments = new ArrayDeque();
4.commitlog segment 大小硬编码
private volatile int segmentSize = 128*1024*1024; // roll after log gets this big
commitlog有一个固定大小的commitlogHeader结构,
其包含两个重要的数据结构,每个CF在两个数组中都有一个对应的元素:
位图数组(BitSet Dirty)
->若CF对应的Memtable中有脏数据,则置为1,否则为0;在恢复的时候可以指明那些CF需要从commitlog中恢复。
整数数组(int[] lastFlushedAt )
->保存的是CF上次Flush时日志的偏移位置,恢复是可以从这个位置读取commitlog。

5.bloom filter算法
http://blog.csdn.net/wh62592855/article/details/5750337

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23937368/viewspace-1053924/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23937368/viewspace-1053924/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值