“百变”Redis带你见识不同场景下的产品技术架构

  • 时间:
  • 浏览:1
  • 来源:uu快3开奖_uu快3娱乐_输钱

多活业务设计的要点有自中含性、松耦合性和路由规则一致性,即多活业务设计的所有计算与数据需要在另一个多多多 中心内完成;跨单元之间并能进行服务调用,并能直接访问数据库或什么都有有存储;路由需也不入口路由很久微服务调用路由。



对于存储层而言,磁盘上的存储是跟阿里巴巴的服务器研发团队共建的另一个多多多 用户态的存储引擎,称为FusionEngine。它是由业务定制另一个多多多 RocksDB,或者 通过底层的另一个多多多 用户固态的文件系统来缩短用户的IO路径,进而处理了内核的开销。在业务场景后边,FusionEngine的性能比过去的文件系统性能提升了约150%左右,或者 整体的Redis混合存储性能也得到了有效的提升。



如上图所示,Redis线程性能增强版是由主线程、多个IO线程和WORKER线程组成,主线程主要负责接受连接,创建client,将连接转发给IO线程。IO线程负责处理连接的读写事件,解析命令,将解析的完整命令转发给WORKER线程处理,发送response包,负责删除连接等;WORKER线程负责命令的处理,生成客户端回包,定时器事件的执行等。

线程在运行过程中总会遇到各种各样的难题,类式线程bug、机器故障、机房断电起火故障等,业务上要求存在什么故障需要保证数据一致性和业务可用性,什么都有需要了架构演练之路,即单可用区-同城容灾-两地三中心-异地多活。

很久单可用区架构无法应对机房总出 故障,需要了同城容灾的架构。同城容灾架构很久无法应对地域级别的难题,接着需要了两地三中心架构。很久什么都有有金融业务要求数据存储在不同的地域中,一同对故障恢复时间有要求,或者 两地三中心架构就在同城容灾基础再加了另一个多多多 standby中心,但依旧存在几个 缺陷,即冷备中心不工作,关键时刻不敢切的缺陷;冷备中心不工作,成本浪费的缺陷;本质上数据仍然单点写,数据库瓶颈无法解的缺陷;资源、容灾、扩展无法处理的缺陷。

很久有了异地多活架构,它是指所有的中心都提供业务服务,底层的数据并能相互同步,或者 存在着什么都有有优点,类式,所有中心工作,切换有保障;所有中心工作,成本低;弹性伸缩,增加/减少中心个数;故障独立性意味着 中心不可用时,只影响每种用户。

Redis线程性能增强版主要应用在电商类应用、直播类应用中,对于电商类应用而言,适用于秒杀场景和库存计数;对于直播类应用而言,主要适用于热点直播间和明星大V的直播。

Redis混合存储实例是阿里云自主研发的完整兼容Redis协议和形状的混合存储产品。通过将每种冷数据存储到磁盘,在保证绝大每种访问性能不下降的基础上,大大降低了用户成本,并突破了内存对Redis单实例数据量的限制。



异地多活产品具有高可用、高性能、数据最终一致以及功能雄厚的形状,具体介绍如下:

Redis线程并需要在所有的场景中都适用,Redis线程只适用于主从版无法满足性能需求时、集群版shard节点成为性能瓶颈时、读写分离版本有热写瓶时以及同步延迟等难题时。

2018飞天技术汇24期-云数据库Redis产品发布会,由阿里云数据库技术组技术专家王欢、怀听、梁盼分别带来以“Redis全球多活产品”、“Redis混合存储产品”、“Redis线程性能增强版”为题的演讲。本文对Redis进行了简单的介绍,进而针对不同的应用场景研制出不同的产品,并对不同产品分别进行了完整地介绍。

数十款阿里云产品限时折扣中,赶快点击这里,领券结速英文英文云上实践吧!

直播视频回顾PPT下载地址(云痕)(怀听)(梁盼)

Redis线程性能增强版突破了Redis单线程的性能瓶颈,且1150%兼容原生Redis,业务不让修改任何代码。通过将命令解析,读写,响应等事件埋点给多个IO线程并发处理,实现处理性能质的飞跃。

异地多活产品架构图如上图所示,它是由云数据库Redis版实例、同步通道和通道管理器三每种组成。很久异地多活是由多个Redis实例组成,或者 可需要实现每个子实例之间实时数据同步、每个子实例数据最终一致、每个子实例均可读写等功能。

原生的Redis是进行串行处理的,当它接收到另一个多多多 请求时,会尝试连接读取到一每种数据,并对这每种数据进行解析,很久解析到另一个多多多 完整的数据,就会对有某种数据进行处理。当有某种数据处理完很久,会生成对数据的另一个多多多 响应,针对有某种响应在发送给客户端。原生的Redis存在另一个多多多 缺陷,什么都有并能做到并发。相对而言,Redis线程做的另一个多多多 Master-Slave架构就并能做到并发,它是将Master数据处理完很久,将数据同步到Slave上。

在线程间数据在进行交换的过程中,另一个多多多 IO线程在获取到连接很久,就结速英文英文尝试在有某种连接上读取请求,或者 对请求做另一个多多多 解析,若解析到是另一个多多多 完整的请求,就会将请求倒入队列后边。接着,IO线程通知WORKER线程有新的命令需要处理,有某种通知是通过管道来进行的。最后,WORKER线程接受到命令后就会对其进行处理,处理完很久会形成对命令的响应,并将响应倒入队列后边,同样,WORKER线程也会通知IO线程。



Redis混合存储产品应用的场景中含电商类应用、直播类应用、互联网类应用,对于电商类应用而言,它的活跃商品数据存倒入内存中,冷门商品数据存倒入磁盘中;对于直播类应用而言,它的活跃直播间和热门直播间的数据存倒入内存中,下线直播间和冷门直播间的数据存倒入磁盘中;对于互联网类应用而言,它的首页和热门贴数据存倒入内存中,冷门帖子存倒入磁盘中。



它的数据类型是将热数据存储在内存里,将冷数据存储在磁盘后边,顾名思义,热数据什么都有指频繁访问到的数据。很久所有的Redis总要访问到Keys,相对来说Keys的访问天生就比Values大什么都有有,或者 Redis混合存储产品是将所有的Keys、常访问的Values倒入内存里存储,而不老是访问的Values倒入磁盘里存储。在业务场景后边,Keys只占十几个 字节,但Values却占几百甚至几千个字节,什么都有将所有的Keys倒入内存里对整体性可需要够提高什么都有。

Redis混合存储产品的底层实线是支持冷热数据任意配比的,即可需要任意的匹配内存占用几个 和磁盘占用几个 ,进而在性能和成本上达到另一个多多多 平衡。在应用中,所有的数据量并能超过内存加磁盘的容量。此产品适用于Values比较大的场景,很久Values对性能的影响需要很大,什么都有也比较适合数据访问冷热不均的场景。目前混合存储开通的区域有华北2(北京)的可用区D、华东1(杭州)的可用区E、华南1(深圳)的可用区C。



其中,数据层进行冷热交换是为了保证兼容性,很久所有Redis的业务逻辑是采用主线程来处理的,所有实际的IO是由后台来运行的,进而什么都有会阻挡主线程的运行。在热数据转再加冷数据的过程中,数据量小于内存时,Redis混合存储会把所有的Keys和Values倒入内存后边,原本可需要达到性能最高。当数据量没有大时,内存里会总出 存不下的难题,这总要按照最近的访问频率筛选出什么都有有很少被访问到的Values,或者 由主线程生成IO任务,接着后台的IO线程拿到什么任务存储到磁盘中,最后主线会将什么Values释放掉。在冷数据转再加热数据的过程中,收到用户请求后,首先判断任务请求会访问到什么Values,或者 看什么Values不是需要内存后边,很久每种Values沒有,会对什么Values生成IO任务,或者 主线程将客户端挂起,接着继续处理其它客户端的请求,当此线程拿到什么任务后,会把数据从磁盘后边加载到内存后边,一同通知给主线程,主线程收到什么通知很久会将挂起的客户端唤醒继续处理什么都有有用户请求。

Redis全球多活产品是指多个Redis实例分布在全球不同的区域,它是阿里云自研、基于云数据库Redis版(ApsaraDB for Redis)、1150%兼容 Redis 协议的多活数据库系统。通过数据同步通道,把多个Redis实例组网成另一个多多多 逻辑上的 Redis 多活实例,多活实例内的所有实例均可读写并保持实时数据同步。数据同步通道通过内网打通,具有高可靠、高安全、低延迟的形状。子实例间通过CRDT(Conflict-free Replicated Data Type)机制检测并处理数据冲突,保障数据最终一致性。Redis全球多活产品轻松支持异地多个站点一同对外提供服务的业务场景,助力企业快速克隆技术阿里巴巴异地多活架构。

Redis 是另一个多多多 高性能的key-value数据库,Redis的优势有什么都有,类式,它的性能极高 ,Redis能读的下行速率 是1111500次/s,写的下行速率 是811150次/s ;它具有雄厚的数据类型,可支持二进制案例的 Strings、Lists、Hashes、Sets 及 Ordered Sets 数据类型操作;它的所有操作需要原子性的,意思什么都有须么成功执行要么失败完整不执行;它还具有雄厚的形状, 即支持 publish/subscribe、通知、key过期等等形状。

Redis 与什么都有有key - value 缓存产品有另一个多多多 一同特点:一是Redis支持数据的持久化,可需要将内存中的数据保存在磁盘中,重启的很久可需要再次加载进行使用;二是Redis不仅仅支持简单的key-value类型的数据,一同还提供list、set、zset、hash等数据形状的存储;三是Redis支持数据的备份,即master-slave模式的数据备份。

Redis与什么都有有key-value存储的不同点在于Redis有着更为冗杂的数据形状或者 提供对它们的原子性操作,这是另一个多多多 不同于什么都有有数据库的进化路径。Redis的数据类型需要基于基本数据形状的一同对线程员是透明的,不让进行额外的抽象。另外的另一个多多多 不同点在于Redis在内存中运行时可需要持久化到磁盘中,什么都有在对不同数据集进行高速读写需要要权衡内存,很久数据量并能大于硬件内存。或者 ,与磁盘上相同的冗杂数据形状相比,在内存中操作起来更为简单,原本Redis可需要做什么都有内内外部冗杂性很强的事情。一同,在磁盘格式方面它们是紧凑以追加的法律法律依据产生的,很久人们人们 不须需要进行随机访问。

IO线程很多,Redis线程的性能越好,或者 IO线程与Redis线程的性能并需要线性的,当IO线程达到一定的数量时,WORKER就会达到另一个多多多 瓶颈。或者 ,IO线程最多支持多达6个,默认具体情况下并能另一个多多多 IO线程。另外需要注意的是,线程数个数跟规格是绑定的,一旦选定实例创建完毕后无法动态修改,如需修改,就需要通过升级规格的法律法律依据完成。

在异地多活构架中,对Redis进行了aof binlog增加oplog和CRDT策略merge key的改造,其中aof binlog增加oplog中含有gtid和逻辑时钟信息,处理了循环同步、Exactly-once Apply的难题;CRDT策略merge key中处理了一致性的难题。

Redis混合存储架构如上图所示,从业务模型来看,人们人们 把Redis混合存储架构分为三层,第一层是计算层,它中含所有Redis的网络连接、协议解析、定时任务、命令处理、过期、淘汰、同步等业务逻辑;第二层是数据层,它中含热数据表示、冷热数据交换、冷数据编解码;第三层是存储层,它中含存储引擎、文件系统以及硬件管理。

异地多活业务具有不同的业务有不同的业务设计要求,它需要允什么都有有个地域具有一同修改同一份数据的功能,类式全局session、全局PV、用户收藏夹、购物车、地理位置信息、收藏夹、历史搜索记录、弹幕、评论等。一同,它还需要做数据切分,要求一份数据只允许有另一个多多多 写入点。