1。根据Token得到Range
2。新插入的Token导致原来的某个Range被split为多个Range,记录下来得到一个Map,key为split前的Rang,value为split后的sub Rang列表,这个map为splitRangs
3。得到老的Rang到EndPoint的映射,
oldRangToEndPointMap ,Map,key为Rang,value为负责该Rang的replica节点的EndPoint列表
4。得到Map,replicasForSplitRangs,这个Map记录被split的Rang对应的replicas节点的EndPoint
5。将oldRangToEndPointMap里面被split的Rang删除
6。将split后的sub Rang加入到oldRangToEndPointMap中,让这些sub Rang对应其父Rang(被split的Rang)对应的EndPoint
7。把新Token加进去,重新得到所有Rang列表
8。根据新的Rang得到新的Rang到EndPoint的影射,newRangToEndPointMap
9。
G A B C D F
[A-B] B,C,D
G A B E C D F
[A-B]B,E,C D->E
[B-E]C,D,F
[B-E]E,C,D F->E
[E-C]C,D,F
[E-C]C,D,F
[G-A]A,B,C
[G-A]A,B,E C->E
Cassandra 分区算法
上一篇:1下一篇:2013.04.23
心情分类
推荐日记
分享排行