一、前言

  关于Tair的相关介绍请参照wiki(http://code.taobao.org/p/tair/wiki/index/)或者之前的博文,不再重复描述。区别于其它主流NoSql数据库,Tair支持多机架多机房管理,提供了一套完整的集群解决方案和安全机制,本文主要介绍了Tair相关的扩展性和可靠性。

二、桶(Bucket)

  桶是Tair最基本的数据存储单位,可以通过配置指定Cluster中总共桶的数量(桶的个数必须大于等于Data Server的数量),每个DS上至少需要分配一个桶,默认配置为1023个桶,如果部署2台Data Server那么两台DS上分别为512,511个桶,如果3台Data Server则每台DS上为341个桶,当PUT数据的时候,Config Server会对Key计算Hash并按一定的算法将Data分配到具体某个桶,从而实现数据在桶上的分布平衡,这也是Tair数据桶的默认分布策略:负载平衡优先,同时Tair还提供了另外一种更为高级的位置安全优先策略,保证数据在同一个桶的多个duplication分布在不同的机架、机房。

  

  以下是实验环境4台Data Server、默认1023个桶的Bucket分配表:

   

三、控制节点(ConfigServer)

   控制节点Config Server管理Data Server节点、维护Data Server的状态信息,采用一主一备(Master/Slave)的方式保证可靠性,主Config Server下配置文件的修改,会自动同步更新到Slave节点,当主节点不可用时,Slave节点会自动接管成主节点。Client首次连接到Config Server,CS会返回一个带version的路由表信息给Client,之后集群中DS的增减都会修改CS上的路由表version,Client再次连接到CS的时候先比较version,如果不一致则先更新路由表,理论上即使2个Config Server都down掉后,Client依然可以通过缓存的路由表信息直接访问到Data Server。

四、Area、配额(Quota)、LRU

  Area类似于Namespace,用来将Tair集群中的数据进行区域划分逻辑分区,可以通过在Config Server的group.conf文件中指定多个Area,每个Area设置固定的Quota Size,但所有Area的Quota合计不能超过所有Data Server分配的内存大小总和。每个Area作为独立的管理单元,不同的Area可以包含重名的Key。通过Tair Client向Tair插入的数据超过默认阀值(8192字节)会自动将kv压缩后再存储到DS,当累计put的kv字节超过配额大小的时候,Tair会启用LRU策略(Least Recently Used,每次淘汰最久没有使用的元素),自动移除过期kv。如果put指定的Area在Config中不存在,Tair可以自动生成一个临时Area,当所有数据移除后临时Area会被自动删除。

1 #quota info (1024000=1M)
2 _areaCapacity_list=0,2048000;
3 _areaCapacity_list=1,1024000;
4 _areaCapacity_list=2,1024000;

五、容灾(CopyCount)和负载平衡(Migrate)

  Tair可以指定CopyCount实现数据进行多次备份,理论上备份越多、Data Server数量越多则数据安全越可靠,备份数据同样会按照一定算法分布到不同的DataS erver的桶上,假设CopyCount=3,Data Server个数为3 ,那么数据分布情况如下图。增加或者减少Data Server,由于存在Heartbeat,Config Server会立即监视到DS的变化,会重新计算一张数据桶的分布表,然后开始进行数据迁移,将到故障Data Server的访问转到别的Data Server上,Migrate的时间和Bucket数量、KV数量有关,迁移过程中可以通过Health命令监视到每台DS的剩余迁移桶数量,当迁移结束后所有DS重新达到数据分布平衡。在迁移过程中,Config Server会保证数据分布表的正确性,使得客户端能够得到数据。

  关于“增加或者减少data server的时候会发生什么”,wiki中提供了更为原子的细节说明,请先阅读“http://code.taobao.org/p/tair/wiki/intro/”。

  

  按下图示意,每台DS上都有3份不同的数据允许的宕机数量为2,只要有1台DS能正常工作,那么就能保证数据的完整性。

  

六、监控(Monitor)

  Tair提供相关监控的工具用于监视当前集群中所有Data Server、Area的数据分布情况及查询功能。
  开源svn地址:http://code.taobao.org/p/tair-monitor/src/trunk/tair_2_3_mon/
  项目基于servlet,部署后需要修改MonitorArgs文件(Tomcat/webapps/tair_2_3_mon/WEB-INF/classes/com/tair_2_3/statmonitor目录),指定ConfigServer的地址和端口。

configserverA=10.129.221.70:5198
groupname=group_1
interval=10
is_rdb=false
need_support_cplusplus=true
is_test_cluster=false

七、感谢@Clear 张舒鳌童鞋 协助进行的大量验证工作

转载于:https://www.cnblogs.com/lengfo/p/4208903.html

More about Tair (NoSql)相关推荐

  1. 关系型数据库(Relational Database)与非关系型数据库(NoSQL)的区别:(MySQL,Redis,Memcache,MongoDB)

    Table of Contents 关系型数据库(Relational Database) 什么是关系数据库 什么是SQL? 关系数据库的结构 关系模型 关系数据库的好处 数据一致性 隔离性和原子性 ...

  2. 山东大学2022-2023非关系型数据库(Nosql)期末考试

    写在前面的话: 今年线上开卷考试,Nosql考试软工(限选课)和大数据(必修课)是一套试题,因此大数据所学的许多内容考试并无涉及.考察点主要以学过的四类Nosql数据库的相关知识为主. 试题如下,侵删 ...

  3. 文档数据库(nosql)学习笔记(1)--简述

    文档数据库技术: 1.文档数据库是Nosql数据库家族里面最像关系数据库的Nosql数据库. 2.文档是处理信息的基本单位 3.文档数据库中采用BSON,JSON等格式储存,可方便地存储树形结构数据, ...

  4. 数据库种类发展史和大数据下的数据库(NoSQL)

    本文侧重于大数据下的NoSQL数据库特点,在介绍NoSQL数据库之前,需要简单介绍下数据库种类的发展史,有因有果的逻辑才能被大家所认可嘛. 计算机刚刚兴起的年代,是没有专门存储数据的库的,基本上所有的 ...

  5. 2019年最受程序员欢迎的10大非关系型(NoSQL)数据库

    数据库是一组信息的集合,这些信息被组织起来以便于访问.管理和更新.在开始介绍最流行的NoSQL数据库之前.您必须了解NoSQL数据库.大多数程序员不知道它代表什么.它的全称是Not Only SQL. ...

  6. tair(四)--命令

    TAIR命令说明 一.tairclient 说明:输出如下帮助信息 ./tairclient -c configserver:port -g groupname -s, --server data s ...

  7. 6.非关系型数据库(Nosql)之mongodb:集群(主从复制)

     1.主从复制是MongoDB最常用的复制方式,这种方式非常灵活,可用于备份.故障恢复.读扩展等 2最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址.运行mong ...

  8. 5.非关系型数据库(Nosql)之mongodb:创建集合,备份与导入导出, 数据还原,导入导出

     1固定集合 固定集合值得是事先创建而且大小固定的集合 2固定集合的特征:固定集合很像环形队列,如果空间不足,最早文档就会被删除,为新的文档腾出空间.一般来说,固定集合适用于任何想要自动淘汰过期属 ...

  9. 3.非关系型数据库(Nosql)之mongodb:升降序排序,排序分页,$all,$in,$nin,$or,$nor, $exists,游标,更新(update,$set,$unset,$inc)

     1排序sort() A降序排列 db.c4.find().sort().sort({age:-1}); B升序排列: db.c4.find().sort({age:-1}); C排序分页 db. ...

最新文章

  1. python的 局部变量与全局变量
  2. 一份火爆全网的刷题笔记分享!offer 到手!
  3. POJ 3628 Bookshelf 2
  4. nyoj 55 懒省事的小明
  5. 成功解决You are using pip version 9.0.3, however version 10.0.1 is available. You should consider upgr
  6. CRMEB删除公众号首页logo动画
  7. 阿里云SLB负载均衡与使用SSL域名证书
  8. 创造型模式——工厂模式
  9. OpenShift Security (3) - 准备客户端环境和演示应用
  10. java去掉的行_Java实现去掉每行的行号
  11. vue的watch使用(如淘宝优惠券设置计算属性时候)
  12. adb刷入第三方recovery_全网热门机型TWRP_Recovery最全面整理合集覆盖安卓全机型
  13. 如何计算Lyapunov exponent spectrum?matlab计算李雅普诺夫指数
  14. 深度强化学习算法 A3C (Actor-Critic Algorithm)
  15. android手机无分区无法刷机,adb sideload 刷机教程:当你手机无法开机,内存里没有ROM时......
  16. 大学四年总结——找工作是真的难
  17. 使用第三方应用友盟实现网站访问量统计功能
  18. 09:整型与布尔型的转换
  19. 7的整除特征 三位一截_整除的特征、三位截断法的原理
  20. TensorFlow 使用 slim 模块搭建复杂网络

热门文章

  1. 橡鹭科技获源码资本亿元融资,美团原核心高管加盟,发力服务机器人
  2. 过半网友支持马斯克卖掉特斯拉10%股票,马斯克:会遵守投票结果
  3. 美团副总裁夏华夏:科技应该为每一个普通人服务,要做“接地气的AI” | MEET2021...
  4. 在PyTorch上用Keras,分布式训练开箱即用,告别没完没了的Debug
  5. Yii2.0 连接数据库
  6. Java8 lambda表达式10个示例
  7. activemq高级客户端选项
  8. 读书笔记《Hadoop开源云计算平台》
  9. VS2010与.NET4系列 20.VS2010的JavaScript智能感知增强
  10. ASPJPEG图片处理组件安装和使用问题