Tair:分布式key/value存储系统

一、Tair是什么

Tair是一个分布式的key/value系统。

Tair有四种引擎:mdb, rdb, kdb和ldb。分别基于四种开源的key/value数据库:memcached, Redis, Kyoto Cabinet和leveldb。Tair可以让你更方便地使用这些KV数据库。比如Redis没有提供sharding操作,如果有多个Redis Server,你需要自己写代码实现sharding,Tair帮你封装了这些。

Tair有以下优点:

1. 统一的API。无论底层使用何种引擎,上层的API是一样的。

2. Tair将集群操作封装起来,解放了开发者。淘宝内部在使用Tair时,一般都是双机房双集群容错,利用invalid server保证两个集群间的一致性,这些对于开发者都是透明的。

二、Tair使用场景

1. 非持久化(mdb,rdb)

数据可以以key/value的形式存储
数据可以接受丢失
访问速度要求很高
单个数据大小不是很大,一般在KB级别
数据量很大,并且有较大的增长可能性
数据更新不频繁
2. 持久化(kdb,ldb)

数据可以以key/value的形式存储
数据需要持久化
单个数据大小不是很大,一般在KB级别
数据量很大,并且有较大的增长可能性
数据的读写比例较高
三、 Tair的架构

Tair是Master/Slave结构。Config Server管理Data Server节点、维护Data Server的状态信息;Data Server负责数据存储,按照Config Server的指示完成数据复制和迁移工作,并定时给Config Server发送心跳信息。Config Server是单点,采用一主一备的方式保证可靠性

四、 Tair的功能

1. 动态增加或减少data server

Config Server使用Hash算法将数据桶均匀分布到不同的Data Server。当某个Data Server发生故障时,Config Server会察觉这一情况,重新计算一张数据桶的分布表,并将到故障Data Server的访问转到别的DataServer上。这个过程中,有可能因为负载平衡出现数据迁移。Config Server会检查Data Server的负载,将数据迁移到负载较小的节点上。迁移过程中,Config Server会保证路由表的正确性,使得客户端能够得到数据。

客户端连接Config Server时,会下载最新的路由表。如果连接某个Data Server不成功(可能宕机了),客户端会重新连接Config Server以获得最新的路由表。

2. 数据桶分布策略

数据桶的分布策略有两种:负载平衡优先和位置安全优先。负载平衡不用说。安全位置优先是指同一个桶的两个duplication要分布在不同的机房。

3. 客户端

Tair Server使用C++编写,利用socket通信。原则上只要支持socket的语言都可以连接,目前只提供Java和C++客户端。

网址:http://code.taobao.org/p/tair/src/

收藏

资源整理者简介:黄余粮

伯乐在线发起人。热爱技术和产品,崇尚极客文化。 个人主页 · 贡献了108个资源 · 13 ·  


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1440 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer