2018数据库直播大讲堂峰会Redis专场,来自阿里云高级产品专家王义成带来Redis助力游戏行业的相关演讲。主要从传统数据库的压力开始谈起,着重介绍了阿里云Redis产品架构以及不同的版本,接着对Redis服务能力进行了说明,最后对游戏、视频行业的应用作了介绍。
直播视频:https://yq.aliyun.com/video/play/1312
PDF下载:https://yq.aliyun.com/download/2449
以下是精彩视频内容整理:

传统数据库的压力

传统数据库服务模式复杂,账单交易数据存储在OLTP SQL数据库,服务关系图谱数据存储到NoSQL数据库,经常访问的数据存储在Key-Value缓存数据库,沉淀数据存储在OLAP数据仓库引擎,经过OLAP小型数仓会做一些在线实时处理分析,还会对长久性数据直接存储在大数据存储平台进行离线大数据分析,传统数据库服务模式中,每款数据库都是一个平台,一层一层推到另一个数据库引擎中。数据库整体演化过程如下:
企业发展之初,系统简易,只需要几个单点运行的数据库,只有SQL或NoSQL,此阶段只需要一个兼职DBA就可以搞定;

初现规模,随着数据库业务发展,传统数据库压力越来越大,系统架构逐渐复杂,多套HA集群数据库开始使用监控系统,一些业务需要Key-Value超缓存数据,SQL和NoSQL进行逐步分离,对于不同的业务模块开始拆分,对于NoSQL等其它类型数据库,我们会将其存储到标准的配置模式中,这是传统数据库发展一段之后演变的结果。

发展上升期,游戏、视频直播等行业需要多个项目,项目因而逐渐作拆分,每个项目存储不同类项的数据。每个业务会有一套单独数据库,架构相对比较复杂,DBA要求独挡一面,需要对每个项目部署、备份、优化以及技术和架构设计,因此需要一名专业顶尖的DBA帮助实现业务系统;

业务突破期,需要OLAP、离线分析等多种混合使用,业务更加复杂,还要做高速扩展,对稳定性、高性能方面提出很高要求,业务模式分为多项目,针对实时数据库仓储搭建大数据海量离线分析和实时BI分析平台,我们需要一个高质量的DBA团队,熟悉多种SQL运行引擎。

阿里云产品架构

阿里云已经构建了最全产品形态如图, 产品架构版本分为标准版、集群版和读写分离版。标准版是原生的Redis模式,适配于协议完全兼容,但Redis对于线程处理有本质限制,所以标准版理论QPS为8~10W;集群版有效的扩展写能力,提供多节点模式,把多节点组装成一个域名包装给用户,使集群版性能和容量提升;读写分离版有效扩展读能力,支持不同读节点模式帮助用户扩展整个集群读能力。
另外在存储模式上,我们构建了比较先进的产品体系,不同集群版本支持单副本、双副本不同模式,单副本适用于纯缓存业务要求,双副本帮助用户构建持久化,提供服务可靠性同时保证数据可靠性。读写分离版提供多副本版本,提供多重存储模式+读写分离配置。

标准版-单副本

在标准版单副本中,用户可以拿到一个产品域名写相应服务,通过SLB路由到底层真实数据节点,对于单副本模式只有单独进程,如果出现主机级别宕机,就会立即启动故障后拉起,保证30S内服务马上启动,底层为HA故障逻辑,实时探测主节点Redis进程是否真实有效,如果失效会立即切换,拉起空进程保证服务高可靠性。
标准版单副本适用协议敏感的场景,支持任何原生Redis协议,7W QPS的应用可以使用此版本,服务模式为纯缓存模式,兼容所有开源客户端。

标准版-双副本

标准版双副本模式与单副本模式主要区别为主备节点模式,主节点提供服务时,备节点实时与主节点同步数据,主备节点都会提供持久化功能,如果发生故障,主节点可以切换到备节点。
双副本适用于协议敏感、纯缓存,且业务宕机后,后端存储压力无法接受Redis宕机、缓存失效等情况。性能需求在8~10W QPS可以使用双副本,兼容所有开源客户端。

集群版-双副本

集群版双副本同样是暴露整体域名对用户访问,底层架构通过多个节点服务能力的叠加把数据库能力对外提升。可以看到,域名以下SLB、Proxy、底层节点、Configserver都整体包含在阿里云集群版架构服务之下,我们提供Proxy基本代理能力,Configserver存储数据分片具体模式,把数据节点分发到不同的DBnode节点中,从而达到整体性能提升。
集群版双副本适用数据量大、性能要求高的场景,性能要求达到100W QPS,访问方式上兼容所有开源客户端,提供单分片两副本存储,以及16~512G不同规格的服务。

集群版-单副本

集群版单副本与双副本只在DBnode节点层面有所区别,单副本如果宕机,业务会马上做相应切换,容易丢掉业务数据。单副本适用数据量大、性能要求比较高的场景,性能要求在100W QPS可使用,兼容所有开源客户端,单分片单副本数据缓存,提供16~512G规格服务。

读写分离

读写分离架构如图,用户通过ECS集群访问,通过SLB连接,底层Proxy会做数据路由,将写节点路由到主节点模式上去,从服务路由到相应的读节点上去,实现读写分离模式。读写分离适用读多写少、超大key、不要求强一致场景。它的优势是对用户透明,能力可线性扩展,支持所有指令。潜在问题是如果一主多从级联复制,会出现数据ms级别不一致问题。

服务能力

我们真正为用户提供了相应的整体用户解决方案,阿里云Redis与其它开源版本的区别主要体现在以下几个层面:

  1. A lot Binlog。开源Redis仅支持全量同步和全量备份,而阿里Redis断点续传、流式备份等增量变换模式。
  2. 安全加密。开源Redis仅支持密码访问,安全隔离差。阿里Redis有白名单和SSL加密。
  3. 集群兼容。开源Redis兼容性有限,需要指定相应的客户端,运维复杂。阿里Redis兼容性高,无缝扩容。
  4. 热升级。开源Redis在业务变更和业务中断时只能重启升级。阿里Redis可以进行Proxy热升级和Redis热升级。
  5. 多项优化。开源Redis存在不稳定性,雪崩和IO毛刺会经常遇见。阿里Redis提供短连接优化和IO优化。
    此外,阿里Redis在产品功能层面服务提升分为四大块:
  • 可靠性:提供双机热备模式、提供持久化模式、同城容灾和异地容灾。
  • 安全性:打通VPC网络,支持强密码认证,支持Ddos攻击防护和SSL加密。
  • 易用性:提供性能监控和阈值报警,还有高频操作验证和数据管理。
  • 性能:支持集群版和高性能硬件,基于Binlog模式复制,免除pfork。

独特的容灾能力

阿里云在服务能力层面提供独特的容灾能力,我们可以提供两机房跨region服务,内部使用BLS组件实时抽取源库端增量日志,经过流复制模式传输到异端机房,再实时写到另一个机房Redis中,作远程异地同步。
这适用于可用性要求极高、每个单元都能承担流量、允许N-1个机房断电的多活或双活场景,拓扑模式为服务单元化+数据中心模式,在内核层面作单元数据生产和消费。

行业特性

游戏

游戏行业整体服务模式分为四个:

  • 滚服:随时秒开服,一天多服。阿里云Redis支持基于一个时间点瞬间帮助用户克隆一个实例出来,可能分钟级别就会启动一个Redis。
  • 灌服:疯狂灌人,配置逐步增大。阿里云Redis提供从标准版配置一键升级到集群版配置。
  • 合服:业务收尾,多服合并。阿里云Redis提供把多个服务迁入到一个数据库中去,再进行实时降级。
  • 闪回:快速回滚,阿里云Redis提供基于时间点或局部快速恢复到原来某一时间点。
    目前,阿里云上的游戏客户遍布很多,包括陌陌游戏、畅游等,总结游戏行业解决方案主要有三点:克隆实例、数据校验,数据归档快速回滚和云上云下数据打通。

视频直播

对于快速瞬间用户涌入、大量同时在线模式非常适合使用Redis,传统视频直播类行业有很多信息都需要存储在Redis中,比如朋友关系、送礼物和评论,或者抢红包类的好友互动,都大量的使用Redis,视频直播行业的Redis数据库操作远远大于关系型数据库,该行业的稳定性高于一切,内存可能很小但QPS很高,连接数要求较大。
针对视频直播行业的特性,阿里云也做了相应的解决方案。包括连接数放开,阿里云将Redis连接数普调至1~2W;带宽单独售卖,集群支持热点key,会在一定时间内捕捉key访问次数是否大于阈值,帮助缓解单个节点被打爆情况;采用读写分离模式缓解对于某个房间过热或某个明星直播产生的问题。
除了游戏和视频直播,我们也在其他民生领域进行了探索,并给出解决方案。比如新闻、交通、金融等。
本文由云栖志愿小组毛鹤整理,编辑百见

王义成:阿里云Redis服务助力游戏行业发展相关推荐

  1. 深度解析双十一背后的阿里云 Redis 服务

    在一片欢呼之中,2018年的双十一完美收官,各项数据不出意外的刷出了新的记录,亮眼的数据背后是阿里过硬的技术支撑.其中阿里云Redis不仅保障了阿里集团内部业务双十一的流量洪峰平稳度过,也让使用阿里云 ...

  2. ServiceStack.Redis连接阿里云redis服务时使用连接池出现的问题

    创建连接池 1 private static PooledRedisClientManager prcm = CreateManager(new string[] { "password@i ...

  3. 阿里云Redis典型场景:如何构建可扩展通用排行榜系统

    点击有惊喜 摘要 本文主要介绍通用排行榜的需求功能,并介绍了基于Redis的ZSET数据结构的排序方法,另外探讨了通用排行榜的架构及用户如何通过阿里云Redis解决通用排行架构的技术问题. 背景 移动 ...

  4. 阿里云Redis百万千万读写慢排查实战

    背景 20万数据 100M,单条平均大小100K写入redis花费6-8分钟,计算一下NetWork有多少,公式2:100 *1024 KB/360S=284KB/S,发现只有这么点,验证实际是否这样 ...

  5. 容器化技术与微服务结合---结合springcloud微服务框架进行部署(含切换成阿里云docker仓库)(五)

    目录 系列 更换成阿里云仓库 开通阿里云镜像服务 创建仓库 本地k8s切换成阿里云的镜像仓库 测试阿里云镜像 准备简单的微服务 eureka 应用配置 k8s配置: demo-a 应用配置 k8s配置 ...

  6. C# 阿里云Redis存储服务 使用总结

    项目中先导入阿里云Redis的库 //先导入命名空间using ServiceStack.Redis;string host = "";/*访问host地址*/string pas ...

  7. 阿里云容器服务新增支持Kubernetes编排系统,性能重大提升 1

    摘要: 作为容器编排系统的两大流派, Kubernetes和Swarm的重要性不言而喻.融合了两大高性能集成的阿里云容器服务,不仅可以降低50%的基础架构成本,提高交付速度将产品迭代加快13倍,还可以 ...

  8. 阿里云容器服务新增支持Kubernetes编排系统,性能重大提升

    摘要: 作为容器编排系统的两大流派, Kubernetes和Swarm的重要性不言而喻.融合了两大高性能集成的阿里云容器服务,不仅可以降低50%的基础架构成本,提高交付速度将产品迭代加快13倍,还可以 ...

  9. 跬步千里 —— 阿里云Redis bitfield命令加速记

    link:https://developer.aliyun.com/article/757841 在一次阿里云客户问题解决中,通过给Redis添加bitfield_ro命令,解决了Redis官方bit ...

最新文章

  1. 缩略图在网页设计中应用的35个优秀案例
  2. mysql什么情况下使用索引
  3. 远程桌面连接提示“您的凭据不工作”
  4. 高可用与负载均衡(5)之基于客户端的负载均衡
  5. C语言 main 函数 - C语言零基础入门教程
  6. Win11任务栏大小怎么更改
  7. Pentium Pro架构/流水线及其优化 (2) - 指令流水线 存储子系统详解
  8. 【Git】mac执行git命令出现xcrun: error: invalid active developer path解决方法
  9. 划分字母区间c语言,LeetCode(#763):划分字母区间
  10. 口红会染唇是什么意思_会涂口红和不会涂口红的女生,区别这么大?!
  11. SQL SERVER 用户自定义函数如何定义.
  12. 没有鼠标怎么打开笔记本的触摸板
  13. Joomla 插件 attachments 使用时出现不支持ZIP文件上传的错误
  14. 【学习资源】光学、物理类、电子学实验合集
  15. svg练习题——抽风路径、高斯模糊、仪表盘、个性签名、loading加载
  16. Elasticsearch 响应数据压缩功能详解
  17. 海拔高度对电子产品性能的影响及要求
  18. 离散Laplace-Beltrami 算子
  19. ​2020年,又一波技术类书籍推荐,不能错过哟~
  20. [Excel常用函数] var var.p var.s函数

热门文章

  1. php+mysql留言板小案例
  2. JFreeChart设置背景图片 .
  3. 安宁计算机学院,合肥工业大学计算机与信息学院导师介绍:安宁
  4. jest java_✅使用jest进行测试驱动开发
  5. 开发html5单页用什么框架,GitHub - mmcai/single-page-react-h5: 基于React框架的单页活动框架,可以基于此代码上进行相关的H5活动等相关内容的开发...
  6. python学到什么程度算是会-Python 必须学到什么程度?
  7. python开发范围_Python上的字母范围
  8. 计算机软件系统包括应用软件和什么,计算机软件系统包括什么
  9. html5 jquery paint plugin,制作高质量的JQuery Plugin 插件的方法
  10. java threadstatus_Thread之一:线程生命周期及六种状态