企业打开Redis的正确方式,来自阿里云云数据库团队的解读

发表时间:2018-02-28

摘要: Redis是开源的基于内存且可以持久化的分布式 Key – Value数据库。自2009年发布最初版本以来,Redis的热度只增不减,除了经常位居DB-Engines的最受欢迎Key-Value数据库榜首之外,看阿里云技术总监为您深度解读云数据库Redis。

点此查看原文:http://click.aliyun.com/m/41902/

为何Redis成为数据库能成为后起之秀?

数据库技术积累近半个世纪,然而随着新时代场景增多、业务发展,传统数据库面临着很多压力。数据开始初现规模,企业需要多套HA集群数据库,SQL和NoSQL Key Value混合使用,并且开始使用监控系统。而更加复杂的情况下,每个业务都需要各自特定的数据库架构和优化方案,需要加入OLAP 、离线分析任务,并且考虑高速扩展、高性能、高可靠等问题。

Redis是开源的基于内存且可以持久化的分布式 Key – Value数据库。自2009年发布最初版本以来,Redis的热度只增不减,除了经常位居DB-Engines的最受欢迎Key-Value数据库榜首之外,也在多家调查报告中成为非常受喜爱的NoSQL数据库。

Redis作为NoSQL的代表之一,为什么会在历史悠久的数据库领域中迸发出此般活力?

阿里云云数据库技术总监蔡松露认为:相比与强一致性的SQL关系型数据库,NoSQL非关系型数据库具备高性能、高灵活性。在当今的互联网时代,如新金融、新零售、视频直播、人工智能、IoT等多样化的业务场景有了更严苛更不同的技术诉求。其次,擅长OLTP查询的SQL并不完美地满足猛增的OLAP分析需求。最后,数据库行业一直信奉的CAP理论已经被Paxos、Raft等算法打破,即可以同时实现强一致、高可用和高容错,这也被视为NoSQL运动兴起的重大原因之一。

“一切坚固的东西,都烟消云散了”。 Redis能让数据库运行在内存中,比闪存盘快1000倍。

开源Redis有哪些不足?

其实,开源项目和企业产品,有着完全不同的定位。开源Redis项目最大的原则是简单可靠,但是云产品则需要满足很多企业诉求如多地容灾、安全加密、升级与优化、集群兼容性等等。

阿里云云数据库团队一直积极参与Redis开源社区的共建:在Redis 创始人 Salvatore之后,对社区代码贡献第二的就是阿里云云数据库团队;去年十月,阿里云云数据库还将自研的特性如短连接性能提升30%、支持热升级、兼容Memcache等融合到ApsaraCache项目中并贡献给开源社区,对此Salvatore表示“ApsaraCache 项目开源是一件非常好的事情,将能够吸引全世界更多 Redis 核心专家参与,进一步提升产品的稳定性和可用性。”

在每个企业级的需求背后,团队都做了巨大的研发工作。举例说明,集群高兼容性和无缝扩容以满足实际生产需求;在集群热升级时做到使用无感知且业务不受影响;提供安全加密功能满足如金融对保密级别要求高的客户等等。

工业级使用,没有什么是小事儿

目前,90%的中国互联网公司都依靠Redis支撑用户的高并发访问,而80%的中国视频直播网站都使用的阿里云云数据库 Redis 版。

与开源Redis项目相比,兼容Redis协议标准的阿里云云数据库 Redis 版有哪些优势?

Figure 1阿里云基于开源Redis的企业级需求技术支持

作为为企业服务的云产品,仅仅提供酷炫的功能并不足够,更需要的是可靠、性能、安全和易用方面的保障和承诺。对于阿里云云数据库团队而言,很多改进都是在各种客户场景需求下不断打磨而成,比如:双机热备、持久化、同城容灾;支持集群版、高性能硬件、基于Binglog模式复制免除pfork;VPC网络、强密码认证、DDoS攻击、SSL加密;性能监控、阈值报警、高频操作、数据管理等。

容灾是必不可少的部分,Redis原生的AOF可以帮助同一机房网络相应可达情况下的容灾,但是对于链路过长跨城甚至存在跨时区机房时,而需要远程异地同步。有些企业对可用性要求极高,每个单元都须承担流量,允许N-1个机房断电;为此,团队设计了服务单元化+数据中心的拓扑模式,并相应地进行内核改造从而具备独特的容灾能力。

Figure 2:Redis异地多活架构方案示意图

每个行业都会有各自场景需求。以游戏行业为例,如斗地主等房间模式需要做到随时开服,这就需要基于时间点用户备份做到瞬间克隆实例;而对于参加人数会猛增的游戏,需要在疯狂灌人时逐步增大配置以做到资源合理高效利用,比如从标准版一键升级到极致版需要秒级迁移用户数并且做到服务不收影响;在游戏低峰收尾业务时多服合并,即将多个服务数据库汇总到一个再做实时降级。同时,还要云上云下数据打通,数据归档快速回滚,做到时间点或局部恢复。

而对于视频直播行业,瞬间大量用户涌入的场景非常需要快速存储、快速响应,基于朋友关系的送礼物、讨论评论等大部分数据操作都适合非关系型数据库,而仅有充值等少量场景需要关系性数据库,因此重度依赖Redis数据库,相应地则有“稳定性高于一切、低内存高QPS、连接数较大”的技术要求。相应地,阿里云出台的视频直播方案具备连接数可普调至1-2w、带宽可单独调配及至万兆, 集群支持热点key,读写分离等

此外,民生类的行业又会分为极高QPS,热升、无缝扩容的新闻类,容灾、多活的交通类,容灾、数据安全的金融类,根据各种场景给出响应的优化方案。

关于阿里云Redis 4.0云数据库增强版的一些细节

阿里云云数据库Redis版发布的增强版具有多线程架构、内存压缩算法优化、key后台删除功能、Redis module、Redis热key统计等特点,尤其值得一提的是该款产品通过创新的Redis module让数据库第一次有了“集装箱货轮”的能力。

Figure 3:Redis module让数据库拥有“集装箱”能力

一般而言,传统的单核CPU需要承担30%计算和60%网络的工作负载,而当采用多核处理之后,可以将计算、网络任务分别交给若干个CPU并将性能提高三倍,从根本上解决问题从而高并发任务量。同时,还通过创新的内存压缩算法,将数据量压缩50%。

热key统计是为了解决热点事件时大流量请求集中落在某些分片中,到达物理网卡上线,缓存分片服务被打垮,缓存击穿请求‘穿透’引起‘雪崩’的问题。常见的方法是结合使用服务端缓存、Memcache等,但是需要提前获知热点、缓存容量依然有限、增长不一致时间且热点key遗漏等。目前,受益于读写分离架构,搭配负载均衡、读写分离自动路由和各节点高可用等,增加服务端能力高效快速发现热点数据,从而应对热key困境。

Redis未完,NewSQL待续

阿里云云数据库 Redis 版兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构、可无缝扩展的集群架构以及读写分离架构,满足高读写性能场景及容量需弹性变配的业务需求。

关于非关系型数据库,阿里云还有可根据不同场景切换引擎的MongoDB 3.4、首个全托管的DBaaS服务HBase 1.1,与开源社区版本相比,前者高连接数下并发提升10倍、短链接并发提升5倍,后者支持本地盘成本下降90%、整体性能提升3倍。

Figure 4:阿里云拥有全球最完善的NewSQL云数据库家族

没有NewSQL,企业将无法从容应对大规模增长的数据,多维模型、聚合、大数据计算、物联网应用、机器学习实践等等新场景都会非常艰难。随着未来不断发展演进,各类数据库或许会逐渐融合为一,那时我们只需要在线插件式的方法,根据不同业务需求选用即可。