发明名称 一种GPS数据入库处理方法和系统
摘要 本发明提供一种GPS数据入库处理方法,通过I/O完成端口技术实现底层的通讯网关与TCP服务端之间传输GPS报文,使用报文任务池和工作线程池处理报文后分级缓存、批量写入数据库并完善错误处理。本发明的优点在于,不仅提高了系统性能和数据传输量,而且避免了传输过程的数据堵塞,同时在实际应用中提升了对海量GPS数据处理的完整性。
申请公布号 CN104158757A 申请公布日期 2014.11.19
申请号 CN201410414439.9 申请日期 2014.08.21
申请人 福建星海通信科技有限公司 发明人 邹山青;魏军福;叶伟;庄艺园;陈建灵
分类号 H04L12/803(2013.01)I;H04L12/861(2013.01)I 主分类号 H04L12/803(2013.01)I
代理机构 福州市鼓楼区京华专利事务所(普通合伙) 35212 代理人 王美花
主权项 一种GPS数据入库处理方法,其特征在于,所述方法包括I/O完成端口技术传输GPS报文的过程、报文任务池和工作线程池处理GPS报文的过程、GPS报文入库的过程和完善GPS报文入库错误处理的过程:所述I/O完成端口技术传输GPS报文的过程是:通讯网关作为客户端,将GPS报文封装在复数个数据传输socket中,GPS数据入库处理系统作为TCP服务端,客户端将所述复数个数据传输socket通过计算机的端口发送到TCP服务端完成GPS报文的接收,具体步骤如下:步骤11、初始化后,在所述服务端上创建一侦听socket,并将所述侦听socket与服务端的一个端口绑定,以便实现GPS报文的一对多传输;步骤12、在TCP服务端上创建一个SocketAsyncEventArgs类的连接对象,将所述连接对象与所述侦听socket绑定,所述连接对象开始异步检测与其绑定的端口中是否有数据传输socket接入:当有一个所述数据传输socket请求连接时,所述连接对象就接入该数据传输socket,而所述侦听socket则继续检测与其绑定的端口;步骤13、在TCP服务端上创建一个SocketAsyncEventArgs类的接收对象,所述接收对象与接入的数据传输socket进行绑定,并开始接收GPS报文:若接收到的GPS报文的数据长度等于零,则关闭对应接入的数据传输socket并释放与其绑定的接收对象;若接收到的GPS报文的数据长度大于零,则进行粘包处理:如果接收到的GPS报文的数据包是完整的,直接放入报文缓冲队列,如果接收到的GPS报文的数据包是不完整的,则先放入接收缓冲区等待继续接收直至数据包完整再放入报文缓冲队列;步骤14、TCP服务端收到GPS报文后,根据所接收GPS报文的先后顺序依次做出收包正常的应答返回给客户端;所述报文任务池和工作线程池处理GPS报文的过程包括:步骤21、在TCP服务端上创建复数个报文解析线程对报文缓冲队列中的GPS报文进行解析,根据解析得到的不同类型,所述报文解析线程将各不同类型的GPS报文放入到报文任务池的复数个报文队列中,所述复数个报文队列与各不同类型的GPS报文一一对应;步骤22、所述报文任务池的各报文队列均采用双缓冲概念实现读写分离:各报文队列均对应两个任务池缓存区,分别是任务池缓存区1和任务池缓存区2,先将各报文队列中的GPS报文写入与其对应的任务池缓存区1,当GPS报文入库处理比较慢或者TCP服务端连接数非常多的情况下,任务池缓存区1内的GPS报文会慢慢堆积,达到最大值,这时各报文队列中余下的GPS报文会写入到与其对应的任务池缓存区2,最后从各报文队列对应的任务池缓存区1和任务池缓存区2中批量读取出GPS报文,对应写入到各报文队列的缓存文件中;步骤23、所述工作线程池根据报文任务池中不同类型的报文队列相应配置至少一个工作处理线程,工作处理线程负责将步骤22所述各报文队列对应的缓存文件中的GPS报文读取出来并进行相应的处理;所述GPS报文入库的过程是:TCP服务器调用数据访问层,批量写入所述处理好的GPS报文到数据库;所述完善GPS报文入库错误处理的过程:在GPS报文入库时,若出现SQL语句执行出错,将执行错误的GPS报文写入到报文任务池中的错误缓存队列进行处理:如果遇到的是网络问题,则再重复执行该所述SQL语句两次,仍然错误的情况下,在系统中创建错误缓存文件,将GPS报文写入所述错误缓存文件中,如果是该所述SQL语句本身有问题,则直接将GPS报文写入错误缓存文件,以备回收或者用户排查错误原因。
地址 350000 福建省福州市马尾区星达路16号