发布于 2017-09-26 01:01:01 | 82 次阅读 | 评论: 0 | 来源: 网友投递
Tair 分布式key/value存储系统
Tair是由淘宝网自主开发的Key/Value结构数据存储系统,在淘宝网有着大规模的应用。您在登录淘宝、查看商品详情页面或者在淘江湖和好友“捣浆糊”的时候,都在直接或间接地和Tair交互。
Tair 是阿里巴巴自主研发的高性能、分布式、可扩展、高可靠的 key/value 存储系统,在淘宝网、天猫、聚划算等有着大规模的应用。Tair 的使用场景非常广泛,最简单的场景发生在用户登录淘宝并查看商品详情或者查看购物车时,Tair 就与这个用户发生了交互。
一个 Tair 集群主要包括 3 个必选模块:configserver、dataserver和client,以及一个可选模块:invalidserver。通常情况下,一个集群中包含 2 台 configserver 及多台 dataServer 。两台 configserver 互为主备并通过维护和 dataserver 之间的心跳获知集群中存活可用的 dataserver ,构建数据在集群中的分布信息(对照表)。dataserver 负责数据的存储,并按照 configserver 的指示完成数据的复制和迁移工作。client 在启动的时候,从 configserver 获取数据分布信息,根据数据分布信息和相应的 dataserver 交互完成用户的请求。invalidserver 主要负责对等集群的删除和隐藏操作,保证对等集群的数据一致。
具体来看,这些模块的主要功能分别如下:
ConfigServer
通过维护和 dataserver 心跳来获知集群中存活节点的信息
根据存活节点的信息来构建数据在集群中的分布表
提供数据分布表的查询服务
调度 dataserver 之间的数据迁移、复制
DataServer
提供存储引擎
接受 client 的 put/get/remove 等操作
执行数据迁移,复制等
插件:在接受请求的时候处理一些自定义功能
访问统计
client
在应用端提供访问 Tair 集群的接口
更新并缓存数据分布表和 invalidserver 地址等
LocalCache,避免过热数据访问影响 Tair 集群服务
流控
InvalidServer
接收来自 client 的 invalid/hide 等请求后,对属于同一组的集群(双机房独立集群部署方式)做delete/hide操作,保证同一组集群的一致
集群断网之后的,脏数据清理
访问统计