摘要:其实游戏客户对数据库的诉求是很明确的,数据库应当“放心存放心用”。

本文分享自华为云社区《华为云GaussDB(for Redis)揭秘第27期:聊聊游戏业务怎么用高斯Redis》,作者:高斯Redis官方博客。

华为云数据库团队是比较重视技术洞察的,对客户真实的业务场景也比较看重。年初出差了几次游戏客户现场,有幸跟客户的业务开发和运维聊了聊,发现游戏对Redis的应用其实很多。不过一般都会对自建的开源Redis吐槽比较多,其实也都是常见问题了,例如:

痛点1:开源Redis全部数据放内存,存不下全量玩家,有成本瓶颈

像玩家装备、福利活动领取记录、朋友圈发帖等等,这类数据其实很适合用NoSQL数据库存储,扩展性好,性能高。但开源Redis将全量数据加载进内存,等到后期玩家持续上量后,成本扛不住,导致骑虎难下。

痛点2:全局大key会导致分片数据倾斜,动不动OOM

全局排行榜、发券抢券都难免会有些使用大Key的场景,这时虽然开源Redis的性能没啥问题,但由于Redis集群中每个分片能“装”的数据很少,如果个别Key太大,就很容易会导致数据倾斜,有些分片会经常发生OOM,影响业务。

痛点3:扩容慢,对业务影响大

游戏开服、节假日活动,都需要预置充足资源。开源Redis做扩容会是个麻烦事,由于要跨分片做数据的拷贝,因此往往动辄半小时以上,而且考虑到对业务的影响,客户只能在半夜实施扩容。

其实,此类问题已经存在很多年了,业界是有一些解法的。比如用SSD替代内存的自建KV存储方案,或者AWS那种比较先进的MemoryDB数据库服务,都能或多或少解决一些开源Redis的使用痛点。

针对这类游戏场景,华为云也提供一款足够靠谱的云数据库:GaussDB(for Redis)。

GaussDB(for Redis)是华为云数据库团队在吸取了开源Redis的经验教训后,自主研发的KV数据库,兼容开源Redis协议,采用存算分离的架构,提供了很多好用的企业级特性。针对几种常见的游戏业务痛点,展开来说:

企业级特性1:采用内存+NVMe的存储方案,自动冷热交换,实现有效降本30%+

使用Redis的场景必然需要数据库能提供高性能、低时延的有力支撑。GaussDB(for Redis)除了将全量数据落盘到NVMe存储池外,还支持缓存高频访问的热数据存在内存中,内部自动完成冷热数据交换,通过LRU算法淘汰冷数据,业务能优先从内存中读取热数据,最终端到端达成业务对高并发和低时延的诉求。

同时,GaussDB(for Redis)分布式NVMe存储池具有高压缩比。根据实际业务测试,string、hash等常用数据类型在GaussDB(for Redis)实际存储空间占用仅为开源Redis的70%~85%。GaussDB(for Redis)最多可支撑36TB数据存储,数据量越多,相比开源Redis的成本越低。

企业级特性2:存储池统一管理全量Key,不会发生数据倾斜,极少OOM,更稳定

开源Redis存储大key会导致分片内存消耗不均,随着集群整体数据量水位提升,大key所在分片随时有OOM风险。在扩容和删除大key时,业务访问会被阻塞甚至数据丢失。

GaussDB(for Redis)支持大key可靠存储,且不会导致分片OOM。另外,在GaussDB(for Redis)的控制台WebClient可以轻松一键进行“大Key诊断”,随时都能掌握业务使用的大Key情况。

企业级特性3:真正的秒级弹性伸缩,运营节日活动更轻松

开源Redis扩缩容涉及数据的拷贝迁移,速度慢,业务中断时间长。业务在流量突增的场景,需要紧急快速扩容,否则会影响用户体验,甚至给客户带来经济损失。

GaussDB(for Redis)采用存算分离的架构,扩容不需要迁移存储池中的数据,只需将数据分片信息均衡到新增加的计算节点上即可,不涉及迁移数据,可以秒级完成,对业务影响小。

总结

其实游戏客户对数据库的诉求是很明确的,数据库应当“放心存放心用”。GaussDB(for Redis)是一款超越开源Redis的企业级KV数据库,既能满足游戏业务对高并发的性能指标要求,且能有效降本增效。后续还会给大家聊聊GaussDB(for Redis)针对其他业务场景的痛点退出的企业级特性,尽请期待。

点击关注,第一时间了解华为云新鲜技术~

聊聊游戏业务怎么用高斯Redis的更多相关文章

  1. 使用高斯Redis实现二级索引

    摘要:高斯Redis 搭建业务二级索引,低成本,高性能,实现性能与成本的双赢. 本文分享自华为云社区<华为云GaussDB(for Redis)揭秘第21期:使用高斯Redis实现二级索引> ...

  2. 华为云PB级数据库GaussDB(for Redis)揭秘第七期:高斯Redis与强一致

    摘要:在KV数据库领域,"强一致性"不仅是一个技术名词,它更是业务与运维的重要需求. 清明刚过,五一假期就要来了.大好春光,不如去婺源看油菜花吧!小云迅速打开APP刷出余票2张,赶 ...

  3. 华为云PB级数据库GaussDB(for Redis)揭秘第八期:用高斯 Redis 进行计数

    摘要:高斯Redis,计数的最佳选择! 一.背景 当我们打开手机刷微博时,就要开始和各种各样的计数器打交道了.我们注册一个帐号后,微博就会给我们记录一组数据:关注数.粉丝数.动态数-:我们刷帖时,关注 ...

  4. FixedUpdate真的是固定的时间间隔执行吗?聊聊游戏定时器

    0x00 前言 有时候即便是官方的文档手册也会让人产生误解,比如本文将要讨论的Unity引擎中的FixedUpdate方法. This function is called every fixed f ...

  5. Nebula Graph 在网易游戏业务中的实践

    本文首发于 Nebula Graph Community 公众号 当游戏上知识图谱,网易游戏是如何应对大规模图数据的管理问题,Nebula Graph 又是如何帮助网易游戏落地游戏内复杂的图的业务呢? ...

  6. 最全总结 | 聊聊 Python 数据处理全家桶(Redis篇)

    1. 前言 前面两篇文章聊到了 Python 处理 Mysql.Sqlite 数据库常用方式,本篇文章继续说另外一种比较常用的数据存储方式:Redis Redis:Remote Dictionary ...

  7. BZOJ4820 SDOI2017硬币游戏(概率期望+高斯消元+kmp)

    容易想到的做法是建出AC自动机,高斯消元.然而自动机上节点数量是nm的. 注意到我们要求的变量只有n个,考虑将其他不用求的节点合并为一个变量.这个变量即表示随机生成一个串,其不包含任何一个模板串的概率 ...

  8. 洛谷P3706 [SDOI2017]硬币游戏(概率生成函数+高斯消元)

    题面 传送门 题解 不知道概率生成函数是什么的可以看看这篇文章,题解也在里面了 //minamoto #include<bits/stdc++.h> #define R register ...

  9. [置顶] mmog游戏开发之业务篇

    这周不是很忙,因为我们的游戏开发了近一年,由于公司的业务调整,在游戏开第二服的时候,老板果断的把项目停到了. 感觉超级的不爽啊.因为这个游戏项目像我的孩子一样和我一样成长,里边的大概的业务逻辑都是偶实 ...

  10. 腾讯游戏 K8s 应用实践|更贴近业务场景的 K8s 工作负载:GameDeployment & GameStatefulSet

    引言 蓝鲸容器服务(Blueking Container Service,以下简称BCS)是腾讯 IEG 互动娱乐事业群的容器上云平台,底层基于腾讯云容器服务(Tencent Kubernetes E ...

随机推荐

  1. [ABC201D] Game in Momotetsu World 题解

    Game in Momotetsu World 题目大意 在一个 \(n\times m\) 的网格中,存在红色和蓝色两种格子,红色格子用 - 表示,蓝色格子用 + 表示. 现在 Takahashi ...

  2. 掌握 Kubernetes 故障排除:有效维护集群的最佳实践和工具

    Kubernetes 是一款管理容器化应用程序的强大工具.然而,与任何复杂的系统一样,使用它时也可能出错.当问题出现时, 掌握有效的故障排除技术和工具非常重要. 本文将介绍以下步骤,助您了解事件收集的 ...

  3. k8s-单节点升级为集群(高可用)

    单master节点升级为高可用集群 对于生产环境来说,单节点master风险太大了. 非常有必要做一个高可用的集群,这里的高可用主要是针对控制面板来说的,比如 kube-apiserver.etcd. ...

  4. QT Recursive repaint detected 检测到递归重绘

    1.打印绘图时的线程号,如果与主线程号不一致,则需要使用信号传递数据,在主线程窗体中绘图 如下: qDebug() << "当前线程:" <<QThread ...

  5. 『STAOI』G - Round 2 半个游记

    很刺激. 2023.3.2 23:17 第一次过审. 2023.3.5 00:02 第一次打回. 原因是背锅人的链接又双叒叕挂错了((( 2023.3.6 21:20 第二次过审. 2023.3.8 ...

  6. 在Dash中更灵活地编写回调函数

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/dash-master 大家好我是费老师,使用Dash开发过交互式应用的朋友,想必都不会对回调函数感到 ...

  7. mysq数据库查询之分组查询

    一.什么是分组查询分组查询:将查询结果按照指定字段进行分组二.分组查询的基本语法select 查询字段 from 表名 [where 条件] group by 分组字段名 [having 条件表达式] ...

  8. 线性代数导论MIT第二章知识点上

    线性代数导论MIT第二章求解线性方程组 2.1--2.2知识点 1.向量与线性方程组 2.不同角度看方程式 也就是矩阵的乘法原型: 以行来看方程式就是原式 以列来看方程式 以矩阵来看方程式 3.消元法 ...

  9. springMvc_快速入门

    概念:是一种基于Java实现mvc模型的轻量级web框架 优点:使用简单,开发便捷    灵活性强 总体来说springMvc就是来替代servlet的一种工具 快速入门: 1.创建maven-web ...

  10. 单元测试平台搭建:sonarQube+sonarScanner+Jenkins+jacoco

    单元测试平台搭建及结果分析 一.方案 需求目标:提高单元测试覆盖率和规范代码编写规范 选用工具:Sonarqube.sonarqube Scanner.Jenkins.jacoco 方案: 工程中引入 ...