文档章节

配置跨服

七木网络科技
 七木网络科技
发布于 2015/06/02 10:22
字数 882
阅读 151
收藏 1

配置跨服

——蔡剑彬 C++服务器开发工程师 caijianbin668943@163.com

一、境配置

硬件境:X86 PC

境:Windows7,VS2010

二、配置步

1将编译后的GameServer和GateServer拷贝一份,并分别将其命名为GameServer_cross和GateServer_cross;

2修改GameServer_cross\data\cross下面的文件:CombinServersMap.txt和LogicServersIP.txt,修改方式如下:

CombinServersMap.txt:用于记录需要接到跨服服器的原服器ID以及原服对应的合服后的服器ID,因终连上跨服服器的服器是合服后的服器(如果有合服的),于没有合服的服器,两个ID都填写一即可(注意不要有空行!);

LogicServersIP.txt:将需要接到跨服服器的服器ID、IP以及听其他服器的端口,记录在上面,跨服服器会在启候将和记录在上面的服接起来,断开了会重连;

3将crosscfg.ini放到GameServer_cross\win32,配置文件内容如下:

[GameConfig]

;是否是跨服服器,1是,0否

iscrossserver = 1

;跨服服器的接网络监听端口

crossserver_port = 90109

;跨服服器最大接数,即最大可接几个逻辑服crossserver_count = 100

;跨服服器接受冲区大小

crossserver_recsize = 102400

;跨服服冲大小

crossserver_sendsize = 2097152

;跨服服络层休眠时间ms

crossserver_sleeptime = 20

;跨服服器网关ipcross_gateip = 127.0.0.1

;跨服服器网关端开放port

cross_gateport = 20100

(注意:尽量将跨服服器的端口都在20000以后,id都在2000以后)

4修改GameServer_cross\win32\ServerConfig.ini,将server_id修改2000,将Client_listen_port修改20100,将listen_port修改20101

5、修改GateServer_cross\Win32\ServerConfig.ini,将server_id修改2000,将Client_listen_port修改20100,将gameserverport修改20101

三、实现原理

1、跨服服务器的代码与普通逻辑服务器的代码是一致的,只是根据GameServe_cross\Wind2\crosscfg.ini里面的iscrossserver项来决定启动后走分支与普通服务器的是否一样;

2、在跨服服务器启动时,会读取两个文件,CombinServersMap.txt和LogicServersIP.txt。其中,LogicServersIP.txt是最重要的,因为它记录了跨服服务器最终连接哪些服务器。但这些服务器有些有可能是合服服务器,所以就需要CombinServersMap.txt将所有服务器对应的合服服务器id告诉跨服服务器。这样便能知道那些服可以参与跨服,以及跨服服务器实际上连接的是那些服务器;

3、角色跨服时,其实是客户端获取了跨服服务器的网关服务器的IP和端口号后,断开与当前服务器的连接,转而连接跨服服务器。相当于重新登录于一个新的服务器,但不同的是这次登录是不需要验证的;

4、跨服服务器会记录所有连接的服务器,如果角色有数据需要保存,那么就根据这个角色的ID(该ID与原服务器的ID挂钩),将原服务器的ID解析出来,接着在链表中寻找相应的服务器,最后调用该服务器的数据库服务器,将数据保存起来;

5、退出跨服服务器时,客户端获取了原服务器的IP和端口号后,与跨服服务器断开连接,重新连接到原服务器上。

© 著作权归作者所有

七木网络科技
粉丝 292
博文 323
码字总数 126061
作品 0
深圳
程序员
私信 提问
[游戏]服务端的逻辑分服与物理分服

背景 工作室也经历过好几个游戏了。服务端的架构跟实际业务需求出现过不少的冲突。导致后来花了挺多时间去擦屁股的。以最近的一个游戏举例,原本的世界观设想是一个大服的世界观。也就是只有...

技术小牛人
2017/11/14
0
0
(四)基于Spring Cloud Fegin的跨服调用

基于去年写的SpringCloud系列 由于工作原因一直没有接着往下写 现在重新捡起来 介绍下SpringCloud的其他组件 上次说到Ribbon做的负载均衡 是用的Spring提供RestTemple来做的请求 去看RestTem...

Twelve_ZX
2018/06/12
0
0
使用 kubefed 建立 Kubernetes Federation

使用kubefed建立Kubernetes Federation Kubernetes Federation(聯邦) 是實現跨地區與跨服務商多個 Kubernetes 叢集的管理機制。Kubernetes Federation 的架構非常類似純 Kubenretes 叢集,F...

openthings
2018/06/26
0
0
如何使用私有网络部署全球同服游戏服务

版权声明:本文由吴晓斌原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/178 来源:腾云阁 https://www.qcloud.com/community 近年来,随着移动互联网技...

偶素浅小浅
2016/11/09
2
0
跨集群服务——如何利用Kubernetes 1.3实现跨区高可用

编者按:这篇文章是关于Kubernetes 1.3新功能的一系列深入文章的一部分。本文是第七篇。 用户使用Kubernetes 对生产环境上的部署进行弹性伸缩,同时我们听到一个明确的声音:希望跨区域、跨数...

时速云
2016/08/09
729
0

没有更多内容

加载失败,请刷新页面

加载更多

JAVA 8 中新增 lambda 表达式的一些基本应用

import java.util.Arrays;import java.util.List;import java.util.function.Function;import java.util.stream.Collectors;public class TestLambda { public static void......

这是一只小小鸟
4分钟前
0
0
Java向word中插入Excel文件对象

前言: 在word文件中,虽然也有表格。但是有时我们想要将Excel中表格的大量数据直接插入到word文档中,这就需要用到word的插入对象的功能,也就是直接将Excel文件当做对象插入到word中。 本地的...

qianxi
6分钟前
1
0
海量数据下的注册中心 - SOFARegistry 架构介绍

SOFAStack Scalable Open Financial Architecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。 SOFARegi...

SOFAStack
9分钟前
6
0
python操作excel表格

python 对excel的操作 提示:如果需要写多个表,需要把多个表写完在保存,否则会出现表格覆盖问题 此程序 采取一边请求,一边存取,做个异常处理,即可保存已存在的数据 """# sheet的名称,...

鹏灬
12分钟前
0
0
好程序员web前端分享如何理解JS的单线程

好程序员web前端分享如何理解JS单线程,JS本质是单线程的。也就是说,它并不能像JAVA语言那样,两个线程并发执行。 但我们平时看到的JS,分明是可以同时运作很多任务的,这又是怎么回事呢? ...

好程序员IT
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部