阿里云数据库MongoDB版助力极致游戏高效开发
客户简介
成立于2010年的厦门极致互动网络技术股份有限公司(以下简称“公司”或“极致游戏”),是一家集网络游戏产品研发与运营为一体的重点软件企业,公司专注于面向全球用户的网络游戏研发与运营。在整个产业链中,公司同时承担着游戏开发商、游戏运营商的角色,是一个完整产业链的互联网游戏公司。
自成立以来,极致互动成功研发出《上古王冠》、《魔侠传》、《道友请留步》、《文明大爆炸》、《东方故事》、《命运圣契》等多款原创型网络游戏。其中卡牌手游《命运圣契》自2024年9月14日上线以来,实现首月新增用户超400万 ,首月全平台流水破亿,荣登iOS与Taptap预约榜榜首。目前《命运圣契》可支持几十万、甚至上百万玩家同时在线。
业务挑战
近年来,游戏行业竞争愈发激烈,特别是在卡牌手游领域,因此需要保障玩家的极致游戏体验。在游戏的整个生命周期当中,游戏玩家的游戏体验和制作方的研发迭代速度及后台运维环环相扣,因此底层数据库的顺利运行是游戏体验的基础与保障。
在极致互动过往的游戏开发中,采用的是关系型数据库,而现在,研发团队需要一款能支撑快速开发及数据灵活的数据库,以确保在前期的开发中能缩短开发周期,在中期的发行中能保障游戏体验:
1)需要高效处理结构灵活变化的游戏数据
《命运圣契》属于第三代卡牌游戏,玩家角色属性、战斗数据和玩家排名等会经常发生变化,尤其是角色武器和道具的引入,都会带来游戏逻辑和数据结构等的动态变化。传统的关系型数据库无法支撑起游戏场景的灵活动态属性变化,需要能支持更高灵活性的数据库解决方案。
2)需要确保玩家的游戏体验顺畅,无中断无卡顿
游戏平台的部署架构需要具备高可用,能够在节点出现故障的时候不会影响服务,保证7*24小时不间断的服务,这对底层数据的存储、备份、恢复以及故障切换的速度要求特别高。例如,服务响应时间需要达到微秒级别,备份恢复达到分钟级别,还需要通过主从架构保证在不停服的情况下完成游戏版本的升级,从而保障玩家的游戏体验。
3)能够弹性扩展以支撑海量玩家在线
《命运圣契》是极致互动寄予厚望的产品,无论是老用户邀测、压力测试、全平台首发还是上线运营的各阶段,对数据库的资源需求是不同的,尤其是大型节假日高峰期,需要支撑几十万人同时在线,而且在初期需要对游戏玩家做分区分服,以及到后期的合服。虽然传统的关系型数据库能通过改造完成横向扩容,但是数据规模太大的情况下会带来非常繁琐的运维流程,这很可能会降低玩家的游戏体验。
解决方案
阿里云数据库MongoDB版深度契合游戏业务场景:
MongoDB帮助《命运圣契》落地丰富多彩的游戏世界
《命运圣契》的制作团队历时四年,创造出这款轻松休闲的卡牌游戏,人物建模和艺术风格值得称道。游戏采用鲜艳的色彩和细腻的角色设计,打造出一个充满奇幻色彩的世界,每个角色都经过精心设计,体现了独特的个性和故事背景。
● 玩家数据存储
与传统游戏开发有所不同,使用MongoDB去存储玩家的基础数据,例如角色数据、战斗数据、等级数据等,开发者可以灵活调整数据的结构,不同游戏可定义不同的数据模版。此外,得益于schema free特性,MongoDB支持多种数据类型和数据原子计算,开发者无需关心底层的数据细节,即可直接灵活定义数据。
● 游戏内经济系统闭环
假设把游戏内的经济系统理解为一个特殊的交易场景,处理游戏交易涉及订单、退款、跟踪回溯等多个环节,而通过MongoDB的原子化、事务性操作可以将整个交易流程一次性完成。虽然游戏内交易是虚拟的、复杂的,但采用MongoDB可以保证交易的规范性和完整性。
● 数据流能力
游戏开发者需要跟踪玩家的各种行为事件,以便形成流水日志,同时要保证玩家的所有事件可追溯、可查询。MongoDB的数据库实例,可将这些流水日志存储起来,并基于灵活的文档型结构,让开发者无论是在开发期间,还是游戏已经发行的期间,都可以快速检索玩家的所有事件流。
阿里云数据库MongoDB版让业务更稳定,运维更轻松
● 业务稳定性
基于阿里云数据库MongoDB版的分片集群架构,可以实现分钟级的横向扩缩容能力,对于《命运圣契》的发行至关重要,可以不用担心玩家规模的快速增加而影响玩家的游戏体验。
同时,阿里云数据库MongoDB版具备快速回档能力,可以实现快速的任意时间点恢复,通过其多线程增量恢复oplog等功能,备份恢复速度提升30倍,大幅度减少了游戏停更时间,保证玩家拥有更好的游戏体验。
● 运维成本
阿里云数据库MongoDB版简单易用的控制台可以实现全面托管服务,分钟级的自动扩缩容为《命运圣契》提供了低延迟和高可用的服务,兼容流量高峰期时保障用户体验及业务低峰时节约成本;
同时,阿里云数据库MongoDB版还提供丰富的可视化监控能力,包括实时可视化日志和监控面板,让研发和运维均可以实时监控业务运行状态;
除此之外,阿里云数据库MongoDB版还提供运行时间、状态异常等多维告警能力,使问题可以在最短的时间内被觉察及解决。
回顾与阿里云MongoDB的合作历程,极致互动成都研发中心技术经理汪兴表示,无论在功能还是性能上,阿里云数据库MongoDB版都很好地契合了游戏的业务场景,带给极致互动的不只是研发迭代效率的提升,同时还有运维价值。
阿里云数据库MongoDB版在不久的将来支持到MongoDB 8.0版本,极致互动研发团队期待借助新版本来开发更多的手游项目。随着《命运圣契》国内的发行成功经验,他们也正在计划让阿里云数据库MongoDB版帮助《命运圣契》走出国门,让海外玩家也能体验到高品质的第三代卡牌手游。
相关文章:
阿里云数据库MongoDB版助力极致游戏高效开发
客户简介 成立于2010年的厦门极致互动网络技术股份有限公司(以下简称“公司”或“极致游戏”),是一家集网络游戏产品研发与运营为一体的重点软件企业,公司专注于面向全球用户的网络游戏研发与运营。在整个产业链中,公…...
ESP32-S3模组上跑通ES8388(29)
接前一篇文章:ESP32-S3模组上跑通ES8388(28) 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回解析到了es8388_init函数中的第11段也是最后一段代码,没有解析完,本回继续解析。为了便于理解和回顾,再次贴出该片段,在components\audio_hal\driver\es8388\es8388.c中,如下…...
使用ElasticSearch实现全文检索
文章目录 全文检索任务描述技术难点任务目标实现过程1. java读取Json文件,并导入MySQL数据库中2. 利用Logstah完成MySQL到ES的数据同步3. 开始编写功能接口3.1 全文检索接口3.2 查询详情 4. 前端调用 全文检索 任务描述 在获取到数据之后如何在ES中进行数据建模&a…...
通过k-means对相似度较高的语句进行分类
本文介绍了如何使用K-Means算法对相似度较高的语句进行分类,并附上java案例代码 import java.util.ArrayList; import java.util.List; import java.util.Random;public class KMeansTextClustering {public static void main(String[] args) {// 初始化语句数据集…...
国信华源科技赋能长江蓄滞洪区水闸管护项目验收成果报道
“碧水悠悠绕古城,闸启长江万象新。”近日,由北京国信华源科技有限公司倾力打造的万里长江蓄滞洪区水闸管护项目,圆满通过验收,为这片鱼米之乡的防洪安全注入了新的科技活力。 长江之畔,水闸挺立,犹如干堤上…...
HTML:表格重点
用表格就用table caption为该表上部信息,用来说明表的作用 thead为表头主要信息,效果加粗 tbody为表格中的主体内容 tr是 table row 表格的行 td是table data th是table heading表格标题 ,一般表格第一行的数据都是table heading...
wine的使用方法
wine版本 所有分支,新的主要版本: wine-x.0 All branches, release candidates:各分支、候选版本: wine-x.0-rcn Stable branch updates: 稳定分支更新: wine-x.0.z Development branch updates: wine-x.y wine *.exe “更改目…...
Linux服务器离线安装unzip包
Linux服务器离线安装unzip包 1. 安装unzip包的目的 解压Docker部署包和服务部署包。 2. 查看当前环境是否已经安装unzip rpm -qa | grep --color unzip3. 下载对应的离线包 地址:http://www.rpmfind.net/linux/rpm2html/search.php?query&submitSearch 例…...
Excel拆分脚本
Excel拆分 工作表按行拆分为工作薄 工作表按行拆分为工作薄 打开要拆分的Excel文件,使用快捷键(AltF11)打开脚本界面,选择要拆分的sheet,打开Module,在Module中输入脚本代码,然后运行脚本 Su…...
Mybatis---事务
目录 引入 一、事务存在的意义 1.事务是什么? 2.Mybatis关于事务的管理 程序员自己控制处理的提交和回滚 引入 一、事务存在的意义 1.事务是什么? 多个操作同时进行,那么同时成功,那么同时失败。这就是事务。 事务有四个特性…...
企业直播间媒体分发新闻转播拉流推广名单(金融财经科技类)
【本篇由 言同数字媒体直播分发 原创】随着直播与短视频成为各大企业营销的重要手段,如何选择合适的视频平台进行内容分发与拉流成为了企业关注的焦点。对于财经和科技类企业而言,选择具有专业受众群体和广泛传播能力的平台尤为重要。下面是一些可以帮助…...
华为FreeBuds Pro 4丢了如何找回?(附查找功能使用方法)
华为FreeBuds Pro 4查找到底怎么用?华为FreeBuds Pro 4有星闪精确查找和离线查找,离线查找功能涵盖播放铃声、导航定位、星闪精确查找、上线通知、丢失模式、遗落提醒等。星闪精确查找是离线查找的子功能,当前仅华为FreeBuds Pro 4充电盒支持…...
若依微服务登录密码加密传输解决方案
文章目录 一、需求提出二、应用场景三、解决思路四、注意事项五、完整代码第一步:前端对密码进行加密第二步:后端工具类实现 RSA 加解密功能第三步:登录接口中添加解密逻辑 六、运行结果总结 一、需求提出 在默认情况下,RuoYi 微…...
NVR小程序接入平台/设备EasyNVR深度解析H.265与H.264编码视频接入的区别
随着科技的飞速发展和社会的不断进步,视频压缩编码技术已经成为视频传输和存储中不可或缺的一部分。在众多编码标准中,H.265和H.264是最为重要的两种。今天我们来将深入分析H.265与H.264编码的区别。 一、H.265与H.264编码的区别 1、比特率与分辨率 H.…...
Redisson常用方法
Redisson 参考: 原文链接 定义:Redisson 是一个用于与 Redis 进行交互的 Java 客户端库 优点:很多 1. 入门 1.1 安装 <!--redission--> <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifa…...
html自带的input年月日(date) /时间(datetime-local)/星期(week)/月份(month)/时间(time)控件
年月日期控件 type"date" <input type"date" id"StartDate" valueDateTime.Now.ToString("yyyy-MM-dd") /> //设置值 $("#StartDate").val("2024-12-12"); //获取值 var StartDate$("#StartDate&quo…...
CSS系列(12)-- 响应式设计详解
前端技术探索系列:CSS 响应式设计详解 📱 致读者:掌握响应式设计的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS 响应式设计,学习如何创建适应各种设备的网页布局。 响应式基础 🚀 视口设…...
filecoin boost GraphQL API 查询
查询示例 查询失败交易 curl -X POST \ -H "Content-Type: application/json" \ -d {"query":"query { deals(limit: 10, query: \"failed to get size of imported\") { deals { ID CreatedAt Message } } }"} \ http://localhost:…...
SAS - Subtractive Port
在SAS(串行连接SCSI,Serial Attached SCSI)协议中,subtractive port 是一种特殊类型的端口,主要用于设备间的路由功能。它的作用是在路径选择过程中充当默认路径,以处理未明确指定路径的请求。以下是它的定…...
TCP客户端模拟链接websocket服务端
因一些特殊原因研究了下TCP模拟链接websocket。原理上可以连接但具体怎么连接怎么操作就不知道了,需要研究下,以下是个人研究的方案。 用线上和本地地址来做例子: 线上wss地址:wss://server.cs.com/cs/vido/1 本地地址ws://127…...
TypeScript 的崛起:全面解析与深度洞察
一、背景与起源 (一)JavaScript 的局限性 类型系统缺失 难以在编码阶段发现类型相关错误,导致运行时错误频发。例如,将字符串误当作数字进行数学运算,可能在运行时才暴露问题。函数参数类型不明确,容易传入…...
c#笔记2024
Ctrl r e自动添加get和set CompositeCurve3d 复合曲线 List<Entity> entS listline.Cast<Entity>().ToList();//list类型强转 前面拼上\u0003,就可以实现,不管有没有命令都能打断当前命令的效果 取消其他命令:Z.doc.SendStri…...
Hadoop一课一得
Hadoop作为大数据时代的奠基技术之一,自问世以来就深刻改变了海量数据存储与处理的方式。本文将带您深入了解Hadoop,从其起源、核心架构、关键组件,到典型应用场景,并结合代码示例和图示,帮助您更好地掌握Hadoop的实战…...
AI生成图表化:深入探索Mermaid
引言 在使用生成式AI时,只要你提出让AI帮你生成mermaid图,AI的生成就会出现丰富的图形! 在现代文档编写中,图表的使用不仅能增强文档的可读性,还能更直观地表达复杂的概念和流程。Mermaid 作为一款开源的图表绘制工具…...
25.DDD数量关系
学习视频来源:DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 关系型数据库的数量关系领域模型的数量关系实现聚合数量关系聚合内聚合间具体说明代码 数量关系是本质吗?领域对象之…...
Linux应用开发————线程池
线程池 定义:简单来说,就是存放多个线程的池子。当创建线程池时,就给池中存放一些线程,如果有任务要执行,就从池中取出一个线程执行任务,依次类推;当所有线程都在执行任务时,其他任务…...
Spring Boot 集成阿里云OSS 完成文件上传下载
前言: 文件上传下载在项目开发中是一个非常常见的业务场景,在云服务上还没有兴起的时候,一般来说都会把文件单独存放到文件服务器上,随着云服务的兴起,各类云服务厂商都提供了 OSS 服务,本篇我们分享 Spri…...
使用ERA5数据绘制风向玫瑰图的简易流程
使用ERA5数据绘制风向玫瑰图的简易流程 今天需要做一个2017年-2023年的平均风向的统计,做一个风向玫瑰图,想到的还是高分辨率的ERA5land的数据(0.1分辨率,逐小时分辨率,1950年至今)。 风向,我分为了16个&…...
测试脚本并发多进程:pytest-xdist用法
参考:https://www.cnblogs.com/poloyy/p/12694861.html pytest-xdist详解: https://www.cnblogs.com/poloyy/p/14708825.html 总 https://www.cnblogs.com/poloyy/category/1690628.html...
数据可视化的Python实现
一、GDELT介绍 GDELT ( www.gdeltproject.org ) 每时每刻监控着每个国家的几乎每个角落的 100 多种语言的新闻媒体 -- 印刷的、广播的和web 形式的,识别人员、位置、组织、数量、主题、数据源、情绪、报价、图片和每秒都在推动全球社会的事件,GDELT 为全…...
区政府网站建设/企业员工培训课程内容
概念 序列化:将java对象转换为字节序列的过程叫做序列化 反序列化:将字节对象转换为java对象的过程叫做反序列化 要解决的问题 1.序列化时间 2.反序列化时间 3.bytes大小 4.操作方便 支持的数据类型和应用传输数据的格式是否恰当 例举几种方式序列化的方…...
注册科技有限公司可以做网站吗/百度收录入口在哪里查询
题目文件:https://files.cnblogs.com/files/nul1/access.log.tar 直接搜索flag发现是一题关于二分法注入。 页面为200的字节大小为1765,所以可以通过读取每行判断是否有1765以及有没有flag的关键字样,进而提取值。 脚本如下所示: …...
网站策划的内容/高质量软文
eslint里的警告消除 在vue控制台界面出现警告时,可以进行手动警告消除 1.点选控制台旁边的输出按钮,找到警告的位置,将灰色括号内的内容复制 2.找到并打开 eslintrc.js 文件 3.将之前复制的灰色内容粘贴到rules:{}中ÿ…...
鄂尔多斯市东胜区城市建设局网站/360推广怎么收费
在沪江日语网上看到的感觉很有意思特分享出来给日语初学者很不错哈! 转载于:https://www.cnblogs.com/zhang747725388/archive/2012/03/10/2388607.html...
网站维护能自己做吗/英文网站seo
实验16:EEPROM-IIC 主程序 /************************************************************************************** * EEPROM-IIC实验 * 实现现象:下载程序后数码管后4位显示0,按K1保存显示的数据&#x…...
中国移动积分商城/南宁seo产品优化服务
PAGEPAGEPAGE 2PAGE \* MERGEFORMATPAGE \* MERGEFORMAT 1综合自动化及六大系统设备安装明细表序号设备名称型号规格单位订货数量安装数量剩余数量未安装原因备注一、综合自动化硬件部分1机房核心交换机MACH4002-48G-L3P套2202地面环网交换机CJJ02套2203井下环网交换机KJJ58套2…...