性能提升100%、存储节约50%!猕猴桃游戏搭载OceanBase开启云端手游新篇章

近日,武汉灵动在线科技有限公司(以下简称“灵动在线”)与 OceanBase 达成合作,旗下品牌猕猴桃游戏的“游戏用户中心(微信小程序)”和“BI 分析报表业务系统“两大关键业务系统全面接入 OB Cloud 云数据库,实现存储容量节约 50%,SQL 复杂查询性能提升 100%,数据承载能力提升 10 倍以上,亿级数据平均响应耗时缩短为原来的 1/5。

2014 年,灵动在线在武汉创立,猕猴桃游戏为旗下品牌。一直以来,公司以“平台化”、“全品类”、“全球化”为战略方向,致力于在全球范围内游戏的研发与发行。短短 9 年,公司已自主研发多款市场热门手机游戏及微信小游戏,目前已成长为优秀的独代发行公司,游戏用户量超千万。

图片

随着业务规模和游戏用户量的快速增长,海量数据给猕猴桃游戏的数据库带来三大挑战:

第一,数据量大导致性能瓶颈。游戏业务,特别是微信小游戏业务的快速发展,猕猴桃游戏的平台用户中心数据量增长迅速,单表数据量就达到过亿水平,CPU 使用率经常性达到 100%,SQL 性能频繁出现瓶颈,定期任务的统计 SQL 执行已经达到分钟级。

其次,分库分表代价攀升。为解决大表问题,猕猴桃游戏不得已暂时选择了分库分表路线,但却无法给业务带来价值。与此同时,架构复杂度提升,需要开发人员和 DBA 人员逐步投入更多时间和资源,导致数据库运维成本进一步攀升。

第三,超大表 DDL 痛点。原有数据库大表 DDL 变更风险高,并可能阻塞 DML,主备延迟导致只读实例数据不准。

一直以来,游戏行业天然存在高并发问题,数据库需要具备高弹性、高可用、快速实时查询、支持高并发吞吐等能力。猕猴桃游戏也不例外,基于以上三大挑战开始对数据库进行多方调研、测试、分析后,最终选择 OB Cloud 云数据库为其 “游戏用户中心”和“BI 分析报表业务系统“两大关键业务系统提供数据库服务。

升级至 OB Cloud 云数据库的过程中,猕猴桃游戏借助 OceanBase 的高 MySQL 兼容性,实现两大关键业务系统从 RDS 中的业务表,在应用基本零改动的情况下平滑迁移至 OceanBase 的分区表。

与此同时,由于每一款游戏的停机升级窗口期很短,对数据库迁移速度的要求非常高。猕猴桃游戏将“游戏用户中心”的数据提前实时同步至 OceanBase,然后在窗口期通过 OMS(OceanBase Migration Service,OceanBase 数据迁移工具)反向切换,在半小时内即完成 OB Cloud 云数据库的迁移。

猕猴桃游戏对数据库高可用要求较高,因为平台作为用户登录充值统一入口,如果出现服务不可用会直接带来巨大经济损失,所以迫切需要引入分布式技术,同时期望对现有应用无影响。借助 OceanBase 原生分布式数据库天然具备的三副本强一致能力,故障场景下也能实现数据零丢失,并且在 8 秒内故障可自动恢复。

完成数据库升级后,猕猴桃游戏无需再分库分表,并解决了原有数据库的性能瓶颈问题,可以平稳支撑此后游戏用户量的规模化快速增长。同时,通过 HTAP 实时分析能力,一套数据同时支持事务处理和实时分析的工作负载,猕猴桃游戏的复杂 SQL 查询性能提升 100%,亿级数据平均响应耗时缩短为原来的 1/5。以“BI 分析报表业务系统”为例,汇聚所有数据进行经营分析、买量分析等,升级至 OB Cloud 云数据库后无需复杂的 “ETL” 链路,减少数据冗余,可以做到实时分析,进而实现数据驱动游戏业务增长。

图片

因为 OceanBase 是原生的分布式数据库,支持分布式事务,所以可以做到无感知的横向扩展,任意 OceanBase 集群增加机器,业务流量也会自动迁移到新增的机器中。借助多级弹性扩缩容能力,猕猴桃游戏的数据承载能力提升了 10 倍以上,这也为猕猴桃游戏后续业务的规模化增长提供了长足保障。

猕猴桃游戏熟练使用 OceanBase 大集群模式,以及基于内核的在线 DDL、智能诊断功能,在 OCP(OceanBase Control Platform,OceanBase 运维管理工具)加持下,DBA 的运维效率得到大幅提升。与此同时,凭借 OceanBase 先进的数据压缩技术,平衡了“性能”和“压缩比”难题,在保障系统性能不降反增的前提下,猕猴桃游戏实现存储容量节约 50%。

面向多基础设施的一体化数据库 OB Cloud 构建在阿里云、腾讯云、AWS 等全球主流公有云基础设施上,基于完全自主研发的原生分布式数据库,并在云上集成了评估、迁移、监控、诊断、备份恢复、运维优化等工具。凭借多级弹性扩缩容、规模化降本、领先的业务连续性、支持多基础设施架构、HTAP 实时分析等硬核能力,OB Cloud 云数据库已深度助力携程、海底捞、理想汽车、泡泡玛特、二维火、纵腾集团、掌玩游戏、GCash、Palmpay 等多领域企业,在数据库性能显著提升的基础之上,实现多项成本降低与效率提升。

此次猕猴桃游戏与 OceanBase 牵手,实现 “游戏用户中心”、 “BI 分析报表业务系统“两大关键业务系统的性能显著提升和存储容量节约,展现了 OceanBase 致力于用自研技术助力企业提效降本的理念。未来,OceanBase 将继续与猕猴桃游戏一起成长,让猕猴桃游戏的每一笔「登录」都算数,助力猕猴桃游戏业务稳步增长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/226801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows下redis 设置开机自启动

1,在redis的目录下执行(执行后就作为windows服务了) redis-server --service-install redis.windows.conf 2,安装好后需要手动启动redis redis-server --service-start 3,停止服务 redis-server --service-stop

用标记接口定义类型

标记接口是不含有任何方法的接口,它的目的是通过将特定接口应用于类来为该类添加类型信息。以下是一个示例: public interface Drawable {// 标记接口,不包含任何方法 }public class Circle implements Drawable {private int radius;public…

C# 加载本地文件设置应用程序图标

static class Program{[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Form mainForm new Form1();mainForm.Show();//IntPtr hProcess Process.GetCurrentProcess().MainWindowHandle;// 设置应用程…

【C++11特性篇】利用 { } 初始化(1)

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一.回顾C98标准中{}的使用二.一切皆可用…

大创项目推荐 垃圾邮件(短信)分类算法实现 机器学习 深度学习

文章目录 0 前言2 垃圾短信/邮件 分类算法 原理2.1 常用的分类器 - 贝叶斯分类器 3 数据集介绍4 数据预处理5 特征提取6 训练分类器7 综合测试结果8 其他模型方法9 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 垃圾邮件(短信)分类算…

TrustZone之中断及中断处理

一、中断 接下来,我们将查看系统中的中断,如下图所示: 通用中断控制器(GIC)支持TrustZone。每个中断源,在GIC规范中称为INTID,分配到以下三个组之一: • Group0:安全中断,以FIQ方式发出信号 • 安全Group1:安全中断,以IRQ或FIQ方式发出信号 • 非安全Gr…

万兆网络之屏蔽线序接法(上)

可以经常听到用RJ45指代网线,用RJ11指代电话线的,RJ(Registered Jack)即已注册插口,可以简单理解为一种约定就行(参见参考链接) 前一篇已经讲到,网线线对互相缠绕是为了电流方向相反…

100天精通风控建模(原理+Python实现)——第10天:风控建模中主成分析是什么?怎么实现?

风控模型已在各大银行和公司都实际运用于业务,用于营销和风险控制等。本文以视频的形式阐述风控建模中主成分分析是什么,怎么实现。并提供风控建模原理和Python实现文章清单。    之前已经阐述了100天精通风控建模(原理+Python实现)——第1天:什么是风控建模?    100天…

netty-daxin-2(netty常用事件讲解)

文章目录 netty常用事件讲解ChannelHandler接口ChannelHandler适配器类ChannelInboundHandler 子接口Channel 的状态调用时机ChannelHandler 生命周期示例NettServer&CustomizeInboundHandlerNettyClient测试分析 ChannelInboundHandlerAdapter适配器类SimpleChannelInboun…

LeetCode-反转链表问题

1.反转链表 题目描述: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 思路: 反转链表也就是链表倒置,我一直以来的办法就是先建立一个头节点,之后再遍历链表来进行头插。 代码&#xff1…

基于Hadoop的铁路货运大数据平台设计与应用

完整下载:基于Hadoop的铁路货运大数据平台设计与应用 基于Hadoop的铁路货运大数据平台设计与应用 Design and Application of Railway Freight Big Data Platform based on Hadoop 目录 目录 2 摘要 3 关键词 4 第一章 绪论 4 1.1 研究背景 4 1.2 研究目的与意义 5 …

flatbuffer使用教程

一、定义scheme Tables FlatBuffers 中定义对象的主要方式,由名称和字段列表组成。每个字段都有一个名称、一个类型和一个可选的默认值。 如果架构中未指定默认值,则标量类型的默认值将为 0 ,其他类型的默认值将为 null 。 限制 只能在表…

比尔盖茨最新文章——AI 将彻底改变计算机的使用形式

最近发现比尔盖茨还在写文章,确实了不起,68 岁的老人家还在坚持输出,除了写文章,比尔盖茨还致力于教育、医疗和卫生等慈善工作,奋斗在一线,看来美国人也延迟退休啊 😅 原文《AI 将彻底改变计算…

Java数据结构篇——单链表的基本操作

1. 前言 在上一篇《Java数据结构篇——实现顺序表的增删查改》,我们已经熟悉了 ArrayList 的使用并且进行了简单的模拟实现。ArrayList底层使用数组来存储元素,由于其底层是一段连续的空间,当ArrayList 任意位置插入或者删除元素时&#xff…

《使用ThinkPHP6开发项目》 - 登录接口一

《使用ThinkPHP6开发项目》 - 安装ThinkPHP框架-CSDN博客 《使用ThinkPHP6开发项目》 - 设置项目环境变量-CSDN博客 《使用ThinkPHP6开发项目》 - 项目使用多应用开发-CSDN博客 《使用ThinkPHP6开发项目》 - 创建应用-CSDN博客 《使用ThinkPHP6开发项目》 - 创建控制器-CSD…

详解Keras3.0 Layers API: Convolution layers(Conv1D、Conv2D、Conv3D)

1、Conv1D layer 通常对一维度数组(例:arr np.array([1, 2, 3, 4, 5]))进行卷积操作 keras.layers.Conv1D(filters,kernel_size,strides1,padding"valid",data_formatNone,dilation_rate1,groups1,activationNone,use_biasTrue,…

职场记6:在国企工作,追逐挑战与成就

上一篇《职场记5:勇闯深圳,追梦职场》 上回说到我决定入职一家国企,去入职后才发现,我应聘的岗位其实只招一人,加上我却一共来了两个人,也就是说我和另一个新人最终要有一个离开。 尽管我和他有着一定的竞…

SystemVerilog基础:并行块fork-join、join_any、join_none(二)

相关阅读 SystemVerilog基础https://blog.csdn.net/weixin_45791458/category_12517449.html 在第一节中,我们讨论了并行块中的fork-join块和fork-join_any块,了解了它们的差异,本文将继续讨论fork-join_none块的使用。 fork-join_none并行块…

12.12_黑马数据结构与算法笔记Java

目录 079 优先级队列 无序数组实现 080 优先级队列 有序数组实现 081 优先级队列 堆实现 1 082 优先级队列 堆实现 2 083 优先级队列 堆实现 3 084 优先级队列 e01 合并多个有序链表1 084 优先级队列 e01 合并多个有序链表2 085 阻塞队列 问题提出 086 阻塞队列 单锁实…

5个创建在线帮助文档的好方法!

在线帮助文档是企业为用户提供支持服务的重要工具,它能够帮助用户更好地了解和使用产品,提高用户体验。然而,创建一份优秀的在线帮助文档需要掌握一定的技巧和方法。接下来就介绍一下创建在线帮助文档的5个好方法,帮助企业更好地为…