分布式存储Tair

分布式存储TairTairtair 是淘宝在 2010 年开源的分布式 k v 缓存 存储系统 主要支持以下四种引擎 mdb 类似 memcahe rdb 采用 redis 中的存储结构 支持 k v list hash set 等 ldb leveldb kdb KyotoCabinet 可以让我们更方便的使用这些 kv 数据库 其中 mdb rdb 是分布式缓存 ldb kdb 是分布式存储 tair 支持 version 每个数据中包含一个 version 信息 可以保证数据都是基于最新的数据进行更新 比如有数据

Tair

架构

configServer作用,dataServer作用

configServer(以下称CS)

  CS中维护了一个对照表,存储数据桶和服务节点的关系。key的hash和桶长度取模,决定数据存储到哪个桶。比如现在有两个DS节点,172.11.12.1,172.11.12.2,设置桶大小为6,映射表关系如下

数据(1,q),(11,w),(2,e)分别存到了1,5,2号桶,也就是节点172.11.12.2存两条记录,172.11.12.1存一条记录。

tair支持自定义备份数量,备份数量不同,CS中的映射表也会有差别。备份数量为2,第一列还是hash值,第二列是主节点,第三列为备份节点。客户端都是直接和主节点进行交互。当辅节点不可用,CS会再指定一个新的辅节点,主节点不可以,会讲辅节点升级为主,同时再指定一个辅节点

在tair中,CS和一般的控制中心不太一样,CS在首次将配置下发到客户端后,客户端会缓存一份配置,直至下一次配置发生变化,再去CS中拉配置,所以在配置无变化时,即使CS挂掉,也不会影响服务。CS会把对照表的版本信息下发到dataServer,客户端读数据时会将自己持有的CS版本号带过去,dataServer如果判断版本不一致,会通知客户端从新获取配置。

dataServer(以下称DS)

  DS 对外提供各种数据服务,并以心跳的形式将自身状况汇报给configServer;所有的DS地位都是等价的。

主流缓存对比

Tair和RedisCluster都是集群模式,Redis是单机缓存系统,所以在应用场景中,更多的是对Tair和RedisCluster进行对比,看哪一个更适合。

Redis RedisCluster Tair
支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上不超过1GB(建议不超过1MB) 256M
支持Value结构 byte[]/list
map/set/string
byte[]/list
map/set/string
(1)kv/map/list
(2)支持big_list(list无长度限制)
(3)支持创建schema,cmd query

支持的总数据量 1000+instance 理论上总数据量无限制
适宜的读写比 存内存型,均适合 存内存型,均适合 支持多引擎,适宜各种比例的读写。读多写少(mdb+leveldb),读少写多(leveldb)
数据是否可改写 Y Y Y
是否支持Scan/Range Query 不支持,并且不支持merge operations 支持Scan/Range Query
CAP CP 用户可配置,CP或AP
数据自动过期 支持 支持 支持
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232180.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月27日 下午7:01
下一篇 2025年10月27日 下午7:22


相关推荐

  • 前后端分离开发模式介绍

    前后端分离开发模式介绍1 1 什么是前后端分离前后端分离是目前一种非常流行的开发模式 它使项目的分工更加明确 后端 负责处理 存储数据前端 负责显示数据前端和后端开发人员通过接口进行数据的交换 1 2 为什么要进行前后端分离前后端可以身心愉快地专注于各自擅长的领域避免后端写前端代码 基本上 1 天时间 20 写后端代码 80 写页面 前端配置后端代码运行环境 简直是要疯 装一堆环境 而且有些开发环境是 windows 前端是 macos 装环境就要装好几天 避免前后端打架 推诿 甩锅 提高开发效率分

    2026年2月25日
    3
  • 手机号码归属地查询数据库下载「建议收藏」

    手机号码归属地查询数据库下载「建议收藏」只需要输入前7位即可查询所在地access数据库,excel的可以直接查询哦,还有htm格式下载。有15万5千多条记录电话区号code字段2009年01月02日整理完成支持移动159号段和联通153号段包含最新的151、155、157号码段的归属地数据手机号码归属地信息,可以详细查询到手机号码的开户地信息,包括该号码所属省份、城市、长途区号以及该号…

    2022年7月22日
    18
  • python装饰器(详解)

    python装饰器(详解)大家好 我是 J 哥 今天我们介绍一下 python 中的装饰器首先我们要了解什么是装饰器 1 什么是装饰器器指的是工具 可以定义成成函数装饰指的是为其他事物添加额外的东西点缀合到一起的解释 装饰器指的定义一个函数 该函数是用来为其他函数添加额外的功能就是拓展原来函数功能的一种函数 2 为何要用装饰器开放封闭原则开放 指的是对拓展功能是开放的封闭 指的是对修改源代码是封闭的装饰器就是在不修改被装饰器对象源代码以及调用方式的前提下为被装饰对象添加新功能 3 如何用 需求

    2026年3月19日
    3
  • Sublime Text 3安装及常用插件安装

    Sublime Text 3安装及常用插件安装欢迎访问我的个人博客http://xiaolongwu.cn/一、Sublime3下载1.百度搜索Sublime3download,选择进入下载页面2.我选择下载Win64位安装程序二、Sublime3安装傻瓜式安装,一直点下一步即可。三、Sublime3插件配置1.直接安装安装Sublimetext3插件很方便,可以直接下载安装…

    2022年6月24日
    31
  • js格式化数字

    js格式化数字今天遇到这么个需求 觉得很有意思 分享给大家 某个 div 内需要将后台返回的数字格式化显示到页面上 怎么叫格式呢 就是每三位就加个逗号 然后我简单实现了一下 functionpars num varnum num toString result while num length gt 3

    2026年3月19日
    2
  • aria2最新tracker服务器,Aria2自动更新BT Tracker服务器列表的方法「建议收藏」

    aria2最新tracker服务器,Aria2自动更新BT Tracker服务器列表的方法「建议收藏」说明公开的BTtracker服务器,因为种种原因总会经常失效,要想获取更多的peer需要经常维护这份列表。感谢github上的小伙伴提供了这么一份tracker自动更新列表:https://github.com/ngosang/trackerslist。我们要想Aria2也支持自动更新这份列表,那么你可以按照下面方法来实现。关于Aria2安装使用教程可参考:https://www.moerats…

    2022年6月16日
    595

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号