淘宝开源KeyValue结构数据存储系统Tair技术剖析.doc

淘宝开源KeyValue结构数据存储系统Tair技术剖析.doc

ID:53259670

大小:86.00 KB

页数:6页

时间:2020-04-02

淘宝开源KeyValue结构数据存储系统Tair技术剖析.doc_第1页
淘宝开源KeyValue结构数据存储系统Tair技术剖析.doc_第2页
淘宝开源KeyValue结构数据存储系统Tair技术剖析.doc_第3页
淘宝开源KeyValue结构数据存储系统Tair技术剖析.doc_第4页
淘宝开源KeyValue结构数据存储系统Tair技术剖析.doc_第5页
资源描述:

《淘宝开源KeyValue结构数据存储系统Tair技术剖析.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、淘宝开源Key/Value结构数据存储系统Tair技术剖析Tair是由淘宝网自主开发的Key/Value结构数据存储系统,在淘宝网有着大规模的应用。您在登录淘宝、查看商品详情页面或者在淘江湖和好友“捣浆糊”的时候,都在直接或间接地和Tair交互。Tair于2010年6月30号在淘宝开源平台上正式对外开源,本文较详细地介绍了Tair提供的功能及其实现的细节,希望对大家进一步了解Tair有所帮助。Tair的功能Tair是一个Key/Value结构数据的解决方案,它默认支持基于内存和文件的两种存储方式,分别和我们通常所说的缓存和持久化存储对应。Tair除了普通Key/Val

2、ue系统提供的功能,比如get、put、delete以及批量接口外,还有一些附加的实用功能,使得其有更广的适用场景,包括:·Version支持>·原子计数器·Item支持Version支持Tair中的每个数据都包含版本号,版本号在每次更新后都会递增。这个特性有助于防止由于数据的并发更新导致的问题。比如,系统有一个value为“a,b,c”,A和B同时get到这个value。A执行操作,在后面添加一个d,value为“a,b,c,d”。B执行操作添加一个e,value为”a,b,c,e”。如果不加控制,无论A和B谁先更新成功,它的更新都会被后到的更新覆盖。Tair无法解

3、决这个问题,但是引入了version机制避免这样的问题。还是拿刚才的例子,A和B取到数据,假设版本号为10,A先更新,更新成功后,value为”a,b,c,d”,与此同时,版本号会变为11。当B更新时,由于其基于的版本号是10,服务器会拒绝更新,从而避免A的更新被覆盖。B可以选择get新版本的value,然后在其基础上修改,也可以选择强行更新。原子计数器Tair从服务器端支持原子的计数器操作,这使得Tair成为一个简单易用的分布式计数器。Item支持Tair还支持将value视为一个item数组,对value中的部分item进行操作。比如有个key的value为[1,

4、2,3,4,5],我们可以只获取前两个item,返回[1,2],也可以删除第一个item,还支持将数据删除,并返回被删除的数据,通过这个接口可以实现一个原子的分布式FIFO的队列。Tair的内部结构图1Tair整体架构图一个Tair集群主要包括client、configserver和dataserver3个模块。Configserver通过和dataserver的心跳(HeartBeat)维护集群中可用的节点,并根据可用的节点,构建数据的在集群中的分布信息(见下文的对照表)。Client在初始化时,从configserver处获取数据的分布信息,根据分布信息和相应的d

5、ataserver交互完成用户的请求。Dataserver负责数据的存储,并按照configserver的指示完成数据的复制和迁移工作。数据的分布分布式系统需要解决的一个重要问题便是决定数据在集群中的分布策略,好的分布策略应该能将数据均衡地分布到所有节点上,并且还应该能适应集群节点的变化。Tair采用的对照表方式较好地满足了这两点。对照表的行数是一个固定值,这个固定值应该远大于一个集群的物理机器数,由于对照表是需要和每个使用Tair的客户端同步的,所以不能太大,不然同步将带来较大的开销。我们在生产环境中的行数一般为1023。对照表简介下面我们看对照表是怎么完成数据的分

6、布功能的,为了方便,我们这里假设对照表的行数为6。最简单的对照表包含两列,第一列为hash值,第二列为负责该hash值对应数据的dataserver节点信息。比如我们有两个节点192.168.10.1和192.168.10.2,那么对照表类似:0192.168.10.11192.168.10.22192.168.10.13192.168.10.24192.168.10.15192.168.10.2当客户端接收到请求后,将key的hash值和6取模,然后根据取模后的结果查找对照表。比如取模后的值为3,客户端将和192.168.10.2通信。对照表如何适应节点数量的变化我

7、们假设新增了一个节点——192.168.10.3,当configserver发现新增的节点后,会重新构建对照表。构建依据以下两个原则:1.数据在新表中均衡地分布到所有节点上。2.尽可能地保持现有的对照关系。更新之后的对照表如下所示:0192.168.10.11192.168.10.22192.168.10.13192.168.10.24192.168.10.35192.168.10.3这里将原本由192.168.10.1负责的4和192.168.10.2负责的5交由新加入的节点192.168.10.3负责。如果是节点不可用,则相当于上述过程反过来,道

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。