[学习]分布式缓存系统TAIR代码分析<二>

本文深入探讨分布式缓存系统Tair的对照表创建策略,包括负载均衡优先和位置安全优先两种策略。详细阐述了在负载均衡优先策略下,configserver如何构建并分配bucket,以实现节点间负载的均衡。位置安全优先策略将在后续内容中补充。
摘要由CSDN通过智能技术生成

分布式缓存系统TAIR代码分析<一>中,介绍了configserver初始化后的工作状况。本文将详细介绍configserver如何创建对照表。

 

2.5 创建对照表策略:

2.5.1 概述

在Tair系统中,对照表是一个非常重要的概念。Tair使用改进后的一致性hash算法来确保数据在数据服务器上趋于均匀分布,同时获取良好的可扩展性。Tair将数据按bucket为单位,存放在存储节点上,每一个节点可以存储多个bucket.对于每一个bucket而言,可能会存在多个备份。若在多备份的情况下,其中一个bucket称为master bucket, 其他的称为slave bucket. 客户端会拿到一张表,该表记录了每一个bucket存储的节点的地址。那么,对于一个<key, value>而言,通过对hash(key)%count_of_bucket运算,获取具体的bucket, 通过表,查找backet所在的地址。接下来的事情,就是客户端将这个KV存储到这个地址对应的节点中对应的bucket中。而这个表,就称为对照表。

实际上,对照表建立了Key与其存储位置之间的映射。当作为存储数据的节点发生变化的时候,就必须重建对照表。


在tair的配置文件中,有对照表创建策略的配置项,即_build_strategy 。configserver根据_build_strategy的取值不同,而执行不同的创建对照表策略。目前提供两种策略. 配置为1 则是负载均衡优先, 分配的时候尽量让各个 data server 的负载均衡. 配置为 2 的时候, 是位置安全优先, 会尽量将一份数据的不同备份分配到不同机架的机器上. 配置为3的时候,如果服务器分布在多个机器上,那么会优先使用位置安全优先,即策略2. 如果服务器只在一个机架上,那么退化成策略1,只按负载分布[1].

实际上,Tair提供了2中构建对照表的方法。对于每一种方法,构建对照表的流程是相同的。对于不同构建策略,每一个节点上分配的bucket数量的分配方式是不同的。这一点很容易理解。另外,对于一个给定的buket, 为其选择一个合适的存储节点的策略也是不同的。例如,考虑位置安全优先的对照表构建策略中,buket和其备份bucket应该尽可能分布在不同机房。

本文先详细叙述在负载均衡优先的构建对照表策略下,configserver如何构建对照表。然后,在叙述位置安全优先构建策略的不同之处。

 

2.5.2 负载均衡优先策略

在该策略下,构建出的对照表期望达到的效果——使得每一个节点分配的bucket数量尽可能的均衡。假设共有B个bucket, 有N个节点, 那么在负载均衡优先的策略下,每个节点最少负责的bucket的个数为:B/N;若B%N 不为0,那么将有B%N个节点将负载B/N+1个bucket。若B%N为0,那就再好不过了,每个节点分配了相同数量的bucket。由此可见,在这种模式下,任意两个节点负责的bucket数量至多相差1。

configserver通过以下步骤来构建对照表:

1)根据当前对照表,统计出每一个alive节点上存储的bucket数量。假设有节点A,B,C和D, 则形成数据如下的map:

| A , Xa |

| B,  Xb |

| C,  Xc |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值