Tair 中存放在主节点中的表的创建共分为五步:
1)根据当前m_hash_table表,统计出每一个alive节点上存储的bucket数量(包括master bucket和slave bucket)。假设有节点A,B,C和D,则形成数据如下的map,同时在扫描主节点的过程当中判断主节点是否down,如果不可用,则需要执行第五步快速建表:
注意:
在检查可用节点列表的过程中如果为负载均衡优先策略,group会统计当前可用节点列表,将该列表与m_hash_table一起作为算法的输入。这里对可用节点列表的唯一约束就是,列表中的节点都是alive的。而在位置优先策略中,对可用节点列表的约束加强了,即除了要求列表中的每个节点是alive的外,还需要统计2个机房中dataserver的数量差异不超过一个阈值。(若不满足这个2个约束,在该策略下,对照表是无法正常构建的)
例如:有两个集群一个集群70台机器一个有30台,阈值为0.5,那么该例子中的数量差异为(70-30)/7>0.5故不满足策略建表失败。