合服技术总结

——蔡剑彬 C++服务器开发工程师 ([email protected])

合服技术的核心,就是将几个服的数据库合并,是十分简单的。但具体要注意的细节也是很重要的,比如如何从两个服务器入口进入到同个服务器?如何区分同一账号在两个服创建的角色?下面就按照玩游戏的流程来解决这些问题。

首先打开客户端时,有选服的功能,这个其实是让客户端选择要连接的服务器的IP地址和端口号。点击“进入游戏”时,就会通过socket连接,建立客户端和服务器的连接,此时服务器和客户端便可以通信了。基于这个原理,在合服的时候,将原本的服务器入口信息修改为同一个服务器的IP和端口号,就能够通过这两个入口进入同个服务器。

比如,现有1服(192.168.1.100, 8888)和2服(192.168.1.101, 8888),通过这两个入口,原本是可以进入两个不同的服务器。但是现在由于玩家少了,需要将两个服合起来,那么就需要这两个端口进入同个服务器。新开启的服务器的IP是192.168.1.102,那么将1服和2服的IP改为192.168.1.102后,玩家无论是通过哪个入口,都是和192.168.1.102服务器通信。

然后,进入游戏后,需要账号密码进行登录。这个验证动作,需要去数据库中寻找相应的数据,如果匹配则让其登录,否则不予通过。那么就需要将两个服的数据库整合在一起,整合很简单,用INSERT语句就可以了,或者通过可视化操作数据库软件也行。但这里有个问题,数据库中的主键会不会重叠呢?这里就涉及到了服务器设计时,一个比较重要的地方,就是服务器ID。服务器之间的区别就通过这个ID来区分。地址和端口号都无法区分各个服务器,仅仅只是能够确定服务器的位置,可以随意该。而服务器ID就不一样,每个服务器都有自己的一个特有ID,数据库的各个主键要和这个ID挂钩,那么在整合数据库的时候就不必担心主键是否会重叠了。

另外,要实现这个合服技术,还需要在数据库中设计一个表(gameserveraddress),用于存储其他服务器的信息(ID,IP,PORTNUM)。因为在玩家登陆的时候,会去解析该账号,最终得出整个账号对应的ActorID的服务器ID是否是本服务器,如果不是,则去gameserveraddress表中获取允许接入的服务器信息(这些信息在服务器初始化时已加载到内存)。这个是可拓展设计,能使合服变得十分轻松。

最后验证通过了,则根据账号对应的服务器ID,将原本服务器上面的角色信息返回给客户端。这样就能够解决在合服前,分别用同一账号在两个服注册了,合服后不会出现角色混乱的问题。

时间: 2024-11-08 08:26:54

合服技术总结的相关文章

合服日志 2016-1-27

双线一区合并至双线二区 合服工具新加功能: 合并商城购买上限(哪个服务器购买上限高以哪边为主) 修改tbl_JoyDock_jmallbuylimit_buylimit 出现问题: 合服结束后,国家结盟状态未清除.原因是之前增加的表tbl_ClanDock_allyCampsB未处理.而handle_clan.py是将tbl_ClanDock表分开处理的.未特殊处理的表格就被合并了. 数据信息(截止到2016-1-11): 双线一服: 2016-1-11当日登陆账号数量:5332 总角色数量:1

合服测试(二)

很久没在这里写了,把其他地方自己写的也进行了搬家. 这里主要还是介绍业务层的,进行这些测试后就简化的完成本次的合服测试. 合服 测试情况 xxx内网测试数据清除 pass xxxx合区后测试(随机区间服务器配置账号登陆和平台发邮件代替充值) 进行中 xxxx二次合区接口测试 pass xxxx合区后测试(每个合服区间的服务器配置账号登陆和平台发邮件代替充值)进行中 平台迁移测试 计划 阶段一:新平台的测试(注册,登陆注销,跳转用户中心,充值)pass 迁移后 未开始 --基于渠道(A) xxxx

游戏服务器合服相关

年后一直在做手游服务器开发,之前做了一个系统,新加了一个数据库表,但是忘记修改合服工具了,合服的时候该表漏合,导致运维部门的同时忙活了大半夜.第二天早上我8点到公司的时候(离公司近,每天7点起床),发现运维部的同事已经到了,之前我每天早上到公司的时候,除了内务部的阿姨,就是客服部的小伙伴们,所以,我也惊呆了.聊着聊着发现运维部的同事晚上通宵了,根本没有回家,然后又得知是合服工具漏合了一个表,但是这个表是我加的.唉,我赶紧连说了几声抱歉.所以赶紧整理下合服相关的知识. 注:本人并没有真正合过服,一

合服日志 2015-11-25

电信一服合并至双线二服,改名为碧水云天 合服时间:7:00~9:30 合服工具新加功能: 查看两个服务器中被领取的冲级经验奖励数量,同样50级奖励,哪边被领取的多以哪边数量为主记录. 涉及到的表:tbl_JoyDock, tbl_JoyDock_rbhlv_limit_blimit. 出现问题: 1. 测试发现合服后,角色在不同账号下. 出现原因:测试方法的问题,所有Account的dbid都是运维服务器发过来的.即使合并服务器Account.dbid也不会出现重复的可能.18测试服务器是未开启

In-Cell、On-Cell和OGS全贴合屏幕技术区别

昨天刚发布的小米3用的是OGS全贴合屏幕技术,包括魅族MX3也是同样的技术,但是iPhone5是In-Cell屏幕技术,什么才是全贴合?它们之间到底有何区别?哪个好?小编今天就来普及一下全贴合屏幕技术的知识,包括In-Cell.On-Cell以及OGS. 什么是全贴合? 智 能手机的竞争变得越来越激烈,许多厂商都希望通过硬件的差异化来凸显自己,什么IPS.SLCD.视网膜.ClearBlack等新名词不断的出现,很多 时候在我们还未理解新技术的时候新的技术名词又诞生了.最近又有不少手机厂商开始以

合服导致 globalserver 起不来的问题

globalserver 报错 RMIInitArmyBackObject InitError 根据报错信息一路追查下来,发现某个帮派的数据解析 json 的时候报错.监视变量,找出这段字符串,大致结构如下: { "army_name":"\u98ce\u4e91\u805a\u53d8", "army_level":1, "notice":"\u6b22\u8fce\u5404\u4f4d\u52a0\u5165\

阿里云小蜜获评"智能客服技术产品/解决方案大类推荐品牌"

摘要: 7月24日,由客户世界机构主办,中国呼叫中心与电子商务发展研究院.全球呼叫中心产业联盟联合支持的客户世界? 洞察者2018北京论坛在丽景湾国际酒店圆满举行.作为全球领先的智能客服产品及方案提供商,阿里云小蜜获得本次大会主办方颁发的"智能客服技术产品/解决方案大类推荐品牌"奖项. 7月24日,由客户世界机构主办,中国呼叫中心与电子商务发展研究院.全球呼叫中心产业联盟联合支持的客户世界? 洞察者2018北京论坛在丽景湾国际酒店圆满举行.作为全球领先的智能客服产品及方案提供商,阿里云

高精度STL贴合变形技术 助力模具智能设计上升新高度

模具制造水平不仅是衡量一个国家制造水平高低的重要指标,而且在很大程度上决定着该国航空航天.汽车.机械.电子等众多产品的质量和发展.模具行业技术全面的提升,离不开CAD/CAE/CAM一体化技术.三维设计技术等高新技术的支撑.作为国产工业软件典型代表,华天软件持续不断在为提升中国模具设计的品质和效率而努力,并相继研发了模面精细化设计的多个特色模块以及模具结构快速设计模块. 目前,三维CAD/CAM软件 SINOVATION模面精细化解决方案(回弹补偿+间隙设计+凹R角避让等)在模具行业大受欢迎,已

合服测试(一)

1)提前在内网进行一些业务的预演,比如等级or积分排行榜信息,pvp数据,pve关卡排名等.<--根据游戏业务来 2)在内网里建立起码2个库,执行脚本合并. 3)预演一场断开,脚本失败后,再次执行是否数据出现异常. 4)提前准备好外网所需要用到的区服账号,记录roleid,区服信息,渠道账号.密码. 字段名都被引用,需要根据实际 1)归集合并的游戏库到同一个mysql服务器, 以下假设是1,2,3三个区合并, 数据库名字分别是gm1,gm2,gm3. 2)建立和现有游戏库相同结构的空库,空表.