検索

原网址: 我们的游戏上个星期经历了第一个数据合服。简单说,就是把2个数据库合并在一个数据库,让2个服务器的玩家一起玩。 过程简直是惊心动魄,最终还是安全完成任务。 本文就分享下合服的各种技术细节。 需求说明: -------------------------- 要把2个服

原网址:  

我们的游戏上个星期经历了第一个数据合服。简单说,香港空间,就是把2个数据库合并在一个数据库,让2个服务器的玩家一起玩。

过程简直是惊心动魄,最终还是安全完成任务。

本文就分享下合服的各种技术细节。

 

需求说明:

--------------------------

要把2个服务器玩家合并,首先外部对玩家而言是不变的,包括了登陆游戏的URL,游戏中的角色等;但是物理上,确是一台服务器一个数据库。

简单的说,一服的玩家用一服入口登陆,玩一服账号;二服的玩家用二服入口登陆,玩二服账号;

即使我只有1个账号,但是不同入口登陆,依然能使用不同游戏账号进行游戏。

 

数据库设计

--------------------------

要实现合服,首先表主键必须全部使用代码生成,并用服务器编码作为前缀。

例如我的一服表主键就是 001GMxxxxxxxxxxxxxxxx。 二服就是002GMxxxxxxxxxxxxxxxx。这样合服的时候,就不需要对数据进行预处理了。直接导入。

 

其次,使用平台用户使用一个账号,登陆不同服,要获得不同账号,因此在游戏的玩家表,要通过服务器编码进行区分,例如:

Usr_Profile

:usercode 主键

:username 平台账号

:servercode 服务器编码

这样,根据传入的username+servercode就知道应该获取什么服务器账号了。

 

游戏中,玩家通过昵称识别对方,因此合服的时候,必须对昵称进行修正,防止重复,因此所有昵称都要添加后缀。我们最终方案就是添加 .x服 这个后缀。

 

有了这3方面保证,合服就变得简单了。(简单个屁。。。)

 

合服流程

--------------------------------

1. 数据库分析准备

做事前都要先准备。因此首先要对数据库表结构进行分析,判断什么表结构需要合服,什么可以忽略。

我们游戏有60多张表,其中仅仅27张表需要合并,其他的都是配置表、日志表,都不需要合并。

 

2. 数据备份

这部不用说了,首先要对数据库全备份,防止操作失误,导致数据丢失了。一般就在本机MySQL新建一个backup数据库, 然后使用bult insert进行复制,速度很快。当然,备份的时候,对于体积很大的日志表,可以跳过了。

 

3. 数据删减

这部分很重要,一个网页游戏有接近80%的账号是死号,因此合服的时候必须先过滤掉死号。规则如下:等级小于10级、没有充值、最近登录时间大于30天的,全部清除。

然后,就是上文提到的27张表中,与被淘汰账号相关的数据,也清除。

这个清除量实际上非常大的,我有张数据表接近30W数据,结果一清就清了20W,超级舒服。

 

4. 数据检测

这部分也很重要,因为我们第二个服务器当时配置错了,没有使用服务器编码作为主键,导致与一服数据存在冲突的可能,因此需要对27张表的主键进行检测,判断前缀是否002,如果不是,就要进行手动修正了。

 

5. 数据修正

这块主要针对存在主键冲突的数据进行修正,一般用SQL即可,大概耗时30~60分钟,我就用个SQL,例如 update xxx set pk = concat('001',substring(pk,4)),进行数据修复。

当然,修复前,需要对表结构进行分析,不能出现遗漏,香港服务器,特别是外键关联。

 

6. 数据导出

不要尝试使用代码等方式进行合服,速度太慢了。我使用SQLYog,对所有表进行导出,其中插入配置为Bult Insert,导入速度非常快。

 

7. 数据导入测试

最终导入的时候,要测试,看看导出的SQL是否存在问题。

 

8. 导入。

这部完成,合服成功了。

 

貌似非常简单的步骤,实际上却问题多多。接下来我将说明实际部署中存在的陷阱。

 

 

合服 生存大考验

------------------------------

1. 合服的表结构不匹配

当时我合服的时候,发现表总是导不进去,提示主键重复。不可能的啊。。从一个不重复主键的表导入会提示重复?

检查了很久发现,服1的主键是21位,服2的主键是22位,结果导入的时候22位的主键自动省略了最后一位,自然会产生了主键重复。。。

 

2. SQLYog该死的bug

SQLYog改表结构竟然和实际表结构不对应。我明明修改了char(100),可是数据库一看,还是char(21). 最终只好用命令行修改。。

嗨。关键时候,这些工具总是找麻烦。

 

3.  SQLYog导入出错竟然没有提示

也是该死的工具问题,最后我使用navicat配合SQLYog进行操作。

 

4. 部分动态生成的数据,无法批量导入

例如竞技场排名,不允许出现相同排名。所以这块数据需要在玩家登陆的时候自动生成。此类型数据都是动态生成的,无法通过批量修正,都需要通过游戏逻辑进行补全。

因此,合服的时候,这块数据将不参与合并。

 

合服历险记

------------------------------

说了这么多理论知识,接下来就说说那天我合服的经过。本来在测试机上一切顺利的,不到2个小时就合并了。可是真正操作起来, 却用了8个小时。。。。

 

开始还顺利,3个多小时就做好了数据备份、删除、修正。可是导入的时候发现总是提示主键冲突,于是不断找原因,1个小时过去,才发现原来表结构不匹配。晕死。

 

接下来导完数据,4个小时过去了,开服。一运行,玩家就投诉了,说中文乱码、丢失装备、丢失武将。

 

丢失装备、武将问题,我又花了1个小时检查,原来是潜在部分主键仍然丢失最后1位,导致找不到。这个时候,我不能停机,因此我对比2个数据库有差异的表,生成一堆update的SQL,然后手动操作。可是发现SQL多了,SQLYog会卡死,游戏也会卡死。我只好开了10多个SQLYog,采用并行方法,把SQL拆分成50一组,进行手动操作。。累死了。

 

对于武将名字乱码,是当时生成SQL文件的时候,编码格式错误了。可是武将数据接近有3W条,不可能进行手动更新了,因此我写了个更新程序,进行后台更新。这块就花了1小时。

 

终于游戏Exception少了,本来可以歇口气了,结果运营说,玩家充值失败!我检查代码,原来充值接口没有使用servercode去区分玩家账号,又是疏忽。

 

第二天,运营又投诉说,商会采集资源失败,回去检查,才发现原来漏了对账号中商会主键进行修正,又是疏忽。

 

小结

----------------------------

本来已经提前预演了2天,没有问题,可是上到战场还是错漏百出。

如果准备过于详细,会导致发展缓慢。如果准备不充分,又会很多问题。这个是个进退两难的情况。最终,我偏向了迅速准备,快速修正的方案。

毕竟,预演的时候找不到的问题,网站空间,给再多的时间也不一定找到。还不如直接上战场,随机应变。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Steam 未检测到 Windows 11/10 中已安装的游戏,如何修复Steam 未检测到 Windows 11/10 中已安装的游戏,如何修复Jun 27, 2023 pm 11:47 PM

Steam客户端无法识别您计算机上的任何游戏吗?当您从计算机上卸载Steam客户端时,会发生这种情况。但是,当您重新安装Steam应用程序时,它会自动识别已安装文件夹中的游戏。但是,别担心。不,您不必重新下载计算机上的所有游戏。有一些基本和一些高级解决方案可用。修复1–尝试在同一位置安装游戏这是解决这个问题的最简单方法。只需打开Steam应用程序并尝试在同一位置安装游戏即可。步骤1–在您的系统上打开Steam客户端。步骤2–直接进入“库”以查找您拥有的所有游戏。第3步–选择游戏。它将列在“未分类

欢乐追逃游戏即将开始!亚瑟和安琪拉520限定皮肤震撼登场!欢乐追逃游戏即将开始!亚瑟和安琪拉520限定皮肤震撼登场!May 19, 2023 pm 08:23 PM

5月18日消息,为了庆祝即将到来的520节日,《王者荣耀》推出了令人期待的活动和全新限定皮肤。这次的活动将带来一场名为"追逃游戏"的欢乐庆典,而亚瑟和安琪拉将成为主角,以传说品质的520限定皮肤惊艳登场。据ITBEAR科技资讯了解,亚瑟和安琪拉是《王者荣耀》中备受喜爱的英雄角色,他们以各自独特的魅力和技能征服了众多玩家。而这次的520限定皮肤让他们焕发出全新的魅力,给玩家们带来不一样的游戏体验。安琪拉520限定皮肤以马戏团为主题,她身穿充满节日氛围的撞色裙子,伴随着皮皮精灵的

用Python写游戏脚本原来这么简单用Python写游戏脚本原来这么简单Apr 13, 2023 am 10:04 AM

前言最近在玩儿公主连结,之前也玩儿过阴阳师这样的游戏,这样的游戏都会有个初始号这样的东西,或者说是可以肝的东西。当然,作为一名程序员,肝这种东西完全可以用写代码的方式帮我们自动完成。游戏脚本其实并不高深,最简单的体验方法就是下载一个Airtest了,直接截几个图片,写几层代码,就可以按照自己的逻辑玩儿游戏了。当然,本篇文章不是要讲Airtest这个怎么用,而是用原始的python+opencv来实现上面的操作。这两天我写了一个公主连结刷初始号的程序,也不能算写游戏脚本的老手,这篇文章主要是分享一

电脑游戏下载到d盘还是c盘电脑游戏下载到d盘还是c盘Mar 16, 2023 pm 03:02 PM

电脑游戏下载到d盘。C盘是系统盘,是专门为安装系统而设置的磁盘空间,里面安装的东西越少越好;C盘安装的东西多,电脑就会很卡。C盘系统运行会产生很多缓存与磁盘碎片,这些都会影响系统的运行及速度;如果再安装游戏或者软件,会更加加速缓存与碎片产生的数量与速度。

Win11玩游戏卡顿怎么解决Win11玩游戏卡顿怎么解决Jun 29, 2023 pm 01:20 PM

  Win11玩游戏卡顿怎么解决?近期有用户给自己的电脑升级了Win11系统,但是在后续在使用电脑玩游戏时,游戏却出现了卡顿掉帧的情况,这是这怎么回事呢?出现这一情况的原因有很多,下面小编为大家带来了几种方法解决,我们一起来看看吧。  Win11玩游戏卡顿掉帧的解决方法  一、散热  1、有些设备在温度过高时,会通过降频的方法来降低温度。  2、这时候可以先打开系统设置,在左上角搜索电源,点击显示所有结果。  3、然后在下拉列表中打开选择电源计划。  4、再勾选开启高性能模式即可。  5、如果高

win7玩游戏怎么优化可以让游戏更加流畅win7玩游戏怎么优化可以让游戏更加流畅Jul 02, 2023 pm 01:53 PM

  win7玩游戏怎么优化可以让游戏更加流畅?如果你喜欢使用电脑来玩一些比较大型的游戏,那么就可以对你的电脑进行系统的优化。优化之后可以更好的发挥出电脑硬件的性能,获得更高的流畅性,玩游戏时获得更好的游戏体验。win7玩游戏优化可以让游戏更加流畅方法  1、在桌面上找到计算机,右键选中它并点击属性。  2、在系统属性面板中找到高级系统设置。  3、找到性能设置。  4、勾选让windows选择计算机的数值设置。以上就是【win7玩游戏怎么优化可以让游戏更加流畅-win7玩游戏优化可以让游戏更加流

Win7游戏帧数优化方法Win7游戏帧数优化方法Jul 15, 2023 am 08:05 AM

针对游戏游戏玩家来讲,游戏的帧率针对游戏的流畅性、可操作性感受全是十分核心的。客户不仅仅可以根据更新配备来提升游戏帧数,变更显卡设置还可以保证相同的实际效果。下边咱们就一起来看看详细的方式吧。游戏帧数优化技术:1、鼠标右键桌面上空白,开启“NVIDIA操作面板”。2、挑选“配备Surround、PhysX”。3、启用图例部位,随后将下边滚轮拉到特性部位。4、还能够点一下“管理方法3D设定”5、将垂直同步关掉,如下图所示。6、再将三重缓冲关掉。7、通过以上的提升,大家就可以在玩游戏时得到更高的帧率

win10电脑玩一会游戏卡死画面定格怎么办win10电脑玩一会游戏卡死画面定格怎么办Jul 09, 2023 pm 05:17 PM

在操作电脑系统的过程中,我们经常会遇到各种各样的一些问题,比如说电脑用着用着就死机等情况时有发生。最近就有网友说自己的win10电脑玩一会游戏卡死画面定格怎么办?别急,下面小编就教下大家win10电脑玩游戏卡死画面定格的解决方法。具体的解决方法如下:1、同时按下快捷键Ctrl+Alt+Delete,调出任务管理器。2、切换到进程选项中,点击windows资源管理器,再点击右下角的重新启动。3、如果系统桌面上的图标都消失的情况下,我们点击文件,找到并单击运行新任务选项。4、在输入框里输入explo

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境