一种车辆数据处理方法和装置的制造方法_3

文档序号:8543168阅读:来源:国知局
存储于多个消息队列中的待上报的车辆数据上报至服务器对应的入库服务进程,通过服务进程采用多线程方式将接收到的多个消息队列中的数据上报至服务器。
[0058]入库服务进程可以根据上报车辆数据的消息队列的数量灵活调整线程数量,采用合理数量的线程来向服务器上报车辆数据,既能保证车辆数据及时上报至服务器,又不会因过多的分配线程造成线程资源浪费。优选地,入库服务进程为每个消息队列分配一个线程向服务器上报车辆数据。
[0059]通过本实施例提供的车辆数据处理方法,将接收到的OBD数据存储于消息队列中,再通过消息队列将存储的车辆数据上报至服务器,一方面,由于消息队列在向服务器发送消息时仅有确保与服务器之间的连接正常的情况下才会将存储的车辆数据上报至服务器,因此,能够确保车辆数据成功上报至服务器,能够有效避免现有的车辆数据上报方法中存在的上报的车辆数据丢失的问题。另一方面,将接收到的OBD数据缓存在消息队列中,即便是当前处理的OBD数量达到了服务器端口的处理上限,依然可以继续接收其他的OBD上报的车辆数据,而将接收到的车辆数据缓存在消息队列中,对于上传车辆数据的OBD端不会受到任何的影响,待当前处理的OBD对应的车辆数据上报完成后,继续上传缓存的车辆数据。相较于现有的仅能够同时处理服务器端口能够承受的上限数量的OBD数量,本实施例提供的车辆数据处理方法,处理OBD的数量不受服务器处理能力的限制,能够提高OBD的并发量。
[0060]实施例三
[0061]参照图3,示出了本发明实施例三的一种车联网系统的结构框图。
[0062]如图3所示,车联网系统包括:OBD、网关、由网关控制的消息队列、入库服务进程、数据中心即服务器、数据分析服务器、静态化缓存、Tomcat服务器、Memcache即高性能缓存、双机集群系统(HA系统)、手机以及WEB (网站)。下面以一个OBD向数据中心上报车辆数据,车联网系统对上报的车辆数据进行处理为例,对本实施例中的车联网系统的各个部分进行说明。
[0063]OBD按照设定的时间间隔通过车辆的发送机获取相关的车辆数据,例如:车速、车辆的瞬时油耗、发动机冷却液温度、以及发动机进气温度等。在获取到车辆数据后,向网关中的网关DNS(Domain Name System,域名系统)发送访问请求,其中,网关包括:网关DNS以及OBD网关。网关DNS在收到OBD发送的访问请求后,根据服务器各端口的负载情况为OBD分配服务器IP地址和服务器端口,以及车辆数据的上报频率。OBD接收网关DNS为其访问请求分配的服务器IP地址、服务器端口和上报频率后,将这些信息与待上报的车辆数据携带在向OBD网关上报的请求中发送至OBD网关。
[0064]OBD网关接收到OBD上报的请求后,为该OBD分配消息队列,将请求中携带的车辆数据存储至消息队列中。按照请求中携带的配服务器IP地址和服务器端口确定接收车辆数据的服务器端口,并按照请求中携带的上报频率上报车辆数据。
[0065]本实施例中使用的是RabbitMQ,RabbitMQ是流行的开源消息队列系统,用Erlang语言开发的。本实施例中采用消息队列存储车辆数据,起到了车辆数据入库缓冲的作用。需要说明的是,本实施例中是以接收一个OBD上报的车辆数据为例进行的说明,在具体实现过程中可能同时有多个OBD向OBD网关发送上报车辆数据的请求,OBD则可根据请求的数量即访问量灵活设置消息队列的数量,具体数量的设置本实施例中对此不作具体限制。
[0066]服务器对应的入库服务进程接收OBD网关通过消息队列上报的车辆数据,获取消息队列中的车辆数据。入库服务进程灵活设置线程将获取到的车辆数据上报至服务器。
[0067]在服务器中设置有两个数据库分别为:Mysql和MongoDB,其中,Mysql是一个小型关系型数据库管理系统,在本实施例中用于存储时效性较强的数据,例如:车辆位置信息,而MongoDB是一种分布式文档存储数据库,其具有很强的大数据量读写性能。鉴于MongoDB具有强的大数据量读写系统,本实施例中入库服务进程将获取到车辆数据保存在MongoDB中,并且MongoDB设置有多个存储集合,将接收到的各OBD上报的车辆数据均匀存储至各存储集合中,这样,不仅可以降低单个存储集合记录的数据量,由于数据分析服务器需要从MongoDB中提取车辆数据,将各OBD上报的车辆数据存储至多个存储集合中,数据分析服务器便可以同时从多个存储集合中提取车辆数据,相较于从一个存储集合中提取车辆数据,能够提高数据分析服务器并发处理数据的能力。优选地,在保存车辆数据时,由于每个OBD对应有一个TUID即车载终端机器码,在将各OBD上报的车辆数据均匀存储至各存储集合中时,可以通过分配TUID来实现。
[0068]数据服分析服务器从MongoDB中提取车辆数据,在提取数据时可以采用线程模式进行车辆数据的提取。在提取到车辆数据后,数据服分析服务器采用多进程处理模式对获取到的车辆数据进行分析,对于进程数量的设置可以根据上报车辆数据的OBD的数量来决定,对于每个进程还可以采用所线程并发的处理模式,以保证能够及时的对各OBD上报的车辆数据进行分析。这些进程都程序脚本进行守护,程序脚本定时检查各进程状态,确保各进程的正常运行。数据分析服务器将分析后的数据分别存储至服务器中的Mysql和MongoDB?其中,Mysql中仍然存储的是一些对时效性要求较高的数据,例如:车辆的累积里程、瞬时车速等数据,而在MongoDB中则存储一些时效性较低的数据,例如:车辆健康状态数据。
[0069]存储至服务器Mysql和MongoDB中的分析后的数据按照设定的规则传送至Tomcat。静态化缓存则从Tomcat服务器中获取My sql传送的时效性较强的数据,在Memcache中则对Tomcat服务器中存储的分析数据进行备份。
[0070]当用户通过手机、或WEB向HA发送访问某OBD对应的车辆的信息的请求时,例如:请求查询车辆的累计里程,HA接收到该请求后访问静态化缓存,从静态化缓存中获取该车辆对应的累计里程信息,将获取到的该车辆对应的累计里程信息发送至手机。由于静态化缓存相较于Tomcat服务器访问更便捷,而各用户对于时效性较强的这些数据的访问还非常频繁,如果用户从Tomcat服务器中读取这些数据,必定会为Tomcat服务器带来繁重的数据读取负担,因此,本实施例中将各车辆时效性较强的数据存储于静态化缓存中,这样不仅便于数据的访问,同时,还可以避免Tomcat服务器频繁读取数据。
[0071]通过本实施例提供的车联网系统,网关将接收到的OBD数据存储于消息队列中,再通过消息队列将存储的车辆数据上报至服务器,一方面,由于消息队列在向服务器发送消息时仅有确保与服务器之间的连接正常的情况下才会将存储的车辆数据上报至服务器,因此,能够确保车辆数据成功上报至服务器,能够有效避免现有的车辆数据上报方法中存在的上报的车辆数据丢失的问题。另一方面,网关将接收到的OBD数据缓存在消息队列中,即便是当前处理的OBD数量达到了服务器端口的处理上限,依然可以继续接收其他的OBD上报的车辆数据,而将接收到的车辆数据缓存在消息队列中,对于上传车辆数据的OBD端不会受到任何的影响,待
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1