一种高并发平台服务器的数据处理的方法技术

技术编号:13633202 阅读:62 留言:0更新日期:2016-09-02 15:52
本发明专利技术涉及对物联网后台服务器的数据的高并发处理。本发明专利技术将接收到字节型数据通过JNI接口发送给服务器内置的动态连接库的收发单元,由其将当前数据存入空闲数据缓冲区当填满后,将其标记为饱和并空闲处理单元发送处理通知;对应处理单元读取数据并将当前数据缓冲区锁定,以及将自身状态标记为忙;然后调用并行指令进行数据处理并将处理结果存入结果缓冲区,处理完毕后,将当前数据缓冲区标记为空闲,以及将自身状态标记为空闲;收发单元读取处理结果,并通过JNI接口将其发送给服务器的物理量数据库。本发明专利技术能显著提高SSH架构的物联网后台服务器的数据处理能力,既使用了java语言的良好网络能力,又利用了服务器CPU本身的处理能力。

【技术实现步骤摘要】

本专利技术涉及物联网
,具体涉及对物联网后台服务器的数据的高并发处理。
技术介绍
目前,对于物联网设备,人们普遍关心的是终端的采集和发送功能,由于终端的微控制器处理能力比较弱,一般只做些简单分析,后台服务器由于有大量终端进行通信,它也只是对数据进行处理后进行存储,并以适当方式向用户显示。对于物联网后台服务器的架构,一般采用SSH(struts2+spring+hibernate)架构,即利用java语言良好的网络性能,实现对大量的连接进行高并发处理,即通过java语言所编写的网络数据接口接收物联网采集端发送的数据后,通过调动java语言的JVM(java虚拟机)的相关函数对接收的字节型数据进行高并发处理并存入物联网后台服务器的预设物理量数据库中,得到能用于用户显示的处理结果。而物联网采集端的数据一般的特点是采用单字节,双字节或整型数表示物理量,当SSH架构的物联网后台服务器通过网络数据接口接收到物联网采集端发送的数据后,需要将收到的字节型数据转换成浮点数,然后做浮点数的系数乘法,最后基于偏移量的加法操作等数据处理才能变成真正的物理量(可直接用于向用户显示),以双字节为例,基于java语言实现对接收数据进行数据处理时,通过调动java语言的JVM的相关函数实现转换、系数相乘和偏移量处理得到物理量,即:对于java语言,它的优势在于跨平台和网络性能,但数据处理,尤其高并发数据处理是其弱项,当涉及高并发数据,大数据量到来时,其数据的处理更是系统的瓶颈。
技术实现思路
本专利技术的专利技术目的在于:为了克服采用SSH架构的物联网后台服务器在基于java语言对接收数据进行数据处理,得到对应的真实物理量时,java语言的处理能力不足的技术问题,提供一种高并发平台服务器的数据处理的方法,既能使用java语言的良好网络能力,又能提高平台服务器的处理能力。本专利技术的一种高并发平台服务器的数据处理的方法,包括下列步骤:当SSH架构的物联网后台服务器通过网络数据接口(由java语言编程实现)接收到物联网采集端发送的数据后,将表示物理量的字节型数据通过JNI接口(Java Native Interface,java本地接口)发送给物联网后台服务器内置的动态连接库,优选的,动态连接库基于C语言编程实现;其中,动态链接库包括收发单元、数据缓冲区、处理单元和结果缓冲区,且处理单元
和数据缓冲区的初始状态为空闲;收发单元通过JNI接口接收字节型数据,并选择状态为空闲的数据缓冲区存入接收的字节型数据,同时将当前访问的数据缓冲区锁定,当数据填满后,收发单元将当前访问的缓冲区标记为饱和,并向状态为空闲的处理单元发送数据处理通知;收到数据处理通知的处理单元从状态为饱和的数据缓冲区读出数据,并将当前访问的数据缓冲区锁定,以及将自身状态标记为忙;处理单元调用并行指令进行数据处理并将处理结果存入结果缓冲区;数据处理完毕后,将当前访问的数据缓冲区标记为空闲,以及将自身状态标记为空闲;收发单元读取结果缓冲区的处理结果,并通过JNI接口将处理结果发送给物联网后台服务器的物理量数据库。本专利技术的主要思想是把数据由单个处理变为成批处理,将采用SSH架构的物联网后台服务器的数据处理通过调用并行指令进行数据处理(如将字节型数据转换成浮点数,对浮点数的系数相乘,基于偏移量的加法操作等),例如调用SIMD(汇编中的单指令多数据)指令对接收的字节型数据进行数据处理。X86或X64架构是一款功能强大的处理器,Intel或AMD的主流处理器都支持SSE(Streaming SIMD Extension,流式SIMD扩展)的指令集,因此可以采用SSE指令完成对字节型数据的数据处理,从而显著提高物联网后台服务器的数据处理能力。以SSE指令为例,其涉及的数据处理的并行指令序列如下表所示:指令名称指令用途Movd将缓冲区的数据移动到SSE指令的xmm寄存器中Punpcklbw将字节扩充成字Punpcklwd将字扩充成32位整型数Cvtdq2ps将4个整型数转化成4个浮点数Mulps4个浮点数同时进行乘法AddPs4个浮点数同时进行加法movq将结果存入结果缓冲区综上所述,由于采用了上述技术方案,本专利技术的有益效果是:显著提高SSH架构的物联网后台服务器的数据处理能力,既使用了java语言的良好网络能力,又利用了服务器CPU本身的处理能力。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面结合实施方式,对本专利技术作进一步地详细描述。首先,在采用SSH架构的物联网后台服务器(服务器使用X86或X64的平台,能够将大量的物联网数据(字节型数据)存入数据缓冲区)中内置由C语言编程实现的动态连接库。
该动态连接库包括1个收发单元、n个数据缓冲区(可基于当前处理对象实时调整数据缓冲区的个数)、m个处理单元(可以根据处理器个数调整)和1个结果缓冲区(队列的形式,对处理结果实行先进先出),且n>m>1。具体实现时,收发单元、处理单元以线程的方式实现,为了便于后续描述,将收发单元、处理单元用收发线程、处理线程来表述,其初始状态均置为空闲。本专利技术中,网络数据接口(基于java编程实现)收到字节型数据后,并不直接处理,而是通过JNI接口发给动态连接库的收发线程,收发线程在状态为空闲的数据缓冲区中随机选择一个作为当前访问数据缓冲区,将当前接收的字节型数据存入当前访问数据缓冲区直到被饱和,此时将当前访问数据缓冲区的状态标记为饱和,同时向空闲状态的处理线程发送数据处理通知消息。在收发线程访问一个数据缓冲区时,需将其锁定,即除当前操作的线程外,限制其他线程对当前访问数据缓冲区的访问。收到数据处理通知消息的处理线程,则首先对饱和状态的数据缓冲区加锁,禁止其它线程访问,然后调用并行指令处理,对于X86或x64平台的服务器,可以使用MMX或SSE指令来并行进行数据处理,数据处理完成后,将处理结果存入结果缓冲区,并给当前数据缓冲区解锁,同时标记其状态为空闲。最后,由收发线程将结果缓冲区的数据基于先进先出的读取顺序读出并通过JNI接口存入物联网后台服务器的物理量数据库。在使用X86或64位平台(物联网后台服务器)的SSE指令进行数据处理时,由于java的跨平台特性,SSH高并发架构可以是windows平台也可以是linux平台,而C语言编写的动态连接库在windows下是dll格式,在linux下是so格式,其均能通过JNI接口供java层调用。SSE指令可以是独立的汇编文件也可以嵌入到C语言之中。指令的格式可以是intel格式也可以是AT&T格式,取决于所使用的系统和编译器。实施例以linux平台为例,选用是64位Ubuntu,版本为12.04,开发工具为eclipse 4.3,C语言编译器用的是gcc(linux下的C编译器),版本为4.8.4。数据处理对象以车联网的CAN(Controller Area Network)总线为例,车载OBD终端(以下简称终端)将原始的CAN报文信息发到物联网后台服务器(以下简称服务器),报文内容符合SAE J1939-71协议,下表给出了以发动机温度和油压两条报文示例。在以上两个报文中,每个报文有8个字节,第一个报文中字节1和2分别为冷却剂温度本文档来自技高网
...

【技术保护点】
一种高并发平台服务器的数据处理的方法,其特征在于,包括下列步骤:当SSH架构的物联网后台服务器通过网络数据接口接收到物联网采集端发送的数据后,将表示物理量的字节型数据通过JNI接口发送给物联网后台服务器内置的动态连接库;所述动态链接库包括:收发单元、数据缓冲区、处理单元和结果缓冲区;其中,处理单元和数据缓冲区的初始状态为空闲;收发单元通过JNI接口接收字节型数据,并选择状态为空闲的数据缓冲区存入接收的字节型数据,同时将当前访问的数据缓冲区锁定,当数据填满后,收发单元将当前访问的缓冲区标记为饱和,并向状态为空闲的处理单元发送数据处理通知;收到数据处理通知的处理单元从状态为饱和的数据缓冲区读出数据,并将当前访问的数据缓冲区锁定,以及将自身状态标记为忙;处理单元调用并行指令进行数据处理并将处理结果存入结果缓冲区;数据处理完毕后,将当前访问的数据缓冲区标记为空闲,以及将自身状态标记为空闲;收发单元读取结果缓冲区的处理结果,并通过JNI接口将处理结果发送给物联网后台服务器的物理量数据库。

【技术特征摘要】
1.一种高并发平台服务器的数据处理的方法,其特征在于,包括下列步骤:当SSH架构的物联网后台服务器通过网络数据接口接收到物联网采集端发送的数据后,将表示物理量的字节型数据通过JNI接口发送给物联网后台服务器内置的动态连接库;所述动态链接库包括:收发单元、数据缓冲区、处理单元和结果缓冲区;其中,处理单元和数据缓冲区的初始状态为空闲;收发单元通过JNI接口接收字节型数据,并选择状态为空闲的数据缓冲区存入接收的字节型数据,同时将当前访问的数据缓冲区锁定,当数据填满后,收发单元将当前访问的缓冲区标记为饱和,并向状态为空闲的处理单元发送数据处理通...

【专利技术属性】
技术研发人员:鲁晓军
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1