淘宝Tair简介

时间:2024-02-25 07:39:35

一、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++客户端。