35

alibaba / tair

 4 years ago
source link: https://github.com/alibaba/tair/wiki/%E4%B8%AD%E6%96%87%E4%B8%BB%E9%A1%B5
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

产品简介

Tair是提供快速访问的内存(MDB引擎)/持久化(LDB引擎)存储服务,基于高性能、高可用的分布式集群架构,满足读写性能要求高及容量可弹性伸缩的业务需求。

架构

系统架构

一个 Tair 集群主要包括3个必选模块:ConfigServer、Dataserver和 Client.

通常情况下,一个 Tair 集群中包含2台 Configserver 及多台 DataServer。其中两台 Configserver 互为主备。通过和 Dataserver 之间的心跳检测获取集群中存活可用的 Dataserver,构建数据在集群中的分布信息(对照表)。Dataserver 负责数据的存储,并按照 Configserver 的指示完成数据的复制和迁移工作。Client 在启动的时候,从 Configserver 获取数据分布信息,根据数据分布信息,和相应的 Dataserver 进行交互,完成用户的请求。

从架构上看,Configserver 的角色类似于传统应用系统的中心节点,整个集群服务依赖于 Configserver 的正常工作。而实际上,Tair 的 Configserver 是非常轻量级的,当正在工作的 Configserver 宕机的时候,另一台会在秒级别时间内自动接管。而且,即使出现两台 ConfigServer 同时宕机的恶劣情况,只要 DataServer 没有新的变化,Tair 依然服务正常。应用在使用时只需要连接 Configserver,而不需要知道内部节点的情况。

ConfigServers

  • 两台 Configserver 互为主备
  • 通过和 Dataserver 之间的心跳检测来获取集群中存活、可用的 Dataserver 节点信息
  • 根据获取的 Dataserver 节点信息构建数据在集群中的分布表
  • 提供数据分布表的查询服务
  • 调度 Dataserver 之间的数据迁移、复制

DataServers

  • 提供存储引擎
  • 接受 Client 发起的 put/get/remove 等操作
  • 执行数据迁移、复制
  • 访问统计

Clients

  • 提供访问 Tair 集群的API
  • 更新并缓存数据分布表
  • LocalCache,避免过热的数据访问影响 Tair 集群服务。
  • 流量控制

产品功能

分布式架构

  • 采用分布式集群架构,具备自动容灾及故障迁移能力。
  • 支持负载均衡,数据均匀分布。
  • 支持弹性扩展系统的存储空间及吞吐性能,突破海量数据高 QPS 性能瓶颈。

丰富易用的接口

  • 数据结构丰富,支持单级 key-value 结构,同时也支持二级索引结构。
  • 可支持多种应用场景,支持计数器模式。
  • 持数据过期和版本控制。

应用场景

数据库缓存

随着业务量上升,数据库收到的并发请求数会不断增加,随之而来的问题就是数据库系统的负载升高,响应延迟下降,严重的时候,甚至有可能因此而导致服务中断。为了解决这类问题,可以将Tair MDB产品与数据库产品搭配使用,组成高吞吐、低延迟的存储解决方案。 MDB响应速度快,通常在几毫秒内即可完成请求。另一方面,MDB可支持更高的QPS,处理比数据库更多的并发请求。用户通过业务观察,将热点数据放置在MDB中,可以极大缓解数据库的负载,不仅可以节省数据库成本,而且提高了系统的可用性。

临时数据存储

应用程序需要维护大量临时数据,例如社交网络、电子商务、游戏、广告等,将临时数据存储在MDB中,可以降低内存管理的开销,改进应用程序工作负载。在分布式环境中,可以将MDB作为全局统一存储,避免单点故障造成的数据丢失,同时解决多个应用程序之间的同步问题。 常用的例子是将MDB作为session manager使用,如果网站采用分布式部署,且访问量很高,那么同一个用户的不同请求可能会发送到不同的web服务器上,这时可以用MDB作为全局存储,用于保存Session数据、用户的Token、权限信息等数据。

数据存储

  • 推荐或广告类业务通常需要离线计算大量数据。LDB 支持持久化存储,且性能优异,支持数据的在线化服务,因此,用户可将离线数据定期导入 LDB 提供在线服务。
  • 榜单类业务也可通过计算后,将最终的榜单信息存储在 LDB,并直接展示给前端应用。既可满足存储需求,也可以满足快速访问的需求。

黑白名单

安全类应用有较多黑白名单场景,该类黑白名单场景具有命中率低,访问量大,数据丢失业务有损等特性。LDB 支持数据持久化功能,同时也支持高访问量,因此被广泛应用于此类场景。

分布式锁

为防止因多线程并发造成的数据不一致或逻辑混乱,分布式锁是比较常见的处理方式。利用 Tair 的 version 特性或者计数功能可以实现分布式锁。由于 LDB 具有持久化功能,当服务有出现宕机的情况,也不会因此出现锁丢失或者锁不可释放的情况。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK