https://www.jianshu.com/p/ccb17daed766
简单介绍
简单而言,类似于redis的哨兵模式。
统一的API。无论底层使用何种引擎,上层的API是一样的。
Tair有四种引擎:mdb, rdb, kdb和ldb。分别基于四种开源的key/value数据库:memcached, Redis, Kyoto Cabinet和leveldb。Tair可以让你更方便地使用这些KV数据库。比如Redis没有提供sharding操作,如果有多个Redis Server,你需要自己写代码实现sharding,Tair帮你封装了这些。
Tair将集群操作封装起来,解放了开发者。淘宝内部在使用Tair时,一般都是双机房双集群容错,利用invalid server保证两个集群间的一致性,这些对于开发者都是透明的。
架构
tair 作为一个分布式系统, 一个集群是由客户端(Client)、控制中心节点(config server)和一系列的数据节点(data server),再加一个可选的InvalidServer(用多独立集群的一致性)组成。
config server 负责管理所有的data server, 维护data server的状态信息,有主备两台config server;data server 对外提供各种数据服务, 并以心跳的形式将自身状况汇报给config server,所有的 data server 地位都是等价的,数据在集群中保留的份数可配置。
ConfigServer的功能
负责管理所有的data server, 维护data server的状态信息。
通过维护和dataserver心跳来获知集群中存活节点的信息
根据存活节点的信息来构建数据在集群中的分布表。
提供数据分布表的查询服务。
调度dataserver之间的数据迁移、复制。
DataServer的功能
对外提供各种数据服务, 并以心跳的形式将自身状况汇报给config server。
提供存储引擎
接受client的put/get/remove等操作
执行数据迁移,复制等
插件:在接受请求的时候处理一些自定义功能
访问统计
InvalidServer的功能
接收来自client的invalid/hide等请求后,对属于同一组的集群(双机房独立集群部署方式)做delete/hide操作,保证同一组集群的一致。
集群断网之后的,脏数据清理。
访问统计。
client的功能
在应用端提供访问Tair集群的接口。
更新并缓存数据分布表和invalidserver地址等。
LocalCache,避免过热数据访问影响tair集群服务。
流控