本文是观看如何使用云数据库Redis助力游戏行业发展-阿里云redis直播之后的个人总结,视频已附在文末。
传统数据库的压力和发展
发展:OLTP SQL数据库->NoSQL数据库->Key-Value缓存数据库->OLAP数据仓库->大数据离线分析
- OLTP SQL数据库:正常的交易类数据。账单…
- NoSQL数据库:服务关系图谱类数据
- Key-Value缓存数据库:热数据,需要经常被访问的数据
- OLAP数据仓库:大的数据,沉淀数据,存储到OLAP数据仓库的BI引擎里,经过OLAP小型数仓会做一些在线的实时处理分析
- 大数据离线分析:长久化、历史性的数据,存储到大数据的分析平台,进行离线的大数据分析。通过大数据分析之后,把统计出来的核心报表数据再存储到OLTP或OLAP数据库里,进行实时查询。
阿里云产品架构
标准版
单副本
单副本:SLA:2副本,HA高可用,秒级切换。QPS:7W。
当HA发现老redis
进程无响应后(宕机、假死),会新起一个redis进程,切换到新redis
上。老redis
的数据是没了的。
假死也算,我们项目用的阿里云redis由于CPU过高,无响应,被HA认为死掉了,然后被重启了,数据全没了。很坑爹!
双副本
双副本是master-slave架构,当master出现问题后,HA会切换到slave上,数据仍然在的(也有可能因为同步延迟导致少量数据未及时同步到slave上)。
QPS:8-10W。
集群版
- 单副本:宕机丢数据
- 双副本:宕机切换到slave,有数据
扩展读和写能力。QPS:集群数量 * 7W
读写分离版
- 扩展读能力。
- 宕机切换到slave,有数据
- 读的QPS:读节点数量 * 7W
- 读节点的数据有毫秒级不一致(同步延迟)
场景和业务
游戏
游戏的行业特性:
- 滚服。
- 业务:随时开服,一天多服。
- 例如:斗地主。同一时刻会开启多个房间,一天内会开很多很多个房间。一个房间满了之后,会立刻开启一个新的房间。
- 此时,每个房间都是一个redis实例。立即克隆一个相同配置的redis实例出来。
- 灌服。
- 业务:疯狂灌人,配置逐步增大。
- 例如:一个游戏越来越火爆,日活越来越多。
- 传统数据库会不断进行升级、调优什么的。用redis可以增加配置,用集群版,增加一个新的集群节点,同时提高读写能力。
- 合服。
- 业务:业务收尾,多服合并。
- 例如:游戏进入衰退期,需要撤掉一些服务器,把这些服务器里的人合并到一个服务器里去。
- 阿里云redis提供数据合并服务。
- 闪回。
- 业务:快速回滚,时间点或局部恢复。
- 例如:游戏更新后出现BUG,需要回退到之前的版本。
- 阿里云redis提供数据归档,可以 时间点或局部 快速回滚/恢复。
视频直播
每个直播间都是一个redis实例。业务需求:
- 稳定性高于一切。
- 低内存高QPS。弹幕?
- 连接数较大。观看观众多。
可能场景及应对:
- 大V:大V的直播间是预先知道的,肯定会热门。此时可以使用redis读写分离,来缓解热key问题。
- 不可预知的热门主播/房间:对于突然火起来的房间,因为是无法预知的,出现热key,可能会把redis打爆。此时可以用集群版,它的上层有个proxy层,可以缓存一些热key,缓解redis的压力。
其他
新闻:极高QPS,热升级、无缝扩容。
新闻类业务要求24小时均在线,所以是不可能停机维护升级的,只能要求热升级。
而阿里云redis是支持热升级、无缝扩容的。(应该是通过新起一个redis实例,复制数据,然后切换过来实现的)
其他
OLTP和OLAP的区别
OLTP(on-line transaction processing)翻译为联机事务处理, OLAP(On-Line Analytical Processing)翻译为联机分析处理,从字面上来看OLTP是做事务处理,OLAP是做分析处理。从对数据库操作来看,OLTP主要是对数据的增删改,OLAP是对数据的查询。
再从应用上来看看OLTP与OLAP的区别。
OLTP主要用来记录某类业务事件的发生,如购买行为,当行为产生后,系统会记录是谁在何时何地做了何事,这样的一行(或多行)数据会以增删改的方式在数据库中进行数据的更新处理操作,要求实时性高、稳定性强、确保数据及时更新成功,像公司常见的业务系统如ERP,CRM,OA等系统都属于OLTP。
当数据积累到一定的程度,我们需要对过去发生的事情做一个总结分析时,就需要把过去一段时间内产生的数据拿出来进行统计分析,从中获取我们想要的信息,为公司做决策提供支持,这时候就是在做OLAP了。
因为OLTP所产生的业务数据分散在不同的业务系统中,而OLAP往往需要将不同的业务数据集中到一起进行统一综合的分析,这时候就需要根据业务分析需求做对应的数据清洗后存储在数据仓库中,然后由数据仓库来统一提供OLAP分析。所以我们常说OLTP是数据库的应用,OLAP是数据仓库的应用,下面用一张图来简要对比。
所以OLAP和OLTP之间的关系可以认为OLAP是依赖于OLTP的,因为OLAP分析的数据都是由OLTP所产生的,也可以看作OLAP是OLTP的一种延展,一个让OLTP产生的数据发现价值的过程。
视频
本文会经常更新,请阅读原文: https://note.guoqianfan.com/2021/09/25/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E4%BA%91%E6%95%B0%E6%8D%AE%E5%BA%93Redis%E5%8A%A9%E5%8A%9B%E6%B8%B8%E6%88%8F%E8%A1%8C%E4%B8%9A%E5%8F%91%E5%B1%95-%E9%98%BF%E9%87%8C%E4%BA%91/ ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
如果你想持续阅读我的最新博客,请点击 RSS 订阅。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 过千帆的记事本(包含链接: https://note.guoqianfan.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。