SGame 新加进程(1)

这里以disp_serv为例来说明新建一个进程所需的代码结构和相关配置

通信配置

首先我们需要将新的进程加入proc_bridge的通信链路中.

  • 打开sgame/proc_bridge/sgame/bridge.cfg,新加一组disp_serv进程
    我们为disp_serv组的两个进程分别分配了proc_id:40001和40002,并让其委托进程分别监听于11000,11001端口

 

[PROC]
conn_serv-1 = 10001:127.0.0.1:10060
logic_serv-1 = 20001:127.0.0.1:10083
db_logic_serv-1 = 30001:127.0.0.1:10070
conn_serv-2 = 10002:127.0.0.1:10061
logic_serv-2 = 20002:127.0.0.1:10084
db_logic_serv-2 = 30002:127.0.0.1:10071
disp_serv-1  = 40001:127.0.0.1:11000:60
disp_serv-2  = 40002:127.0.0.1:11001:60
[/PROC]
  •  配置disp_serv的通信信道.我们对disp_serv的功能定位为互通不同的逻辑组,所以每个disp_serv需要与每个logic_serv互通,我们来看配置关系

 

#CHANNEL
#用于配制每个进程的发射通道。如果A需要与B互相通信,则A需要配置对B的发送通道;同时B配置对A的发送通道
#格式: proc_name:target_proc_name1,target_proc_name2,...
####通配符处理:在进程名合乎规范
#   proc_name='prefix+数字' 时,支持简单的通配处理: 
#   prefix[A]:prefixA
#   prefix[A-B]:prefixA 直到 prefixB (注意A<=B)
#   prefix[A;B]:prefixA 和 prefixB
#   prefix[A-B;C]:prefixA 直到 prefixB 和 prefixC
[CHANNEL]
conn_serv-1:logic_serv-1
logic_serv-1:conn_serv-1,db_logic_serv-1,disp_serv-1,disp_serv-2
db_logic_serv-1:logic_serv-1
conn_serv-2:logic_serv-2
logic_serv-2:conn_serv-2,db_logic_serv-2,disp_serv-1,disp_serv-2
db_logic_serv-2:logic_serv-2
disp_serv-1:logic_serv-1,logic_serv-2
disp_serv-2:logic_serv-1,logic_serv-2
[/CHANNEL]

 我们在logic_serv后新增了一组对disp_serv的发送通道;为每个disp_serv增加了对每个logic_serv的发送通道

 

动态添加

  • 如果我们之前成功部署过proc_bridge,那么在sgame/proc_bridge/sgame/目录下会有bride_build.py工具

 

python bridge_build.py -h
usage:./bridge_build.py <OPTION> or python ./bridge_build.py <OPTION>
OPTION:
-h: show help
-a: deploy and build all proc bridges
-A <proc_name>: deploy and build a bridge of <proc_name>
-c: create all proc-bridge cfg files
-C <proc_name>: create proc-bridge cfg file of <proc_name>
-I: print cfg parsing info
-p: push all proc-bridge cfg file
-P <proc_name>: push proc-bridge cfg file of <proc_name>
-r: reload cfg file by all proc-bridge
-R <proc_name>: reload cfg file by proc-bridge of <proc_name>
-s: shut down all proc bridges
-S <proc_name>:shut down proc-bridge of <proc_name>

 具体的用法可以参考 https://github.com/nmsoccer/proc_bridge/wiki/construct-tool

  • 我们使用manager工具查看当前的链路状况:进入sgame/proc_bridge/sgame/目录

 

./manager -i 1 -N sgame
输入命令STAT *
STAT *
==========================
【STAT *】
==========================

----------[1]----------
<PROC>               logic_serv-2:20002
<ADDR>               127.0.0.1:10084
<MY-CONNECT>         connected
<CONNECT>
*connect all:2020-08-11 20:08:42

----------[2]----------
<PROC>               conn_serv-2:10002
<ADDR>               127.0.0.1:10061
<MY-CONNECT>         connected
<CONNECT>
*connect all:2020-08-11 20:08:44

...

----------[6]----------
<PROC>               logic_serv-1:20001
<ADDR>               127.0.0.1:10083
<MY-CONNECT>         connected
<CONNECT>
*connect all:2020-08-11 20:08:45

 已有6个进程,是两组逻辑组的六个进程

  • 我们使用最新的bridge.cfg 执行python ./bridge_build.py -c 为所有的通信节点重新生成配置

 

python ./bridge_build.py -c
---------[Parse Config file]------------
---------[Create Cfg]------------
create_cfg success!
[nmsoccer@VM_0_10_centos sgame]$ tree  cfg/
cfg/
|-- __carrier_manager__-0
|   `-- carrier.cfg
|-- conn_serv-1
|   `-- carrier.cfg
|-- conn_serv-2
|   `-- carrier.cfg
|-- db_logic_serv-1
|   `-- carrier.cfg
|-- db_logic_serv-2
|   `-- carrier.cfg
|-- db_serv-1
|   `-- carrier.cfg
|-- disp_serv-1
|   `-- carrier.cfg
|-- disp_serv-2
|   `-- carrier.cfg
|-- logic_serv-1
|   `-- carrier.cfg
`-- logic_serv-2
    `-- carrier.cfg

 可以看出disp_serv的配置已经生成OK鸟

  • 先主动部署并拉起新的disp_serv节点

 

python ./bridge_build.py -A disp_serv-1
---------[Build Bridge <disp_serv-1>]------------
<<proc_name: disp_serv-1>>
./deploy_proc.sh disp_serv-1 40001 127.0.0.1 11000 nmsoccer /home/nmsoccer/proc_bridge/sgame 0 60 50 sgame
try to deploy disp_serv-1 to nmsoccer@127.0.0.1[11000]:/home/nmsoccer/proc_bridge/sgame
copy carrier.40001.tar.gz and carrier.40001.md5 to /home/nmsoccer/proc_bridge/sgame/disp_serv-1 success!
unzip carrier.40001.tar.gz success~
try to delete shm...
try to create shm...
try to start carrier...
name_space:sgame
deploy finish

python ./bridge_build.py -A disp_serv-2
...

 

  • 为全部节点推送配置: python ./bridge_build.py -p
  • 全部节点重新加载配置:python ./bridge_build.py -r
  • 我们使用manager工具查看当前的链路状况,重点观察logic_serv与disp_serv的连接情况:

 

./manager -i 1 -N sgame
----------[1]----------
<PROC>               disp_serv-2:40002
<ADDR>               127.0.0.1:11001
<MY-CONNECT>         connected
<RUN>
*reload config file:2020-08-11 20:22:51 result:success
*ERROR:upper process may not run:2020-08-11 20:24:57
<CONNECT>
*connect all:2020-08-11 20:24:56

----------[2]----------
<PROC>               disp_serv-1:40001
<ADDR>               127.0.0.1:11000
<MY-CONNECT>         connected
<RUN>
*reload config file:2020-08-11 20:22:51 result:success
*ERROR:upper process may not run:2020-08-11 20:24:58
<CONNECT>
*connect all:2020-08-11 20:24:56

----------[3]----------
<PROC>               logic_serv-2:20002
<ADDR>               127.0.0.1:10084
<MY-CONNECT>         connected
<RUN>
*reload config file:2020-08-11 20:22:51 result:success
<CONNECT>
*connect all:2020-08-11 20:24:57

----------[8]----------
<PROC>               logic_serv-1:20001
<ADDR>               127.0.0.1:10083
<MY-CONNECT>         connected
<RUN>
*started:2020-07-07 14:35:17
*reload config file:2020-08-11 20:22:50 result:success
<CONNECT>
*connect all:2020-08-11 20:24:58

可以随机看一组ROUTE,我们执行命令ROUTE logic_serv-1 disp_serv-2
【ROUTE logic_serv-1 disp_serv-2】
==========================
                                 opted      opting     max_size   min_size   ave_size   dropped    latest_drop          reseted    latest_reset         delay      buff       buffing    max-buffed

-----------------------------------------------------
>>disp_serv-2                      0          0          0          0          0          0          -                    0          -                    0          204842     0          0         

<<disp_serv-2                      0          0          0          0          0          0          - 

 可以看出logic_serv与disp_serv均已互连,动态更新完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值