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

本文分享自华为云社区《华为云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. 【PHP反序列化】速览

    PHP反序列化 一.原理 序列化就是将对象转化成字符串,反序列化相反.数据的格式转换和对象的序列化有利于对象的保存 . 反序列化漏洞:就是php对数据进行反序列化时,没有进行过滤,导致用户可以控制反序 ...

  2. Chromium CC渲染层工作流详解

    1. Chromium 的渲染流水线 Blink -> Paint -> Commit -> (Tiling ->) Raster -> Activate -> D ...

  3. 用iptables做负载均衡实现高并发

    根据以往经验,在高配置服务器上部署Java服务,建议部署多个JVM实例,以提升JVM示例内存回收效率: 此时面临负载分发问题,常规想法是通过Nginx或者Apache做负载分流.然而在高并发情况下无论 ...

  4. Kurator v0.5.0发布,打造统一的多集群备份与存储体验

    本文分享自华为云社区<Kurator v0.5.0正式发布! 打造统一的多集群备份与存储体验>,作者: 云容器大未来 . Kurator 是由华为云推出的开源分布式云原生套件.面向分布式云 ...

  5. STM32CUBEIDE中 Debug 和 Release 的作用/区别/使用场景

    基本主流IDE都有该功能选项例如Keil MDK, IAR, Eclipse, VS等, 这里使用STM32CUBEIDE来举例 创建STM32CUBEIDE工程后默认有2个目标选项 Debug / ...

  6. 使用GPT4进行数据分析,竟然被他骗了

    上周,OpenAI开发者大会上OpenAI发布了一系列震撼人心的功能.而最让我感兴趣的,就是GPT4的数据分析功能了.话不多说,赶紧上号体验一下. 在最新登录GPT4的时候,都会有下面这个提示,目前已 ...

  7. NLP文本生成全解析:从传统方法到预训练完整介绍

    本文深入探讨了文本生成的多种方法,从传统的基于统计和模板的技术到现代的神经网络模型,尤其是LSTM和Transformer架构.文章还详细介绍了大型预训练模型如GPT在文本生成中的应用,并提供了Pyt ...

  8. go基础-依赖管理

    有些不可思议,简洁.优雅的go语言依赖管理如此混乱,发布多年也没有可靠的依赖管理机制,官方先后推出了多种依赖管理机制gopath.vendor.dep等,没有一个顺手,直到在Go 1.11推出go m ...

  9. 根据子节点ID获取结构树中该子节点的所有父节点ID

    数据源: let adreeJson = [{ cat_id: 1, cat_name: '大家电', cat_pid: 0, cat_level: 0, cat_deleted: false, ch ...

  10. New Type Functions/Utilities for Dealing with Ranges in C++20

    Generic Types of Ranges   类型萃取从字面意思上来说其实就是帮助我们挑选某个对象的类型,筛选特定的对象来做特定的事.可以先来回顾一下以前的写法. #include <ve ...