启联高并发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客户端发来的数据首先压入到数组
数组元素数据格式:
如:
redata[0]="(12)6461746131"
redata[1]="(13)6461746132"
(二)解析服务与中间件交互协议
1.获取数据指令
解析服务发送“getdata|”,中间件每次响应从数组第一个元素往后最多50条socket数据,这些数据之间直接粘连,末尾以"|"作为停止位,同时从数组中删除提取出的元素以节省空间
如:
(12)6461746131(13)6461746132|
如果队列中没有数据,则返回“no data”
解析服务收到“no data”,应减慢发送"getdata|"的频率。
2.发送数据指令
解析服务可以一次向多个socket发送数据,多个senddata指令可以粘连在一起,用"|"
如:
senddata:12:6461746131|senddata:12:6461746132|
中间件收到上述指令用指定的socket发送数据到tcp客户端,不做响应。
该tcp服务中间件经过测试,可同时保持7万个Socket在线实时数据通信,理论上应不只这个数,由于我们测试服务器百兆网口限制,高出这个数值时,会出现很多socket掉线情况,我们会在不久将来,加大服务器配置,以及增加pc客户端数量测试其最高并发数。
(一)中间件数据队列
中间件接收tcp客户端发来的数据首先压入到数组
数组元素数据格式:
( | socket编号 | ) | 16进制数据 |
redata[0]="(12)6461746131"
redata[1]="(13)6461746132"
(二)解析服务与中间件交互协议
1.获取数据指令
getdata | | |
如:
(12)6461746131(13)6461746132|
如果队列中没有数据,则返回“no data”
解析服务收到“no data”,应减慢发送"getdata|"的频率。
2.发送数据指令
senddata | : | socket编号 | : | 16进制数据 | | |
如:
senddata:12:6461746131|senddata:12:6461746132|
中间件收到上述指令用指定的socket发送数据到tcp客户端,不做响应。
相关文章推荐
- [Socket]基于C++的纯面向对象的通用高性能大并发TCP-SERVER/CLIENT开发
- 基于C++的纯面向对象的通用高性能大并发TCP-SERVER/CLIENT开发框架实践系列之基础篇
- 高并发TCP网络服务框架
- 基于C++的纯面向对象的通用高性能大并发TCP-SERVER/CLIENT开发框架实践系列之前言篇
- SQL Server服务,SQL Server Agent,TCP/IP服务无法启动的解决方法
- boost完全开发指南第12章-并发编程 1 (采用boost-asio库封装的tcp_server)
- 基于C++的纯面向对象的通用高性能大并发TCP-SERVER/CLIENT开发框架实践系列之基础篇
- Python使用TCPServer编写(多线程)Socket服务
- Windows 2003 Server中文件共享使用TCP服务的139端口。
- tcp_server.c服务模型
- Linux下两种TCP网络服务器实现方式:循环服务&并发服务
- 基于原子探索者stm32f407开发板的ucos-iii+lwip1.4.1的tcp server并发服务器完美解决例程(转)
- Linux TCP server系列(4)-浅谈listen与大并发TCP连接
- Linux下两种TCP网络服务器实现方式:循环服务&并发服务
- 详解Linux服务器最大tcp连接数 网络编程 在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少?
- 用twisted创建tcp socket长链接amf server服务
- [Socket]基于C++的纯面向对象的通用高性能大并发TCP-SERVER/CLIENT开发框架
- Linux网络编程TCP之并发服务
- Python使用TCPServer编写(多线程)Socket服务
- Linux TCP server系列(4)-浅谈listen与大并发TCP连接