tair与redis分析
- 格式:docx
- 大小:540.74 KB
- 文档页数:8
memcache、redis、tair性能对比测试报告第1章限制条件前一周所做的分布缓存技术预言中有包括ehcache、memcache、redis、tair,还包括了基于MongoDB的分布式技术。
测试中,考虑到各自功能的差异化特点,其中选择了memcache、redis、tair功能特性相近的缓存服务器进行性能对比,所以ehcache、MongoDB将不做为本次测试的规范,其原因如下:1)Ehcache是组件级别的缓存,要搭建一个独立的缓存服务器,需要用到ehcache server 模块,这是个war包,能运行在web 容器中,决定整个缓存服务器性能的好坏因素太多,比如web服务器,集群方式等。
跟memcache、redis、tair没有对比性。
2)MongoDB是面向文档的数据库,跟缓存没有可比性。
第2章测试场景概述性能测试包括单机环境和分布式环境,主要针对memcache、redis、tair各缓存服务器在缓存了不同级别的数据下,多个线程并发操作向缓存set/get缓存数据,考虑到网络方面的负载,又将每次set/get操作的缓存数据的大小分为三个不同的级别:1KB,10KB,100KB,通过对上述的条件进行排列,取得以下的测试场景。
第3章单机环境测试3.1.测试场景:1.当各缓存的数据库空时,以单线程通过各缓存客户端set调用向服务端推送数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。
2.在场景一完成的情况下,以单线程通过各缓存客户端get调用向服务端获取数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。
3.并发200个线程通过缓存软件的客户set调用向服务端推送数据,每个线程完成10000次的操作,比较服务器的tps大小,以上动作通过使用不同大小的单个缓存对象重复三次。
4.并发200个线程通过缓存软件的客户get调用向服务端获取数据,每个线程完成10000次的操作,比较服务器的tps大小,以上动作通过使用不同的key取不同大小的数据,重复三次。
Redis实时数据分析与计算实践Redis(Remote Dictionary Server)是一个开源的,基于内存的数据结构存储系统。
它在内存中存储数据,并通过网络进行快速访问。
由于其高性能和易用性,Redis在实时数据分析和计算领域得到了广泛的应用。
1. 简介Redis是一个支持多种数据结构的数据库,包括字符串、哈希表、列表、集合和有序集合等。
这些数据结构的高效操作使得Redis在实时数据分析与计算方面具有独特的优势。
2. 实时数据分析与计算实时数据分析与计算要求系统能够快速地处理和分析大量的实时数据。
Redis通过将数据存储在内存中,实现了快速的读写操作,从而满足实时数据分析与计算的需求。
3. 数据存储与读取Redis以键值对的形式存储数据,通过键来快速定位和读取数据。
数据存储在Redis的内存中,因此读取速度非常快。
这使得Redis成为实时数据分析与计算的理想选择。
4. 数据结构Redis支持多种数据结构,如字符串、哈希表、列表、集合和有序集合等。
这些数据结构的高效操作可以满足实时数据分析与计算的不同需求。
5. 数据分析通过Redis的数据结构,可以方便地进行各种数据分析操作。
例如,通过列表数据结构可以实现队列,用于实时处理数据流;集合数据结构可以用于去重和求交集;有序集合数据结构可以用于实现排行榜。
6. 数据计算Redis支持多种计算操作,如求和、求平均值、求最大值和最小值等。
这些计算操作可以直接在Redis中进行,而无需传输数据到其他计算节点,从而提高了计算效率。
7. 应用场景Redis在实时数据分析与计算方面有广泛的应用场景。
例如,广告系统可以使用Redis来实时统计展示量和点击量;电商系统可以使用Redis来实时统计商品销量和用户行为;游戏系统可以使用Redis来实时处理游戏事件和计算排名等。
8. 总结Redis作为一个高性能的内存数据库,具备实时数据分析与计算所需的快速存储和高效计算能力。
Tair数据库介绍与描述1. 引言Tair数据库是一种高性能、高可用、分布式的内存数据库,由阿里巴巴集团自主研发。
它以其出色的性能和可靠性,在大规模互联网应用中得到了广泛应用。
本文将对Tair数据库进行全面详细的介绍和描述,包括其特点、架构、功能以及优势。
2. 特点Tair数据库具有以下几个重要特点:2.1 高性能Tair数据库采用了多种高效的技术手段来提升性能。
首先,它使用了内存作为主要存储介质,大大提高了数据访问速度。
其次,Tair采用了分布式架构,可以通过横向扩展来增加服务器节点数量,从而提升系统的整体处理能力。
此外,Tair还支持多种数据结构和算法优化,如哈希算法、位图索引等,进一步提升了查询和计算效率。
2.2 高可用Tair数据库通过数据冗余备份和故障转移等机制来保证数据的高可用性。
它将数据分布在多个节点上,并实时备份数据到其他节点上,一旦某个节点发生故障,系统可以自动切换到备用节点,保证数据的连续性和可靠性。
此外,Tair还支持主从复制和多活架构,可以在不同地域之间实现数据的异地备份和容灾。
2.3 分布式架构Tair数据库采用了分布式架构,将数据分散存储在多个节点上。
这种架构可以通过增加节点数量来提高系统的整体处理能力,同时也提供了更好的负载均衡和容错能力。
Tair使用一致性哈希算法来进行数据分片和路由,确保数据在各个节点之间的均匀分布,并且能够快速定位到具体的节点。
3. 架构Tair数据库采用了主从复制和多活架构,在整体上分为三层:客户端、中间件和存储层。
3.1 客户端客户端是与用户直接交互的部分,它提供了一系列API供用户调用。
这些API包括数据读写、事务管理、索引操作等功能。
客户端可以通过网络连接到中间件,并发送请求给中间件执行。
3.2 中间件中间件是Tair数据库的核心组件,它负责接收客户端请求,并将其转发给存储层进行处理。
中间件还负责数据的分片和路由,将数据按照一致性哈希算法分配到不同的存储节点上。
tair 方法
Tair是一种开源的分布式缓存系统,它提供了高可用、高性能的缓存服务,主要用于提高系统的性能和稳定性。
以下是使用Tair的常见方法:
1. 数据存储:Tair提供了多种存储引擎,如MDB、FDB等,可以根据实际需求选择合适的存储引擎。
使用Tair可以缓存常用的数据和热点数据,减
少对数据库的访问次数,提高系统的响应速度和吞吐量。
2. 数据同步:Tair支持多级缓存同步,可以将数据同步到多个节点或多个机房,保证数据的一致性和可靠性。
通过数据同步,可以在多个节点之间分担负载,提高系统的可用性和容错性。
3. 数据过期:Tair支持设置数据的过期时间,过期后数据会自动删除或失效。
通过设置合理的过期时间,可以避免缓存雪崩和热点问题,保证系统的稳定性和可靠性。
4. 数据备份:Tair支持配置数据的备份数,可以设置备份数为3,则每个数据都会写在不同的3台机器上。
这样可以增强数据的安全性,避免单点故障和数据丢失。
5. 数据压缩:Tair支持对数据进行压缩存储,可以减少存储空间和提高数据的加载速度。
通过数据压缩,可以降低缓存的容量和带宽消耗,提高系统的性能和效率。
6. 数据监控:Tair提供了丰富的监控工具和日志记录功能,可以实时监控缓存系统的运行状态和数据访问情况。
通过数据监控,可以及时发现和解决潜在的问题,保证系统的正常运行。
总之,使用Tair可以提高系统的性能和稳定性,减少对数据库的访问次数和带宽消耗,降低系统的成本和维护成本。
tair同源对比使用流程英文回答:流程:1. Identify the target and reference Tair instances:Determine the Tair instances that need to be compared.Ensure that the instances are up-to-date and have the same data structure.2. Create a comparison tool:Use a tool or script that can compare the data in the two Tair instances.Some popular tools include Redis Sentinel and Redis Cluster Manager.3. Configure the comparison tool:Specify the target and reference Tair instances.Define the comparison parameters, such as keys, values, and expiration times.4. Run the comparison:Execute the comparison tool to analyze the data in both instances.The tool will identify any differences between the two Tair instances.5. Analyze the results:Review the comparison results to determine the extent and location of the discrepancies.Identify the cause of any differences (e.g., datacorruption, configuration errors).6. Take corrective actions:Based on the analysis, take appropriate actions to resolve any differences.This may involve updating the data, reconfiguring the instances, or repairing any underlying issues.Best practices:Use a reliable comparison tool to ensure accuracy.Perform regular comparisons to proactively identify any discrepancies.Document the comparison process and results for future reference.Always back up the Tair instances before making any significant changes.中文回答:流程:1. 确定目标和参考 Tair 实例:确定需要比较的 Tair 实例。
Ehcache/Redis/Tair缓存性能对比后面介绍的不同方式都有测试数据,这些测试数据都是在同一的测试环境下得出的测试结果:测试机器的配置如下:64位5核CPU, E5620 @ 2.40GHz,内存8GCDN端缓存由于计数器的价值并不在,具体的值是多少,尤其是对一些大访问量的商品来说个位或者十位的数据并没有什么意义,所以对这些热门商品的计数器访问可以采用定时更新的办法,可以将计数器的值直接缓存在CDN上或者后端Nginx的缓存中,定时再到数据库服务器上获取最新的计数器的值,这样能够大量减少对后端服务器的访问请求,而且计数器的数据量很小对缓存服务器的空间需求也不大。
改进的结构图如下:直接在Nginx中利用Cache策略缓存住热门计数器的值,利用http协议的cache+max age来失效缓存的方式更新计数器的值。
优点:实现方式简单,改动小,能够挡住热门商品的计数器访问请求,采用这种方式对查询请求来说,能达到类似于静态服务器的性能,如Nginx能达到2w的QPS缺点:没有解决同一商品的计数器合并请求的问题,数据量会增大一倍对更新请求没有办法缓存,只能减少查询请求的压力基于Java的存储方式由于目前采用Nginx模块的方法开发,每次修改要重新编译Nginx服务器,所以想采用基于Java的方式,使得维护要容易一些。
选用Ehcache作为数据存储服务器,Ehcache也是基于内存存储,支持定时持久化功能,非常适合存储像计数器这种小数据类型。
处理Http请求使用Tomcat容器,结构图如下:处理逻辑采用一个servlet实现,并且在这个servlet中通过一致性Hash从Ehcache中获取计数器值。
在实际的部署结构中,可以将Tomcat和Ehcache部署在同一台机器上。
基于这种模式的测试结果如下:Qps能达到1.3w左右,性能瓶颈是在Tomcat处理Http连接的请求上,Tomcat较Apache和Nginx处理请求性能较差。
tair数据库的介绍和描述Tair数据库,全名为Tair(淘宝内部实时存储系统),是阿里巴巴集团自主研发的一款高性能、可伸缩的分布式实时存储系统。
作为阿里巴巴内部存储系统的核心组件之一,Tair数据库被广泛应用于阿里巴巴旗下的电商平台以及其他金融、物流和云计算等领域。
Tair数据库以提供高性能、高可用性、高扩展性和高一致性为目标,通过将数据进行切片和分布式存储,实现了分布式读写能力,同时提供了自动数据缓存、事务支持、复制机制和数据一致性保证。
Tair数据库具备高性能的特点。
它在读写性能上有着很强的表现,能够支持高并发的读写请求,满足用户在大规模电商平台上的实时存储需求。
Tair数据库采用了数据切片和分布式存储的方式,将数据分散存储在多个节点上,并通过一致性哈希算法进行数据的路由和查找,从而提高了数据的访问效率。
Tair数据库具备高可用性的特点。
在构建Tair数据库的分布式存储系统时,阿里巴巴采用了主从复制机制,即每一个数据切片都会备份到多个节点上,当节点出现故障时,其他节点可以接管工作,保证整个系统的可用性。
此外,Tair数据库还支持数据的持久化存储,将数据写入磁盘,以防止数据丢失。
Tair数据库具备高扩展性的特点。
Tair数据库采用了分布式存储的架构,可以支持线性的扩展,即随着业务的增长,可以动态地添加新的节点,从而增加存储容量和吞吐量。
同时,Tair数据库还支持数据的自动切片和负载均衡,保证数据在多个节点上的平衡分布,确保整个系统的稳定性和可扩展性。
Tair数据库具备高一致性的特点。
在多个节点之间进行数据复制时,Tair数据库采用了基于Paxos算法的一致性协议,保证了数据的强一致性。
当进行写操作时,Tair数据库会进行数据同步和复制,只有在多个节点上的数据一致后,才会返回写操作的成功标识,这样可以保证数据的完整性和一致性。
除了以上的特点之外,Tair数据库还提供了丰富的功能和API接口,支持事务操作、数据缓存、数据回滚、数据备份和恢复等功能,满足了不同业务场景的需求。
Tair简介tair 是淘宝⾃⼰开发的⼀个分布式 key/value 存储引擎. tair 分为持久化和⾮持久化两种使⽤⽅式. ⾮持久化的 tair可以看成是⼀个分布式缓存. 持久化的 tair 将数据存放于磁盘中. 为了解决磁盘损坏导致数据丢失, tair 可以配置数据的备份数⽬,tair ⾃动将⼀份数据的不同备份放到不同的主机上, 当有主机发⽣异常, ⽆法正常提供服务的时候, 其于的备份会继续提供服务.tair 的总体结构tair 作为⼀个分布式系统, 是由⼀个中⼼控制节点和⼀系列的服务节点组成. 我们称中⼼控制节点为config server.服务节点是data server. config server 负责管理所有的data server, 维护data server的状态信息.data server 对外提供各种数据服务, 并以⼼跳的形式将⾃⾝状况汇报给config server. config server是控制点,⽽且是单点, ⽬前采⽤⼀主⼀备的形式来保证其可靠性. 所有的 data server 地位都是等价的.tair 的负载均衡算法是什么tair 的分布采⽤的是⼀致性哈希算法, 对于所有的key, 分到Q个桶中, 桶是负载均衡和数据迁移的基本单位. config server根据⼀定的策略把每个桶指派到不同的data server上. 因为数据按照key做hash算法, 所以可以认为每个桶中的数据基本是平衡的.保证了桶分布的均衡性, 就保证了数据分布的均衡性.增加或者减少data server的时候会发⽣什么当有某台data server故障不可⽤的时候, config server会发现这个情况, configserver负责重新计算⼀张新的桶在data server上的分布表, 将原来由故障机器服务的桶的访问重新指派到其它的data server中.这个时候, 可能会发⽣数据的迁移. ⽐如原来由data server A负责的桶, 在新表中需要由 B负责. ⽽B上并没有该桶的数据,那么就将数据迁移到B上来. 同时config server会发现哪些桶的备份数⽬减少了, 然后根据负载情况在负载较低的dataserver上增加这些桶的备份. 当系统增加data server的时候, config server根据负载, 协调data server将他们控制的部分桶迁移到新的data server上. 迁移完成后调整路由. 当然, 系统中可能出现减少了某些dataserver 同时增加另外的⼀些data server. 处理原理同上. 每次路由的变更, configserver都会将新的配置信息推给data server. 在客户端访问data server的时候, 会发送客户端缓存的路由表的版本号.如果data server发现客户端的版本号过旧, 则会通知客户端去config server取⼀次新的路由表.如果客户端访问某台dataserver 发⽣了不可达的情况(该 data server可能宕机了), 客户端会主动去config server取新的路由表.发⽣迁移的时候data server如何对外提供服务当迁移发⽣的时候, 我们举个例⼦, 假设data server A 要把桶 3,4,5 迁移给data server B. 因为迁移完成前,客户端的路由表没有变化, 客户端对 3, 4, 5 的访问请求都会路由到A. 现在假设 3还没迁移, 4正在迁移中, 5已经迁移完成.那么如果是对3的访问, 则没什么特别, 跟以前⼀样. 如果是对5的访问, 则A会把该请求转发给B,并且将B的返回结果返回给客户,如果是对4的访问, 在A处理, 同时如果是对4的修改操作, 会记录修改log.当桶4迁移完成的时候, 还要把log发送到B,在B上应⽤这些log. 最终A B上对于桶4来说, 数据完全⼀致才是真正的迁移完成. 当然, 如果是因为某dataserver宕机⽽引发的迁移, 客户端会收到⼀张中间临时状态的分配表. 这张表中, 把宕机的data server所负责的桶临时指派给有其备份data server来处理. 这个时候, 服务是可⽤的, 但是负载可能不均衡. 当迁移完成之后,才能重新达到⼀个新的负载均衡的状态.桶在data server上分布时候的策略程序提供了两种⽣成分配表的策略, ⼀种叫做负载均衡优先, ⼀种叫做位置安全优先: 我们先看负载优先策略. 当采⽤负载优先策略的时候,config server会尽量的把桶均匀的分布到各个data server上. 所谓尽量是指在不违背下⾯的原则的条件下尽量负载均衡. 1每个桶必须有COPY_COUNT份数据 2 ⼀个桶的各份数据不能在同⼀台主机上; 位置安全优先原则是说, 在不违背上⾯两个原则的条件下,还要满⾜位置安全条件, 然后再考虑负载均衡. 位置信息的获取是通过 _pos_mask(参见安装部署⽂档中关于配置项的解释) 计算得到.⼀般我们通过控制 _pos_mask 来使得不同的机房具有不同的位置信息. 那么在位置安全优先的时候, 必须被满⾜的条件要增加⼀条,⼀个桶的各份数据不能都位于相同的⼀个位置(不在同⼀个机房). 这⾥有⼀个问题, 假如只有两个机房, 机房1中有100台data server,机房2中只有1台data server. 这个时候, 机房2中data server的压⼒必然会⾮常⼤. 于是这⾥产⽣了⼀个控制参数_build_diff_ratio(参见安装部署⽂档). 当机房差异⽐率⼤于这个配置值时, config server也不再build新表.机房差异⽐率是如何计出来的呢? ⾸先找到机器最多的机房, 不妨设使RA, data server数量是SA. 那么其余的dataserver的数量记做SB. 则机房差异⽐率=|SA – SB|/SA. 因为⼀般我们线上系统配置的COPY_COUNT是3. 在这个情况下,不妨设只有两个机房RA和RB, 那么两个机房什么样的data server数量是均衡的范围呢? 当差异⽐率⼩于0.5的时候是可以做到各台data server负载都完全均衡的.这⾥有⼀点要注意, 假设RA机房有机器6台,RB有机器3台. 那么差异⽐率 =6 – 3 / 6 = 0.5. 这个时候如果进⾏扩容, 在机房A增加⼀台data server, 扩容后的差异⽐率 = 7– 3 / 7 =0.57. 也就是说, 只在机器数多的机房增加data server会扩⼤差异⽐率.如果我们的_build_diff_ratio配置值是0.5. 那么进⾏这种扩容后, config server会拒绝再继续build新表.tair 的⼀致性和可靠性问题分布式系统中的可靠性和⼀致性是⽆法同时保证的, 因为我们必须允许⽹络错误的发⽣. tair 采⽤复制技术来提⾼可靠性,并且为了提⾼效率做了⼀些优化, 事实上在没有错误发⽣的时候, tair 提供的是⼀种强⼀致性.但是在有data server发⽣故障的时候,客户有可能在⼀定时间窗⼝内读不到最新的数据. 甚⾄发⽣最新数据丢失的情况.tair提供的客户端tair 的server端是C++写的, 因为server和客户端之间使⽤socket通信,理论上只要可以实现socket操作的语⾔都可以直接实现成tair客户端. ⽬前实际提供的客户端有java 和 C++.客户端只需要知道config server的位置信息就可以享受tair集群提供的服务了.主要的性能数据待补充1. Tair总述1.1 系统架构⼀个Tair集群主要包括3个必选模块:configserver、dataserver和client,⼀个可选模块:invalidserver。
redisson trysetrate 和setrate方法Redisson是一个基于Redis的分布式Java对象和服务库。
它提供了一些方便的方法来操作和管理Redis实例。
在Redisson库中,`trySetRate`和`setRate`方法都是用来设置限流器的速率值的。
`trySetRate`方法尝试设置限流器的速率值,如果成功则返回`true`,如果限流器已经有一个速率值,则返回`false`。
该方法可以用于在多个线程中竞争设置速率值时,如果其中一个线程成功设置了速率值,其他线程将不会再设置。
```javaRLRateLimiter rateLimiter =redisson.getRateLimiter("myRateLimiter");boolean isSet = rateLimiter.trySetRate(RateType.OVERALL, 10, 1, RateIntervalUnit.SECONDS);````setRate`方法用于设置限流器的速率值,如果限流器已经有一个速率值,则会更新为新的速率值。
```javaRLRateLimiter rateLimiter =redisson.getRateLimiter("myRateLimiter");rateLimiter.setRate(RateType.OVERALL, 10, 1, RateIntervalUnit.SECONDS);```这两个方法都需要通过传入`RateType`表示要设置的速率类型,例如`RateType.OVERALL`表示设置整体速率,`RateType.PER_CLIENT`表示设置每个客户端的速率等等。
除了速率类型,还需要指定速率值和速率间隔单位。
需要注意的是,以上示例中的`redisson`对象是指从RedissonClient实例获取的,实际使用时需要根据实际情况进行初始化。
1. Tair总述
1.1 系统架构
一个Tair集群主要包括3个必选模块:configserver、dataserver和client,一个可选模块:invalidserver。
通常情况下,一个集群中包含2台configserver及多台dataServer。
两台configserver互为主备并通过维护和dataserver之间的心跳获知集群中存活可用的dataserver,构建数据在集群中的分布信息(对照表)。
dataserver负责数据的存储,并按照configserver的指示完成数据的复制和迁移工作。
client在启动的时候,从configserver获取数据分布信息,根据数据分布信息和相应的dataserver交互完成用户的请求。
invalidserver主要负责对等集群的删除和隐藏操作,保证对等集群的数据一致。
从架构上看,configserver的角色类似于传统应用系统的中心节点,整个集群服务依赖于configserver的正常工作。
但实际上相对来说,tair的configserver是非常轻量级的,当正在工作的服务器宕机的时候另外一台会在秒级别时间内自动接管。
而且,如果出现两台服务器同时宕机的最恶劣情况,只要应用服务器没有新的变化, tair依然服务正常。
而有了configserver这个中心节点,带来的好处就是应用在使用的时候只需要配置configserver的地址(现在可以直接配置Diamond key),而不需要知道内部节点的情况。
1.1.1 ConfigServer的功能
1) 通过维护和dataserver心跳来获知集群中存活节点的信息
2) 根据存活节点的信息来构建数据在集群中的分布表。
3) 提供数据分布表的查询服务。
4) 调度dataserver之间的数据迁移、复制。
1.1.2 DataServer的功能
1) 提供存储引擎
2) 接受client的put/get/remove等操作
3) 执行数据迁移,复制等
4) 插件:在接受请求的时候处理一些自定义功能
5) 访问统计
1.1.3 InvalidServer的功能
1) 接收来自client的invalid/hide等请求后,对属于同一组的集群(双机房独立集群部署方式)做delete/hide操作,保证同一组集群的一致。
2) 集群断网之后的,脏数据清理。
3) 访问统计。
1.1.4 client的功能
1) 在应用端提供访问Tair集群的接口。
2) 更新并缓存数据分布表和invalidserver地址等。
3) LocalCache,避免过热数据访问影响tair集群服务。
4) 流控
2.tair的使用场景
2.1 tair 的使用场景
2.1.1 Tair缓存使用的场景
1.数据可以以key/value的形式存储
2.数据可以接受丢失
3.访问速度要求很高
4.单个数据大小不是很大,一般在KB级别
5.数据量很大,并且有较大的增长可能性
6.数据更新不频繁
2.1.2 Tair持久化适用的场景
1.数据可以以key/value的形式存储
2.数据需要持久化
3.数据量很大,并且有较大的增长可能性
4.单个数据大小不是很大,一般在KB级别
5.数据的读写比例较高
2.2 不适Tair用的场景
1.对数据有查询需求,比如对key的模糊查询,或者根据value反查询key等
2.单条数据很大
3.读写比例很低
3.tair与redis关系
3.1 功能对比
3.2 关系总结
tair及redis集成关系:Tair是淘宝开源的分布式KV缓存系统,内部将功能模块化,抽离出底层存储细节,可以接入不同的存储引擎。
redis是一个开源的、高效的key-value存储,提供了strings、hashs、lists、sets、sorted sets等多种高级数据结构。
redis作为Tair的存储引擎接入,称为rdb,rdb从redis 继承了丰富的操作,包括list、hash、sorted set、set(与mdb相比,list不再那么ugly)。
总结:rdb:是tair集成从redis继承了丰富的操作,包括list、hash、sorted set、set(与mdb相比,list不再那么ugly),Tair将Redis的存储部分抽离出来,作为非持久化的存储引擎rdb(目前代码里面没有rdb代码,即没有开源);
4 tair与redis集群管理
4.1 redis集群介绍
首先增加一个代理端,作用是检测处理应用请求,如果是读代理会尝试在tair及redis两个系统查找数据,返回给应用;如果是写数据代理直接将数据写入tair。
4.1.1 目前readis系统
4.1.2 redis目前测试版本的结构
4.2 tair 目前现状
4.2.1 tair支持的集群一个机房
支持副本,管理结点是主从,数据结点是多个,不同数据结点之间没有主从关系,有副本。
4.2.2 tair双机房单集群单份
双机房单集群单备份数是指,该Tair集群部署在两个机房中(也就是该Tair集群的机器分别在两个机房),数据存储份数为1,该类型集群部署示意图如下所示。
数据服务器(Dataserver)分布在两个机房中,他们都属于同一集群
4.2.3 双机房独立集群是指,在两个机房中同时部署2个独立的Tair集群,这两个集群没有直接关系。
下图是一个典型的双机房独立集部署示意图,可以看到,cm3和cm4各有一个完整的tair集群(2个configserver+多个dataserver)。
图中还多了一个invalidserver的角色, invalidserver接收客户端的invalid或者hide请求后,会对各机房内的集群进行delete或者hide操作,以此保障Tair中的数据和后端数据源保持一致的。
4.2.3 双机房单集群双份
双机房单集群双份,是指一个Tair集群部署在2个机房中,数据保存2份,并且同一数据的2个备份不会放在同一个数据服务器上。
根据数据分布策略的不同,还可以将同一份数据的不同备份分布到不同的机房上。
该类型的集群部署方式与双机房单集群单份数据的部署方式一样。
其不同之处,数据保存份数不一样。
该类型集群部署方式示意图如下图所示,数据服务器分别部署在两个不同的机房里,所有的数据服务器都被相同的配置服务器管理,在逻辑上,他们构成一个独立的集群。
4.2.4 双机房主备集群
这种部署方式中,存在一个主集群和一个备份集群,分别在两个机房中。
如下图所示,不妨假设CM3中部署的是主集群,CM4中部署的是备份集群。
那么,在正常情况下,用户只使用主集群,读写数据都与主集群交互。
主备集群会自动同步数据(不需要业务去更新两边),保证两个机房数据的最终一致性。
当一个机房发生故障后,备集群会自动切换成主集群,提供服务,保证系统可用性。
5 tair与redis比较总结
5.1 tair优势
a.在分布式集群支持方面tair支持副本,支持多种集群结构,如:一机房一个集群、双
机房单集群单份、双机房独立集群、双机房单集群双份、双机房主备集群;
b.对于读写性能根据结点添加对线性上升,原因是各个结点之间是没有关系,节点
增多相应性能提升。
c.高可用比较强,任何小于副本数结点挂掉,不会影响正常业务。
e.淘宝在多个实际应用场景应用,满足不同业务需求。
F.支持跨机房数据分布。
5.2 tair弱势
a.在单节点的性能比较方面,redis是性能比tair高大概1/5
b.redis目前研究人员比较少,社区不是很活跃。
5.3 redis优势
a.在单节点的性能比较方面,redis是性能比tair高大概1/5
b.redis目前研究人员比较多,社区比较活跃。
c.在支持多种数据结构方面tair没有redis支持的全面。
5.4 redis弱势
a.目前发布版不支持分布式,测试版支持,测试版对分布式支持比较弱,是用主备
支持高可能,没有副本。
b.容灾性相比tair弱,原因是redis的分布式不支持多副本。