为了更好的利用硬件资源,并对硬件资源进行统一调度,一个游戏区所具备的服务器进程不可能跑在一台服务器上面的,一般而言这些服务器进程运行存在不同的服务器上,即分布式部署,那么运行在不同服务器上的进程之间是怎么通信的呢?根据tcp/ip的socket通信原理,ip地址加端口号即可标识一个进程,所以通过一个xml配置即可实现它们之间的通信:
<config>
<server id="1001" type="1" name="superserver" ip="192.168.166.125" port="30101" ext_ip="192.168.166.125" ext_port="30101"/>
<server id="2001" type="2" name="recordserver" ip="192.168.166.125" port="40101" ext_ip="192.168.166.125" ext_port="40101"/>
<server id="3001" type="3" name="sessionserver" ip="192.168.166.125" port="50101" ext_ip="192.168.166.125" ext_port="50101"/>
<server id="4001" type="4" name="sceneserver" ip="192.168.166.125" port="60101" ext_ip="192.168.166.125" ext_port="60101"/>
<server id="5001" type="5" name="gatewayserver" ip="192.168.166.125" port="70101" ext_ip="192.168.166.125" ext_port="70101"/>
<server id="6001" type="6" name="functionserver" ip="192.168.166.125" port="80101" ext_ip="192.168.166.125" ext_port="80101"/>
...
</config>