介绍

  1. Tair出现之前的很长一段时间里,像redismemcache这些知名NOSQL数据库是不支持分布式的,在这样的背景下,由淘宝网自主开发并在2010.6开源的一个高性能、高扩展、高可靠分布式缓存,类似mapkey/value结构,在淘宝、天猫等各个应用中广泛应用。

概念

  • configID:一个Tair集群的唯一标识
  • namespace:应用的一个内存或持久化存储区域,0到65535之间的一个数字
  • quta:配额,对应了每个namespace储存区的大小限制,超过配额后将使用LRU策略淘汰
  • expireTime:数据的过期时间。当超过过期时间之后,数据将对应用不可见,不同的存储引擎有不同的策略清理掉过期的数据
  • prefix:前缀处理,保证了拥有相同前缀的key根据哈希算法后,分散在同一个dataserver上,提高了处理速度

特性

Tair实现了集群部署,特性都是一些集群的特性,容错、解决单点故障、跨机房管理、多集群管理、支持副本等。Tair的特性有:

  • namespace
  • expire
  • prefix
  • list、zset、hash、set
  • localcache
  • flowcontrol

抽象存储层,内部采用MDB、RDB、LDB三种存储引擎满足了各种存储需求
MDB是内存型,K/V结构,底层是memcache,由于是内存型性能最高但是不支持持久化
RDB底层是redis引擎,支持List、Set、Zset、Map、String等多种数据结构,性能略低于MDB
LDB是持久化型引擎,底层是google的levelDB,K/V结构,性能最低,但可靠性最高

应用场景

由于Tair底层的MDB、RDB、LDB三种引擎支持,既能作为缓存使用又可以作为持久化存储数据库,命令除了put、get、delete以及批量接口外,还有一些附加的实用功能比如version支持、原子计数器、item支持,可以用于实现分布式锁,队列等。

原理架构

image.png
image.png
image.png

table

image.png
image.png

client、common

image.png

configserver、dataserver

image.png

storage

image.png
image.png
image.png
image.png
image.png
image.png

packets、plugin

image.png

version

image.png

Tair使用规范image.png