一种支持多协议分布式高并发通信服务端设备和通信方法与流程

文档序号:17693817发布日期:2019-05-17 21:17阅读:200来源:国知局
本发明涉及通信
技术领域
:,特别是一种支持多协议分布式高并发通信服务端设备和通信方法。
背景技术
::传统固件通信软件服务端更多是直接采用单应用模式,将通信与业务耦合在一起,如将http、websocket、mqtt等服务都开发在一个项目内,且对于设备业务处理也都是涵盖其中。对于多协议的适配拓展较差,且在应对高并发大数据处理上性能较差,在集群和分布式处理上只能通过整个应用集群或分布式部署。技术实现要素:本发明的主要目的在于克服现有技术中的上述缺陷,提出一种模块化地、可按需进行集群和分布式的支持多协议分布式高并发通信服务端设备和通信方法。本发明采用如下技术方案:一种支持多协议分布式高并发通信服务端设备,其特征在于:包括设备通信层、中间层、业务处理层和消息中间件;该设备通信层设有若干协议服务,用于接收不同协议的数据请求进行解密、转换成标准消息体和设备权限校验;该中间层用于根据业务类型将标准消息体转换成统一的业务数据并进行路由规则动态分发;该业务处理层设有若干业务模块,分别用于处理对应的业务数据;该消息中间件用于进行设备通信层、中间层和业务处理层之间的数据交互。优选的,所述设备通信层至少包括http服务、websocket服务、mqtt服务。优选的,所述设备通信层采用nio框架netty作为服务器。优选的,所述中间层设有数据转换处理器和数据路由分发器,该数据转换处理器用于根据业务类型将标准消息体转换成对应的业务数据,该数据路由分发器用于对业务数据进行路由配置,并通过消息中间件进行将业务数据分发至对应的业务模块实现路由规则动态分发。优选的,还包括有数据库,用于存储来自业务处理层的数据。优选的,所述业务处理层包括有设备管理模块、命令处理引擎、员工管理模块、内部api模块。优选的,还包括有对外接口前置服务模块,用于对接第三方系统。一种支持多协议分布式高并发通信方法,其特征在于:包括如下步骤1)设备通信层接收终端设备不同协议的数据请求,进行解密后转换为标准消息体;2)设备通信层对标准消息体进行设备权限校验,若成功,则进入步骤3);若否,则结束;3)将标准消息体通过消息中间件推送至中间层,中间层根据业务类型将标准消息体转换成统一的业务数据,并进行路由规则动态分发;4)消息中间件根据路由配置将业务数据发送至对应的业务模块。优选的,步骤2)中,所述权限校验是校验终端设备所属的权限,根据设备序列号校验;步骤3)中,所述中间层将不同协议、业务类型相同的标准消息体转换成统一的业务数据。优选的,所述路由规则动态分发包括路由配置和路由规则使用;该路由配置包括所属功能标识和产品类型;路由规则为通过消息中间件达到消息动态路由分发,其包括单向发送和数据广播。由上述对本发明的描述可知,与现有技术相比,本发明具有如下有益效果:1.本发明的设备,其系统本身高度模块化解耦,模块均可根据实际环境按需部署,比如客户环境只需要接入push协议(基于http服务)的设备,则选择对应的模块部署即可;2.本发明的所有模块均可按需做集群部署,协议服务层通过nginx实现集群部署,中间层和业务处理层的模块通过消息中间件实现集群部署,所有模块之间互相解耦,都可按实际运行情况做集群部署。3.本发明具有数据安全保障,与设备之间的通信都做了消息内容加密处理,且服务上支持https和wss等。4.设置有对外接口前置服务模块,快速对接第三方,该架构提供对接第三方业务系统的能力(如第三方考勤应用),可通过api模块(对外接口前置服务)直接对接第三方做数据推送和设备命令下发处理。附图说明图1为本发明框架图;图2为本发明方法流程图;图3为本发明下行流程图。具体实施方式以下通过具体实施方式对本发明作进一步的描述。参照图1,一种支持多协议分布式高并发通信服务端设备,基于模块化框架设计,实现支持多协议分布式高并发通信服务端框架。包括设备通信层、中间层、业务处理层和消息中间件等。该消息中间件用于进行设备通信层、中间层和业务处理层之间的数据交互,包括设备通信层与中间层之间、中间层和业务处理层之间、设备通信层与业务处理层之间等的数据交互。该设备通信层即协议服务层,该设备通信层,为框架的顶层设计,服务由此处对外提供,可模块化开发诸如http服务、mqtt范围、websocket服务等。该设备通信层对接收的来自终端设备的不同协议的数据请求进行解密、转换成标准消息体和设备权限校验等,并将解密后的数据通过消息中间件(rabbitmq)分发到中间层(middleware)。该标准消息体可以是内部定义的json格式的消息体或其它常用的消息体。其中涉及到的数据安全加解密使用的是非对称加密,在通道初始化的时候会先进行公钥和私钥的互相交换,交换成功之后都通过公钥和私钥进行数据的加密和解密。具体交换流程如下:1)终端设备上传设备端公钥到服务器;2)服务端返回服务端公钥给设备;3)终端设备上传设备私钥到服务器;4)服务端返回服务端公钥给设备。其中,设备权限校验是校验设备所属的权限,根据设备序列号校验:1.是否被绑定授权允许通讯;功能层面,每台终端设备都必须被(企业)添加进来之后才有通讯权限,除了存储到设备信息表中之外,还会将绑定标志存储到redis缓存中,每次数据交互都会校验这个标志位。2.是否被列为黑名单设备;已经发布的终端设备有可能因为固件或其他问题,导致频繁大数据上报数据,对于这种异常设备,一旦发现,管理员可将其添加到黑名单列表,在不删除设备任何信息的情况下,只是禁掉设备的通讯权限。在抗并发层面,设备通信层都采用高性能、异步事件驱动的nio框架netty作为服务器,可提供tcp、udp等一系列服务,且此模块不涉及任何数据库信息,数据来源都是读取redis缓存数据库,与业务系统高度解耦。可单独部署,借助nginx提供支持http、mqtt、websocket等服务集群及分布式,以此来承受百万级设备请求通信。该中间层用于根据业务类型将标准消息体转换成统一的业务数据并进行路由配置,再通过消息中间件(rabbitmq)转发到业务处理层中,使业务模块不管面对多少种协议的设备都只需提供一份标准的接口接收处理终端设备上传的数据。该中间层作为通信层和业务层的中间桥梁,主要包含数据转换器和路由分发器,该数据转换处理器用于根据业务类型将标准消息体转换成对应的业务数据,该数据路由分发器用于对业务数据进行路由配置。其中数据转换器和路由分发器应根据具体设备协议提供标准工具包,该标准工具包用于封装通用方法,方便快速开发,当然可支持自定义。标准工具包分为通用数据转换器和通用路由分发器,是根据大部分功能数据转换和路由分发封装的工具类,大部分数据上传都可直接通过配置+调用接口的方式使用。路由配置主要包含:所属功能标识,内部用sid或funcid区分,如考勤记录会有考勤记录所属标识;产品类型,不同产品类型;发送场景,路由规则主要借助消息中间件(rabbitmq)达到消息动态路由分发的效果,其中包含单向发送和数据广播俩种场景。单向发送即事先配置制定要将这条消息发送到某个模块,配置上直接指定了某个队列,此业务的数据将直接通过消息中间件(rabbitmq)推送到指定的模块。比如终端设备上传的设备基础信息,就固定推送到设备管理模块(dms)。数据广播,数据广播并非表示所有模块都会收到这个数据,这边表示只要符合推送条件的都会收到数据,可能1个也可能多个。此处主要借助消息队列routingkey功能,只要routingkey匹配的队列就可以接收到数据。假设考勤记录设置的routingkey是*.att.log那么只要在指定的交换器下,匹配*.att.log的消息队列都会收到这条考勤记录。比如模块1定义了一个队列。routingkey=test1.att.log;模块2定义了一个队列。routingkey=module2.att.log;那么这两个模块都会收到考勤记录推送。该业务处理层设有若干业务模块,分别用于处理对应的业务数据,包括有设备管理模块、命令处理引擎、内部api模块、其它业务处理模块等。设备管理模块dms(全称devicemanagersystem)作为管理业务模块核心之一,主要管理设备基础信息,如设备通信授权、设备列表管理、设备参数管理等等,并将设备常用信息通过存储在redis共享给其他模块,如设备绑定授权信息、设备常用特性等,此处也提供rpc服务供其他模块调用查询设备详细信息。命令处理引擎(cpe全称commandprocessengine)作为数据下发的核心,专注处理各种协议设备的命令处理,提供标准命令生成接口,实现包括设备命令统一管理、命令下发断点续传、设备命令日志管理等。其中命令队列使用rediszset,包含紧急命令队列、普通命令队列、错误命令队列,排序使用命令id(int类型递增主键),紧急命令优先级最高,命令推送事件触发后,将拉取一批命令推送给设备,此时命令不出队列,当收到设备命令的回复之后才会出队列。内部api模块,此模块作为内部模块之间集群或分布式部署时,模块与模块之间的服务互调桥梁,会在此模块直接提供rpc接口。其他业务处理模块,其可根据具体产品及应用场景搭建,诸如考勤会有员工管理模块(ems)、考勤管理模块(att)等。本发明还包括有对外接口前置服务模块和数据库,对外接口前置服务模块是对接第三方使用,提供诸如考勤记录推送、设备添加删除、人员下发等一系列功能用于对接第三方系统。该数据库用于存储来自业务处理层上传的数据,诸如考勤记录、人员基本信息、人员生物模板等,并标记数据推送状态,包含未推送、推送中、已推送等标志。本发明还提出一种支持多协议分布式高并发通信方法,参见图2,其为数据上行流程,包括如下步骤:1)设备通信层接收来自不同终端设备的不同协议的数据请求,进行解密后转换为标准消息体,涉及到的数据安全加解密使用的是非对称加密,采用的加解密方法不限定于此。2)设备通信层对标准消息体进行设备权限校验,即校验终端设备所属的权限,例如:可根据设备序列号等进行校验,判断是否被绑定授权允许通讯,是否被列为黑名单设备,若允许通讯且未被列为黑名单,则进入步骤3);若否,则结束。设备权限校验的方法不限定于此,还可以通过其它终端设备的常规参数进行校验。3)将标准消息体通过消息中间件推送至中间层,中间层根据业务类型将标准消息体转换成统一的业务数据,并进行动态路由分发。该中间层可将不同协议、业务类型相同的标准消息体转换成统一的业务数据,即不同业务类型所转换成的业务数据可不同。路由规则动态分发包括路由配置和路由规则使用,该路由配置包括根据所属功能标识和产品类型进行配置。路由规则为通过消息中间件达到消息动态路由分发,其包括单向发送和数据广播等。4)消息中间件根据路由配置将业务数据发送至对应的业务模块,对应的业务模块进行业务处理。本发明的设备和方法,采用模块化开发方式,提供具体模块化设计,层次分明,不同层次之间内部还进行二次高度模块化,支持集群及分布式部署,整个框架可按需横向纵向无限拓展,使得服务端可承受百万级千万级以上设备通信。以下将对于数据请求、标准消息体、业务数据进行举例说明:比如上传考勤记录,字段名不一样是其中一个现象:协议a打卡时间的字段名叫checktime协议b打卡时间的字段叫checkintim●考勤记录上传push协议原始数据:请求地址:/iclock/cdata?sn=3389163400001&table=attlog&stamp=9999消息内容:14522015-07-3015:16:2801000第一列1452表示具体员工工号第二列2015-07-3015:16:28表示打卡时间其他字段可不用关注转换成标准消息体之后:转换成业务数据统一格式之后:其中pin表示员工工号、checktype表示考勤状态、verficode表示验证方式、workcode表示工作号码、checktime表示打卡时间。对于考勤记录,采用其它协议上传数据请求时,其转换成的业务数据的格式与该业务数据的格式相同。●人员数据上传push协议原始数据:请求地址:/iclock/cdata?sn=3389163400001&table=operlog&stamp=9999请求消息体:userpin=1name=aaaapri=0passwd=0card=0grp=1tz=0001000100000000verify=0转换成标准消息体之后:转换成业务数据统一格式之后:其中pin表示员工工号,name表示员工姓名,passwd表示用户在设备使用的密码,pri表示用户在设备的角色,card表示用户的id卡号。对于人员数据,采用其它协议上传数据请求时,其转换成的统一业务数据格式与该业务数据的格式相同。参见图3,本发明的下行流程如下:1)业务系统发起下发动作,如操作下发人员信息等,此处需调员工管理模块(ems)提供的人员信息下发接口,入参如下:2)ems根据设备协议生成对应格式的命令内容,并调用命令处理引擎(cpe)提供的添加命令接口。cpe提供通用添加命令接口入参如下:push协议入参如下:best协议入参如下:3)命令处理引擎将命令存储到数据库,并推送到命令队列,命令队列采用redis缓存数据库,采用zset格式,以命令id作为排序字段。存储到命令队列,假设生成的命令id为100,则存储格式如下:push协议存储内容如下:c:100:dataupdateuserinfopin=2956name=某某某passwd=123456card=12345678best协议存储内容如下:4)命令处理引擎根据设备协议调用不同的命令处理引擎,如果设备是push(http)协议,则不做任何动作,等待设备主动发起获取命令的请求再将队列中的命令拉取出来给设备;如果设备是best(websocket)协议,则触发实时推送事件,将命令实时推送给设备;若有其他协议区别于以上2个协议,则使用其他命令处理器;以上动作命令均不出队列,若传输过程中或设备执行出异常时再次获取会重新给设备命令,保证数据不丢失。5)设备获取到命令,执行成功后需将命令执行结果告知服务器,服务器收到回复之后命令出队列。上述仅为本发明的具体实施方式,但本发明的设计构思并不局限于此,凡利用此构思对本发明进行非实质性的改动,均应属于侵犯本发明保护范围的行为。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1