说明
上面一节通信协议是制定了schat业务系统所使用的业务数据描述协议,但在实际的数据传输过程中,包括服务器与服务器之间,服务器与客户端之间,它们是作为传输协议的有效载荷payload来进行发送的。所以这里就涉及到更下一层的数据传输过程。也包括两方面,服务器之间与服务器客户端之间.
服务器之间传输
服务器之间的数据传输使用了proc_bridge作为进程通信组件。具体的proc_bridge细节参见本人的github地址:proc_bridge。这里我们只需要知道参与通信的进程需要指定一个proc_id进程ID,一个与之对应的proc_name进程名,以及整个系统处于的命名空间namespace.
schat内部集成了proc_bridge,所有的配置都位于schat/proc_bridge/schat/bridge.cfg,内容如下:
#PROC
#每一行表示一个需要通信的进程
#格式:进程名 = 全局ID : IP : PORT : SEND_SIZE : RECV_SIZE
#进程名:业务进程名.
#全局ID:业务进程在具体业务系统中的唯一ID. id属于[1,1000]为保留id,请勿使用
#IP: 业务进程部署的IP
#PORT: 业务进程在proc_bridge系统中的通信端口
#SEND_SIZE: 业务进程<-->委托carrier进程的发送缓冲区长度(最大包数目). null or <=0 则使用[DEFAULT_SEND_SIZE]
#RECV_SIZE: 业务进程<-->委托carrier进程的接收缓冲区长度(最大包数目). null or <=0 则使用[DEFAULT_RECV_SIZE]
[PROC]
conn_serv-1 = 2001:127.0.0.1:11000
logic_serv-1 = 3001:127.0.0.1:12001
db_logic_serv-1 = 4001:127.0.0.1:13001
conn_serv-2 = 2002:127.0.0.1:11002
logic_serv-2 = 3002:127.0.0.1:12002
db_logic_serv-2 = 4002:127.0.0.1:13002
disp_serv-1 = 5001:127.0.0.1:14001:60
disp_serv-2 = 5002:127.0.0.1:14002:60
chat_serv-1 = 6001:127.0.0.1:15101
chat_serv-2 = 6002:127.0.0.1:15102
db_chat_serv-1 = 7001:127.0.0.1:16401
db_chat_serv-2 = 7002:127.0.0.1:16402
online_serv-1 = 8001:127.0.0.1:16505
online_serv-2 = 8002:127.0.0.1:16506
file_serv-1 = 9001:127.0.0.1:13798
file_serv-2 = 9002:127.0.0.1:13799
dir_serv-1 = 10001:127.0.0.1:11245
[/PROC]
#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
chat_serv-1:disp_serv-[1-2],db_chat_serv-1
chat_serv-2:disp_serv-[1-2],db_chat_serv-2
db_chat_serv-1:chat_serv-1
db_chat_serv-2:chat_serv-2
disp_serv-1:logic_serv-1,logic_