基于部标JT/T 808协议及数据格式的GPS服务器 开发
2013-05-01 17:14 GPS视频平台产品经理 阅读(21644) 评论(1) 编辑 收藏 举报基于部标JT/T808协议及数据格式的GPS服务器 开发
部标808和809的出台,统一了产品的标准,统一了平台与终端之间的通讯协议,对于GPS运营商而言,只要平台支持部标,那可以选择任意一家的GPS车载终端,也不会受厂商的制约,GPS运营商在市场竞争过程中将更看重产品的质量及服务,从而也间接地促进市场上产品的稳定性和可靠性。
但是开发部标GPS服务器是一个繁琐苦逼的活,有各种各样的GPS终端需要兼容和支持,现在交通部颁发了统一的标准协议和数据格式,大部分车辆的GPS终端都需要支持,软件也需要支持,否则可能在市场准入的时候就遇到麻烦。
我们开发了一个支持JT/T 808-2011数据格式的健壮的GPS服务器,提供下载。数据库版本支持Mysql, Sqlserver和Oracle等关系数据库,可以直接拿来做服务器连接前段GPS客户端和报表开发。
需要JT 808 源码+808模拟测试终端+压力测试工具 的请联系我购买1200元(2379423771@qq.com), Java版本,基于Netty框架的,参见:
基于Java Netty框架构建高性能的部标808协议的GPS服务器
基于Mina框架的参见:基于Java Mina框架的部标GPS服务器。
T 808源码很完整,已通过交管平台接入,可以直接使用。如果自己来写,可能需要很长时间的编写,由于需要结合终端或模拟终端进行测试,很多测试用例很难测试,如拍照,多媒体上传,行车记录仪数据上传等等,很容易走弯路,浪费了大量的时间,建议直接购买808源码省时省力。而通过808模拟测试终端可以模拟硬件设备的上传行为通过TCP或UDP发送数据,帮助检验我们的程序是否正确的实现了808协议。
C#版的模拟终端开发-》部标808协议模拟终端的设计和开发
809转发服务器的设计,参见:基于JT/T809-2011的(已过检)GPS平台数据交换及转发服务器
基于Asp.NET MVC框架+SignalR +ActiveMQ + Ali OSS 服务构建苏标主动安全智能防控平台
试用版,没有指令下发和报警分析及入库功能。如果没有安装.NET4.0 runtime ,将不能运行,.NET4 runtime 安装请到微软网站 : http://www.microsoft.com/zh-cn/download/details.aspx?id=17718
1.支持TCP和UDP两种传输协议, 完整实现808协议的所有命令和消息;主要功能有:
2.基于完成端口的异步通信模式,可以支持大规模运输车辆的终端并发上传GPS数据;
3.对于数据包和定位包及服务器终端连接状态进行在线实时监控,提供在线下发命令接口可以很方便的与终端进行交互,如拍照摄像等;
4.对于GPS数据包进行日志保存,便于调试跟踪。
5.开发语言采用C# .NET4.0框架, 数据库框架采用Nhibernate,这样便于数据库移植,可以支持Oracle, MySql和MS Sqlserver等多个数据库。
6.Socket服务器模型采用了基于SocketAsyncEventArgs的SocketServer. SocketAsyncEventArgs是.net提供的关于异步socket类,封装了IOCP的使用,可以用它方便的实现非阻塞通信(non-blocking IO),同时采用对象池和缓冲区管理,大大减少了对象分配和垃圾收集的工作,对于Server性能和吞吐量有很大提升。单机测试可以并发支持上万个终端。在设计的时候,接收和发送均采用异步全双工通信的的形式,满足了GPS服务器大批量数据上传和大批量数据应答的特点,互不影响。
7.数据库版,自动分析GPS数据,形成报警记录,停车报表,油量记录和加油漏油记录、历史轨迹等多个丰富的报表,直接拿来就可以用。
8.高性能的解析模块,在大规模连接的情况下,对于上传的数据包的粘包、断包仍然需要进行不差毫厘的解析,防止出现丢包的情况,这也是交通部平台过检所要求的:在5000和1万个终端连接的情况下,不允许出现连接中断、丢包的情况。
主界面功能如下图所示,提供连接和数据包的视图,对于连接的终端可以批量下发各种命令。
服务器提供了从终端控制、参数设置和行车记录仪及其他所有808规定的平台下发指令。可以对多个终端下发。
对于JT/T808协议文档中规定的所有协议,无论是终端上行还是平台下发,都提供了完整的实现。并进行了完整的测试。在多个GPS系统中得到了充分的使用。
GPS服务器连接的特点是基于长连接,高吞吐量的处理特点,
1.很多企业在设计的时候,基于TCP协议开发,服务器所承受的连接都是长连接。
2.由于808协议规定终端发上来的包除了应答包,都要进行应答,很多傻逼终端企业在开发的时候,死板的照抄808协议,不应答不行。这样就造成了大批量数据上传和大批量数据应答的情况。实际上定位上传的数据包完全不应该应答,心跳包就更没道理去进行应答了。
为了提高终端接入能力和数据分析、入库能力,将终端消息的处理分成独立的五级处理模块,每个处理模块都是异步独立的,每个模块内都含有独立的处理队列,互不影响,提高数据的吞吐量和系统的响应能力。
1)第一级:实时数据解析入库,入库能力决定了客户端所看到的实时数据是否延迟;
2)第二级:报警分析并入库(包括32种808协议规定的报警、停车报警和路线偏移报警),报警分析只有快速分析才能快速的推送到前端客户端;
3) 第三级:消息应答和指令下发,应答可以有一定的延迟,而不影响整个系统性能。
4)第四级:报表统计,由于油量统计、里程统计、上线率统计,需要定时扫描数据库,生成每个时段的数据统计提供给报表查询使用.
5)第五级:日志记录和显示
如下图,采用终端模拟工具,自动生成静态车辆数据,自动进行并发连接、注册和鉴权后,开始定位数据上传。每个车辆的上传轨迹是独立不重复的,报警位和状态位定时反转,便于测试报警分析和入库能力。
这样经过五秒传一次的模拟的压力测试后,真实环境就不在话下了。如何进行压力测试参见:GPS部标监控平台-压力测试
提供WCF服务接口,使得客户端和其他第三方系统可以调用,从而能够对终端下发命令。
代码提供了命令接口和实时数据服务接口,可以很方便和PHP系统进行集成。
如下是部标平台的GIS客户端调用808GPS服务器的WCF服务接口,给终端下发各种命令:
如需购买GPS平台源码+文档+服务,可以联系我2379423771@qq.com。
Java平台,参见:
基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标GPS监控平台
基于Struts+Spring+Hibernate+Ibatis+Quartz+Mina框架构建部标监控平台
.NET平台,参见:基于Asp.NET MVC构建GPS部标平台
Cs客户端参见:GPS监控CS客户端设计