配置跨服

配置跨服

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

一、境配置

硬件环境: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和端口号后,与跨服服务器断开连接,重新连接到原服务器上。

时间: 2024-10-16 14:08:53

配置跨服的相关文章

游戏跨服架构进化之路

江贵龙,游戏行业从业8年,历任多款游戏项目server主程.server负责人. 关注游戏server架构及优化,监控预警,智能运维,数据统计分析等. 1.背景 尽管游戏市场竞争激烈,产品行局变动较大,但游戏产业一直处于稳步增长阶段,不管是在端游.页游.手游还是已经初露端倪的H5游戏. 能够预见,游戏类型中,MMOARPG游戏仍然会是引领市场的主流趋势,贡献着大部分流水.市场上也仍然在不断涌现精品.研发团队对MMO游戏的探索从来未间断过,从付费模式的改变,到题材多元化,次时代的视觉效果.更成熟的

System.Web.Http.Cors配置跨域访问的两种方式

System.Web.Http.Cors配置跨域访问的两种方式 使用System.Web.Http.Cors配置跨域访问,众多大神已经发布了很多文章,我就不在详细描述了,作为小白我只说一下自己的使用心得.在webapi中使用System.Web.Http.Cors配置跨域信息可以有两种方式.  一种是在App_Start.WebApiConfig.cs的Register中配置如下代码,这种方式将在所有的webapi Controller里面起作用. using System; using Sys

win2003 配置跨域邮件服务器

win2003 配置跨域邮件服务器

nginx配置跨域、gzip加速、代理详细讲解

1.配置跨域 这个很简单,直接打开配置nginx.conf ,在http下配置下面三行代码:当然如果你是想某一个虚拟主机下跨域,那就在哪个server下面添加 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-Requested-With; add_header Access-Control-Allow-Methods GET,POST,OPTIONS; 2.配置gzip,压缩访

vue开发环境配置跨域,一步到位

本文要实现的是:使用vue-cli搭建的项目在开发时配置跨域,上线后不做任何任何修改,接口也可以访问,前端跨域解决方案 production:产品 生产环境 development:开发 开发环境 1.开发环境设置跨域 使用工具:vue-cli自带的配置 配置目录 /config/index.js //自行复制黏贴 proxyTable: { '/apis':{ target: 'http://10.1.63.26:19080/', // 后台api changeOrigin: true, //

用openvswitch配置跨节点的docker网络环境

在一篇随笔中,我们已经尝试了在不依赖工具的情况下设置docker的ip,连我都想吐槽,MD单机都这么麻烦,在多机的环境中岂不是要了我的小命! 本文就是为了多机环境中各个节点的容器通信而做的,网络拓朴如下,这里用到了openvswitch工具. openvswitch为我们建立一个扩展到三层网络的网桥,我们知道vlan是不能跨子网的,openvswitch利用了隧道技术,将二层的报文用三层的协议(udp/sdn)重新封装,从而实现二层网络在三层中进行扩展:如下图: openvswitch是一个比较

web.config 配置跨域问题

<httpProtocol> <customHeaders> <!-- 跨域配置 --> <add name="Access-Control-Allow-Origin" value="*" /> </customHeaders> </httpProtocol>

nginx配置跨域访问

前端要在本地测试ajax接口,无法跨域访问,所以在测试环境的nginx配置了跨域支持,方法如下: 在nginx.conf文件, http块下配置 42 #support cross domain access 43 add_header Access-Control-Allow-Origin *; 44 add_header Access-Control-Allow-Headers X-Requested-With; 45 add_header Access-Control-Allow-Meth

nginx里配置跨域

发布于 881天前  作者 wendal  1404 次浏览  复制  上一个帖子  下一个帖子 标签: nginx 跨域 if ($request_method = OPTIONS ) { add_header Access-Control-Allow-Origin "*"; add_header Access-Control-Allow-Methods "GET, OPTIONS, POST, GET"; add_header Access-Control-Al