分布式存储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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据仓库ods层设计_数据仓库建模的流程有几个

    数据仓库ods层设计_数据仓库建模的流程有几个当我们的数据采集到hdfs层上之后,我们就开开始对数据进行建模以便后来分析,那么我们整体的架构先放在每个建模层级的最前面所以项目1的将行为数据和业务数据导入到hdfs中我们已经完成了,现在需要的是将hdfs的数据通过ODS层数据建模,初步的分析以及改变,那么我们首先介绍下ODS层的作用因为我们的数据刚落到hdfs上,他还只是单纯的数据,并没有能让我们直接操作。所以我们需要将这些数据放入到能够对数据进行操作的框架中,如我们这个项目采取了使用hive的方法。所以我们此次在ODS层需要做到的就是将hdfs

    2022年9月1日
    5
  • 千万级敏感词过滤设计

    千万级敏感词过滤设计需求分析系统有千万级的禁词需要去过滤当中包含人名特殊符号组成的语句网址单字组合成的敏感词等等初步设计 1.解决千万级禁词存储及查找问题 2.解决被过滤文本内容过多问题详细设计 1.采用ES作为禁词库千万级数据检索时间在毫秒级满足需求 2.不适用分词器需要完整匹配分词后很多词都是合法的组合之后才是敏感词 3.被过滤文本内容分词不完整利用IK分词器分词结果不适合现…

    2022年5月30日
    44
  • stat函数详解

    Linux系统函数之文件系统管理(二)stat函数​作用:获取文件信息​头文件:include<sys/types.h>#include<sys/stat.h>#include<unistd.h>​函数原型:intstat(constchar*path,structstat*buf)​返回值:成功返…

    2022年4月5日
    47
  • NETCms教程_html控制台

    NETCms教程_html控制台NETCms教程 1.安装 2.下载 3.模板与标签制作(一) 模板与标签制作(一)http://www.aspxcms.com/tech/2/http://www.aspxcms.com/tech/2.rar4.模板与标签制作(二)模板与标签制作(二)http://www.aspxcms.com/tech/3/http://www.aspxcms.

    2022年9月30日
    3
  • Java object转string「建议收藏」

    Java object转string「建议收藏」publicstaticcreateString(Objectobject){rerutnobject!=null?object.toString():””;}

    2022年4月30日
    63
  • LDA模型学习之(二)——主题的理解

    LDA模型学习之(二)——主题的理解

    2021年8月17日
    57

发表回复

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

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