摘要: Redis 是开源的基于内存且可以持久化的分布式 Key Value 数据库自 2009 年发布最初版本以来, Redis 的热度只增不减, 除了经常位居 DB-Engines 的最受欢迎 Key-Value 数据库榜首之外, 看阿里云技术总监为您深度解读云数据库 Redis
为何 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 理论已经被 PaxosRaft 等算法打破, 即可以同时实现强一致高可用和高容错, 这也被视为 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 moduleRedis 热 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, 企业将无法从容应对大规模增长的数据, 多维模型聚合大数据计算物联网应用机器学习实践等等新场景都会非常艰难随着未来不断发展演进, 各类数据库或许会逐渐融合为一, 那时我们只需要在线插件式的方法, 根据不同业务需求选用即可
来源: http://geek.csdn.net/news/detail/254062