您的位置:首页 > 理论基础 > 计算机网络

启联高并发tcp服务中间件TcpServer

2013-05-07 12:58 204 查看
基于goolge的开源V8引擎,采用Javascript语言编写,事件驱动、非阻塞I / O模型、体积小、高效的数据密集型tcp服务中间件,目前已经用于启联的gps定位平台,已稳定可靠的运行一个月,该tcp服务中间件运行时开启命令端口和服务端口,命令端口用于和解析服务通信,服务端口和tcp客户端通信,中间件会将tcp客户端发来的数据压入队列,解析服务可以通过命令通道发送指令获取数据,同时解析服务可以发送指令指定中间件向具体的tcp客户端发送数据。

该tcp服务中间件经过测试,可同时保持7万个Socket在线实时数据通信,理论上应不只这个数,由于我们测试服务器百兆网口限制,高出这个数值时,会出现很多socket掉线情况,我们会在不久将来,加大服务器配置,以及增加pc客户端数量测试其最高并发数。

(一)中间件数据队列

中间件接收tcp客户端发来的数据首先压入到数组

数组元素数据格式:

(socket编号)16进制数据
如:
redata[0]="(12)6461746131"

redata[1]="(13)6461746132"

(二)解析服务与中间件交互协议

1.获取数据指令

getdata|
解析服务发送“getdata|”,中间件每次响应从数组第一个元素往后最多50条socket数据,这些数据之间直接粘连,末尾以"|"作为停止位,同时从数组中删除提取出的元素以节省空间
如:

(12)6461746131(13)6461746132|

如果队列中没有数据,则返回“no data”

解析服务收到“no data”,应减慢发送"getdata|"的频率。

2.发送数据指令

senddata:socket编号:16进制数据|
解析服务可以一次向多个socket发送数据,多个senddata指令可以粘连在一起,用"|"
如:

senddata:12:6461746131|senddata:12:6461746132|

中间件收到上述指令用指定的socket发送数据到tcp客户端,不做响应。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐