一种电动汽车远程监控通信服务系统及方法与流程

文档序号:11251018阅读:621来源:国知局
一种电动汽车远程监控通信服务系统及方法与流程

本发明属于电动汽车通信中的数据读写方法领域,具体是一种电动汽车远程监控通信服务系统及方法。



背景技术:

电动汽车远程监控系统可以实现对汽车的实时跟踪管理和科学的运行考核,其中通信服务系统是整个监控系统实现数据通信的中枢,负责接收来自车载终端的位置及运行参数等信息,同时向各车载终端下传控制调度指令及优化的运行参数,来实现对车载终端的远程监测和控制调度,其设计的优劣直接影响整个系统的性能。面对通信服务系统中海量的、实时采样的、高并发的车载终端数据流,传统数据库解决方法出现瓶颈,无法满足数据的大量存储及应用服务系统快速检索要求。

分布式nosql(notonlysql非关系型)数据库hbase解决方案的出现很好的解决数据的存储问题,采用key-value(键-值)数据对的列式存储也很好的解决了数据的字段伸缩性。虽然分布式数据库hbase有很多的优点,很好的解决了数据的存储问题,但是分布式数据库hbase在检索方面存在一定的局限性。首先,分布式数据库hbase只支持针对rowkey(hbase中每行的主键也就是key-value对中的key)的数据检索,不支持对value(值)的数据检索,而结构化的数据中的value才是数据的价值所在,分布式数据库hbase只提供对rowkey的一级索引检索,还有范围(beginrowkey,endrowkey)的scan(扫描,hbaseapi的一种,可以对响应的rowkey数据做出快速响应)查询。对value检索会导致mapreduce任务形式的全表的暴力检索,非常的耗时;再者,分布式数据库hbase不能很好的支持sql语言,由于已经积累了多年针对关系型数据库的应用经验,有丰富的面向sql的应用接口需求,把分布式数据库hbase的优点和sql的易用性结合起来也是有待解决的问题。



技术实现要素:

针对现有技术中存在的不足,本发明提供了一种电动汽车远程监控系统中通信服务系统及方法,可以实现快速、高效传输和处理移动车辆的海量信息,实现对sql语句的支持,应用服务系统能有效的获取车辆的运行数据,提高检索效率,达到应用服务系统对数据检索操作的方便易用。

本发明采用下面的技术方案:

一种电动汽车远程监控通信服务系统,包括netty通信服务系统和hbase数据服务系统;在所述hbase数据服务系统与netty通信服务系统间设有二级索引系统,用于封装hbase数据服务系统,提供数据接口;所述netty通信服务系统接收来自车载终端的数据并发送至二级索引系统,二级索引系统接收netty通信服务系统传递的数据并转换为对应操作,根据所述对应操作对hbase数据服务系统执行读写操作。

进一步的,所述二级索引系统包括用于与netty通信服务系统连接的sql解析层以及与hbase数据服务系统连接的dml数据操作接口。

进一步的,所述netty通信服务系统接收来自车载终端的数据并解析成sql语句发送至sql解析层,sql解析层接收netty通信服务系统传递的sql语句解析并转换为对应dml操作,dml数据操作接口根据sql解析层转换的dml操作对hbase数据服务系统执行读写操作。

本发明还提供了另一技术方案:

一种电动汽车远程监控通信服务方法,车载终端将实时数据流发送给netty通信服务系统,netty通信服务系统对接收到数据并发送至二级索引系统,二级索引系统接收netty通信服务系统传递的数据并转换为对应操作,根据所述对应操作对hbase数据服务系统执行读写操作。

进一步的,所述二级索引系统具有与netty通信服务系统连接的sql解析层以及与hbase数据服务系统连接的dml数据操作接口;所述netty通信服务系统接收来自车载终端的数据并解析成sql语句发送至sql解析层,sql解析层接收netty通信服务系统传递的sql语句解析并转换为对应dml操作,dml数据操作接口根据sql解析层转换的dml操作对hbase数据服务系统执行读写操作。

进一步的,所述dml数据操作接口包括写入接口和检索接口。

进一步的,所述写入接口根据sql语义完成对hbase数据服务系统的数据插入、更新和删除操作。

进一步的,所述检索接口根据sql语义完成对hbase数据服务系统的数据获取和扫描操作,hbase数据服务系统具有数据表格和索引表格,通过对索引表格执行扫描操作查找目标数据的主键集合,通过获取操作基于上述获取的主键集合获得目标数据集合,并将目标数据集合返回给应用服务系统。

进一步的,通过对索引表格执行扫描操作查找目标数据的主键集合具体为:将hbase数据服务系统中的结构化数据的主键部分和其中需要做索引的value字段整合在一起,使得具有相同value值的索引数据之存储位置相邻,通过对所述整合后的数据进行提取,获得目标数据的主键集合。

进一步的,所述写入接口向hbase数据服务系统执行操作时,将hbase数据服务系统内的结构化数据的id前添加hash前缀,并存储在数据表格的数据主键内;同时,将结构化数据的id、需要索引的字段前添加hash前缀,并存储在索引表格的索引主键内;在将结构化数据写入数据表格内时,每个结构化数据的id后面的字段转化成列簇的字段,索引表格内列簇的字段为空。

本发明的有益效果:

通过对电动汽车远程监控系统中通信服务系统的结构化设计以及对netty通信服务系统和hbase数据服务系统的非植入式开发,在分布式数据库hbase系统的逻辑复杂性的前提下,拥有很好的扩展性和兼容性;将sql的易用性与hbase数据服务系统完美结合,实现快速、高效传输和处理移动车辆的海量信息,大幅提升了应用服务系统中对value数据的检索效率,同时也拓展了hbase数据服务系统的应用领域及应用服务系统的开发性能。

本发明的indexrowkey(索引主键)的组成是由hash前缀、需要建立索引的字段value和结构化数据的id组成的,在索引表格的列簇的字段空的,只是插入一条空的索引主键作为数据主键所标示的反向索引,采用空间换时间的策略,通过建立索引数据表格最终能够大幅度提升系统查询的速度。

附图说明

图1为本发明的结构框图。

图2为netty通信服务系统逻辑架构

图3为本发明的流程图。

图4为hbase数据服务系统原始结构化数据进行存储后的示意图。

图5为应用服务系统数据检索的过程示意图。

具体实施方式:

下面结合附图与实施例对本发明作进一步说明:

应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

本发明的一种典型实施例是:

一种电动汽车远程监控通信服务系统,包括netty通信服务系统和hbase数据服务系统;在所述hbase数据服务系统与netty通信服务系统间设有二级索引系统,用于封装hbase数据服务系统,提供数据接口;二级索引系统包括用于与netty通信服务系统连接的sql解析层以及与hbase数据服务系统连接的dml数据操作接口。

netty通信服务系统接收来自车载终端的数据并解析成sql语句发送至sql解析层,sql解析层接收netty通信服务系统传递的sql语句解析并转换为对应dml操作,dml数据操作接口根据sql解析层转换的dml操作对hbase数据服务系统执行读写操作。

如图2所示:netty通信服务系统包括主反应器,主反应器与若干客户端连接,主反应器与接收器连接,接收器与子反应器连接,子反应器通过读模块与线程池连接,子反应器还与发送模块连接,线程池还与若干数据处理模块连接;

所述主反应器,用于负责响应客户端的连接请求,并建立连接,主反应器只有一个,采用独立的选择器;

所述若干客户端,是指并发的多个消息连接;

所述接收器,用于接收客户端的tcp连接请求;

所述子反应器,用于维护上述独立的选择器,子反应器可以有一个或者多个,每个子反应器都会在一个独立线程中执行;

所述读模块,用于对接收到消息的解读并进行传输;

所述线程池用于消息的读取、解码、编码和发送,采用标准的jdk线程池实现,包含一个任务队列和n个可用的线程;

所述发送模块,用于响应客户端的数据请求。

所述数据处理模块,包括:解码请求数据单元、业务逻辑处理单元和编码响应单元。

所述解码请求处理单元,用于对请求数据流进行按照数据包的信息类型进行分类;

所述业务逻辑处理单元,用于根据数据包的划分归类进行业务的处理;

所述编码响应单元,用于根据业务的处理生成sql语句进行消息的发送。

所述解码请求处理单元是鉴于tcp通讯的“粘包”特性,在解码时需对整包、半包、错包分别进行适当的处理。

本发明的另一实施例是一种电动汽车远程监控通信服务方法,车载终端将实时数据流发送给netty通信服务系统,netty通信服务系统对接收到数据并发送至二级索引系统,二级索引系统具有与netty通信服务系统连接的sql解析层以及与hbase数据服务系统连接的dml数据操作接口;netty通信服务系统接收来自车载终端的数据并解析成sql语句发送至sql解析层,sql解析层接收netty通信服务系统传递的sql语句解析并转换为对应dml操作,dml数据操作接口根据sql解析层转换的dml操作对hbase数据服务系统执行读写操作。

二级索引系统承接netty通信服务系统与hbase数据服务系统之间的桥梁,封装hbase数据服务系统的api,为应用服务系统提供通用的使用接口。sql解析层针对sql语句的解析层,负责将netty通信服务系统通过rpc远程调用传递过来的sql语句进行语义解析,转换成为一系列的dml(datamanipulationlanguage)是数据操纵语言:它们是select、update、insert、delete,这四条命令是用来对hbase数据服务系统里的数据进行操作的语言)操作。dml数据操作接口主要是完成对hbaseapi的封装,内部分两种接口,一种是数据的写入接口,根据数据向hbase数据服务系统的数据输入;还有中是数据的检索接口,提供通过检索从hbase数据服务系统中输出目标数据。数据的写入分为两种形式,一种是通过实时的数据采集存储,一种是离线的数据批量导入。

例如,insert(插入)、update(更新)等都属于写入操作,而select(选择)操作就属于检索操作。

离线批量数据导入是通过将采集的数据写入到临时文件,在集群任务比较空闲的时候,通过对文件的处理,进行数据的批量导入,是一个非实时的过程。

netty通信服务系统是internet网络上具有固定ip的计算机,通过internet网络接收车载终端上传的车身总线数据信息,对来自车辆的不同厂商的子应用层协议加以解析成sql语句。

netty通信服务系统采用netty框架进行开发,基于tcp协议传输,并结合汽车厂商的监控需求,制订出一套适合车辆安全隐患系统的私有通信协议,实现高并发的实时网络通信要求。netty通信服务系统逻辑架构如图2所示。网络通信程序对数据流的一般处理流程是:解码请求数据、业务逻辑处理、编码响应。作为服务中心与车载终端沟通媒介,通信服务系统的首要职责是应对高并发的车载终端实时数据流,数据流的接收工作由通信服务模块的接收层(acceptor)完成。由于通信协议是透传模式,通信服务模块会接收到来自不同厂家的各种各样的子协议和数据格式,在入库存储前还需要将这些数据解析处理为统一格式。所以在接收层工作完成后,还需要由数据处理层(handler)对数据进行解码(decode)、业务处理(compute)、编码(encode)后返回给sql解析层。

netty通信服务系统采用reactor模式分别应对信息的接收和处理过程。服务系统的cpu处理速度远远快于io速度,如果cpu为了io操作而阻塞是极不划算的。通信服务系统使用reactor模式来解决这个问题,由一个不断等待和循环的单独进程(或线程)接受各handler的注册,并负责查询io是否就绪,在就绪后调用指定的handler进行处理。

nett通信服务系统中,启用一个mainreactor线程,负责响应client的连接请求,并建立连接,使用一个nioselector;启用多个subreactor线程,每个subreactor维护一个独立的nioselector。由于subreactor会执行一些比较耗时的io操作,例如消息的读写,使用多个线程去执行,更加有利于发挥cpu的运算能力,减少io等待时间。

如图3所示,为netty通信服务系统的应用层调用到hbase数据服务系统之间的整体的数据流程图,其中包括两种数据流程,一个是数据的写入流程,另外一个是数据的检索流程。首先netty通信服务系统通过rpc远程调用,传递过来应用层的sql语句,sql语句在sql解析层执行语义分析,通过对sql语义分析获得的结果来判断数据是写入操作还是检索操作,比如insert(插入)、update(更新)等都属于写入操作,而select(选择)操作就属于检索操作。对于数据的写入操作,由于不一定都是实时在线的数据写入,又开辟了离线批量数据导入,其中,离线批量数据导入是通过将采集的数据写入到临时文件,在集群任务比较空闲的时候,通过对文件的处理,进行数据的批量导入,是一个非实时的过程。

在写入接口中,dml数据操作接口完成sql语义到hbaseapi中的put(写入)操作和delete(删除)操作,完成对hbase数据服务系统的数据插入、更新和删除操作;在检索接口中,dml数据操作接口主要是完成sql语义到hbaseapi中的get(获取)操作和一系列的scan(扫描)操作,通过对索引表格的scan(扫描)操作查找出来目标数据的rowkey(主键)集合,然后通过获取的rowkey集合,通过get操作获得目标数据集合,最终将这些数据集合返回给应用服务系统。

如图4所示,为了能实现快速存储以及快速检索,本发明通过对主键的操作,把原结构化数据的主键部分和其中需要做索引的value字段设计在一起,由于hbase数据服务系统中数据存储的特征,所有数据都按照字典序排序,这样对于相同的value值的索引数据的存储位置相邻,通过对这些数据进行提取获取原存储数据的rowkey数据。

图4中的原始数据就是结构化数据,每一条都由全表唯一的id标记,每个id代表的一行里面都代表不同意义的字段。在第二个表里面的数据就是原始数据写入到hbase数据服务系统中数据表格的详细情况,在原始结构化数据中的id前面添加hash前缀组成主键,以存储在数据表格的数据主键(datarowkey内),后面的字段都转化成列族columnfamily的字段。

由于结构化数据的顺序写入,会造成hbase数据服务系统中数据的写入局部热点,数据表格的主键以及索引表格的主键在hbase数据服务系统中是按照字典序排序的,如果顺序写入,造成短时间内写入的主键(rowkey)都集中在集群中的局部节点,严重影响了写入的性能。通过添加了hash前缀从而将顺序写入的数据通过hash离散化分配到数据表格以及索引表格中不同的节点区域,充分利用分布式存储的并行存储优势。

在原始结构化数据写入hbase数据服务系统的同时,原始结构化数据中需要添加索引的字段要建立索引数据,并且与原结构化数据一同写入hbase数据服务系统的索引表格内。如图中标注的indexrowkey(索引主键)的组成是由hash前缀、需要建立索引的字段value和结构化数据的id组成的,在索引表格的列簇的字段空的,只是插入一条空的索引主键作为数据主键所标示的反向索引,采用空间换时间的策略,通过建立索引数据表格最终能够大幅度提升系统查询的速度。

如图5所示,给出了实例来说明应用服务系统的检索中获取rowkey(主键)集合的流程。例子中举了对于两个条件的数据select检索请求。最左边的是数据在hbase数据服务系统中的存储状态,标示着原始结构化数据写入到hbase系统存储之后的状态,接着右边的两个索引表格分别是数据的prov字段索引和age字段索引,在搜索省份prov为济南jn同时年龄age为30的条目信息的时候执行流程是这样的,并行的在prov和age字段分别进行prov字段为jn和age为30的搜索,通过检索查询得到的两个集合就是后来的prov=jn集合与age=30集合,通过对sql语句中两个字段条件的逻辑关系判断发现是“and”,那就对两个集合求交集通过合并操作,最终发现主键的交集为0001,接下来拿着0001去数据表格中取出目标数据,返回给应用服务系统就完成了系统的检索流程。由于此处只是为了说明下整个系统设计的原理,简化了hbase数据服务系统中主键的设置与检索流程中的一些其他的辅助措施。

本发明通过对电动汽车远程监控系统中通信服务系统的结构化设计以及对netty通信服务系统和hbase数据服务系统的非植入式开发,实现快速、高效传输和处理移动车辆的海量信息,实现对sql语句的支持,应用服务系统能有效的获取车辆的运行数据,提高检索效率,达到应用服务系统对数据检索操作的方便易用。

其中,本发明的indexrowkey(索引主键)的组成是由hash前缀、需要建立索引的字段value和结构化数据的id组成的,在索引表格的列簇的字段空的,只是插入一条空的索引主键作为数据主键所标示的反向索引,采用空间换时间的策略,通过建立索引数据表格最终能够大幅度提升系统查询的速度。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1