设备间通信方法、装置、设备和存储介质与流程

文档序号:18939168发布日期:2019-10-23 01:00阅读:131来源:国知局
本申请涉及计算机
技术领域
:,特别是涉及一种设备间通信方法、一种设备间通信装置、一种服务器、一种路由网关和一种存储介质。
背景技术
::物联网(internetofthings,iot)是物物相连的互联网,随着物联网的兴起,物联网设备也越来越多样化。物联网设备需要联网实现与其他物联网设备之间,以及与云端的服务器之间的交互通信,来进行消息传递、设备控制等。目前,物联网设备之间交互通常是通过互相订阅对方的路径(topic),然后向对方路径中发送消息来实现的,但是这种跨设备的路径授权难以管理,容易造成越权使用的问题。技术实现要素:本申请实施例提供了一种设备间通信方法,以解决跨设备的topic授权的通信问题。相应的,本申请实施例还提供了一种设备间通信装置、一种服务器、一种路由网关和一种存储介质,用以保证上述系统的实现及应用。为了解决上述问题,本申请实施例公开了一种设备间通信方法,所述的方法包括:建立源路径和至少一个目的路径的路由关系;依据接收的消息查询所述路由关系,确定至少一个目的路径和路由个数;依据所述路由个数选择消息发送方式;按照所述消息发送方式发送所述消息。本申请实施例还公开了一种设备间通信装置,所述的装置包括:路由建立模块,用于建立源路径和至少一个目的路径的路由关系;消息处理模块,用于依据接收的消息查询所述路由关系,确定至少一个目的路径和路由个数;方式选择模块,用于依据所述路由个数选择消息发送方式;消息发送模块,用于按照所述消息发送方式发送所述消息。本申请实施例还公开了一种服务器,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例中一个或多个所述的设备间通信方法。本申请实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例中一个或多个所述的设备间通信方法。本申请实施例还公开了一种设备间通信方法,应用于基于消息队列遥测传输mqtt技术构建的系统中,所述的方法包括:路由网关依据请求,建立源路径和至少一个目的路径的路由关系,所述源路径属于源物联网设备;依据源物联网设备的消息查询所述路由关系,确定至少一个目的路径和路由个数;依据所述路由个数选择消息发送方式;按照所述消息发送方式将消息写入对应的消息箱中,并推送给所述目的路径对应的目的物联网设备。本申请实施例还公开了一种设备间通信装置,应用于基于消息队列遥测传输mqtt技术构建的系统中,所述的装置包括:路由配置模块,用于路由网关依据请求,建立源路径和至少一个目的路径的路由关系,所述源路径属于源物联网设备;查询模块,用于依据源物联网设备的消息查询所述路由关系,确定至少一个目的路径和路由个数;判断模块,用于依据所述路由个数选择消息发送方式;发送模块,用于按照所述消息发送方式将消息写入对应的消息箱中,并推送给所述目的路径对应的目的物联网设备。本申请实施例还公开了一种路由网关,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例所述的设备间通信方法。本申请实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行本申请实施例所述的设备间通信方法。与现有技术相比,本申请实施例包括以下优点:在本申请实施例中可建立源路径和至少一个目的路径的路由关系,从而无需通过跨设备的路径授权的方式通信,对于接收的消息可查询所述路由关系,确定至少一个目的路径和路由个数,然后依据路由个数选择消息发送方式,按照所述消息发送方式发送所述消息,使得消息发送更加灵活,也不会出现越权使用的问题。附图说明图1是本申请实施例的一种路由关系建立的示意图;图2是本申请实施例中一种路由关系删除的示意图;图3是本申请实施例中一种设备间通信的交互示意图;图4是本申请实施例中另一种设备间通信的交互示意图;图5是本申请一种设备间通信方法实施例的步骤流程图;图6是本申请另一种设备间通信方法实施例的步骤流程图;图7是本申请一种应用于mqtt场景的设备间通信方法实施例的步骤流程图;图8是本申请一种设备间通信装置实施例的结构框图;图9是本申请另一种设备间通信装置实施例的结构框图;图10是本申请一种应用于mqtt场景的设备间通信装置实施例的结构框图;图11是本申请一实施例提供的装置的结构示意图。具体实施方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。本申请实施例可应用于mqtt(messagequeuingtelemetrytransport,消息队列遥测传输)技术。现有的mqtt中需要进行跨设备的topic授权,授权后设备端还需要订阅才能收到对应topic的消息,导致topic权限管理混乱,且容易出现非法越权使用的问题。而本申请实施例不需要跨设备授权,而是建立源路径和至少一个目的路径的路由关系,便于权限管理,不会出现越权使用的问题。因此可以先建立源路径和至少一个目的路径的路由关系,如图1所示。系统中包括:用户设备10、接口网关20、路由网关30和存储设备40。其中,用户设备10可以为物联网设备,也可为物联网设备的控制设备如手机、电脑等电子设备,用户可以在用户设备10上操作来建立或删除路由关系。接口网关20为服务端设备,用于对校验用户权限,以及转发消息。路由(router)网关30为服务端设备,用于管理路由关系。存储设备40为服务端设备,用于存储和管理数据。在步骤102中,用户可以通过用户设备调用服务端的应用程序编程接口(applicationprogramminginterface,api),发送添加路由关系的消息给接口网关20,其中包括源路径和需要添加的至少一个目的路径,因此可采用添加目的路径列表确定目的路径。接口网关20在接收到添加路由关系的消息后,可以进行权限校验。其中,为了防止跨账号添加路径(topic),可以在步骤104中校验源路径的权限,其中,路径topic中包括各种资源信息,如产品和设备的信息,其中,可以查询产品所属用户的id和添加topic路由的用户id是否一致来判断权限关系,若一致则具有权限,若不一致则不具有权限。其中,设备信息可包括设备标识等,可用于订阅所需的权限,如订阅权限、发布权限等。并且,在步骤106中接口网关20还可校验目的路径的权限,如校验是否具有发布消息的权限等,对于目的路径所需权限可依据设置确定。在确定具有目的路径的权限后,接口网关20在步骤108中调用路由服务接口发送路由添加消息给路由网关30,在步骤110中路由网关30依据该路由添加消息确定源路径和至少一个目的路径,然后分别建立该源路径和各目的路径的路由关系并写入到存储设备40中,其中,针对每个目的路径分别建立源路径和目的路径的正向路由关系和反向路由关系,并且可记录该源路径对应正向路由关系的路由个数。其中,正向路由关系指的是源路径(topic)到目的路径(topic)的关系,该正向路由关系可用于查询根据源topic可以路由到的目的topic;反向路由关系指的是目的路径到源路径的关系,基于该反向路由关系可以查询出路由到该目的路径的源路径。该正向路由关系的路由个数指的是一个源路径对应目的路径的个数,用于进行消息发送方式的选择。然后可生成添加结果,在步骤212中路由网关30返回添加结果给接口网关20,在步骤214中接口网关20将添加结果反馈给用户设备10。相应的,还可依据路由删除消息,删除源路径和目的路径之间的正向路由关系和反向路由关系,并减少所述正向路由关系的路由个数,如图2所示:在步骤202中,用户可以通过用户设备调用服务端的api接口,发送删除路由关系的消息给接口网关20,其中包括源路径和需要删除的至少一个目的路径,因此可采用删除目的路径列表确定需要删除的目的路径。接口网关20在接收到删除路由关系的消息后,可以进行权限校验。其中,为了防止跨账号删除路径(topic)的路由关系,可以在步骤204中校验源路径的权限,其中,路径topic中包括各种资源信息,如产品和设备的信息,其中,可以查询产品所属用户的id和添加topic路由的用户id是否一致来判断权限关系,若一致则具有权限,若不一致则不具有权限。其中,设备信息可包括设备标识等,可用于订阅所需的权限,如订阅权限、发布权限等。并且,在步骤206中接口网关20还可校验目的路径的权限,如校验是否具有发布消息的权限等,对于目的路径所需权限可依据设置确定。在确定具有目的路径的权限后,步骤208中接口网关20可调用路由服务接口发送路由删除消息给路由网关30,在步骤210中路由网关30依据该路由删除消息确定源路径和需要删除的至少一个目的路径,然后删除存储设备40中该源路径和需要删除的目的路径的路由关系,其中,针对每个目的路径分别删除源路径和目的路径的正向路由关系和反向路由关系,并且可在该源路径对应正向路由关系的路由个数的记录中减少相应删除的路由个数。然后生成相应的删除结果,在步骤212中路由网关30返回删除结果给接口网关20,在步骤214中接口网关20将删除结果反馈给用户设备10。其中,一种正向路由表的示例如表1所示:表1其中,trt(topicroutetable,路径路由表),为存储正向路由关系的正向路由表,行值(rowkey)的内容为源路径到目的路径(srctopic@dsttopic),列(column)为目的路径(dsttopic),timestamp为时间戳。在查询数据库如hbase时设置scan的起始键值startkey为srctopic@,结束键值endkey为srctopica,a是@的下一个字符,其中,hbase的rowkey是按照字典序排列的,从而将所有srctopic路由到的dsttopic查询出来。其中,hbase(hadoopdatabase)是一个分布式的、高可靠性、高性能、面向列、可的开源数据库,适合于非结构化数据的存储,可轻松支持pb级大数据存储,满足千万级qps(querypersecond,每秒查询率)高吞吐随机读写场景。其中,1pb=1,024tb=1,048,576gb=1,125,899,906,842,624bytes(比特)。其中,一种反向路由表的示例如表2所示:表2其中,trrt(topicreverseroutetable,反向路径路由表),为存储反向路由关系的反向路由表,行值(rowkey)的内容为目的路径到源路径(dsttopic@srctopic),列(column)为源路径(srctopic),timestamp为时间戳。其中,一种记录正向路由关系的个数的路由数量表的示例如表3所示:表3其中,trtc(topicroutetablecount,路径路由表数量),为存储正向路由关系的路由个数的数据表,即一个源路径对应目的路径的个数,行值(rowkey)的内容为源路径(srctopic),列(column)为目的路径(dsttopic)的个数即路由个数,timestamp为时间戳。其中,对于路由个数单独增加计数记录是为了便于运行时进行发送方式的判断,判断的个数阈值可以根据实际情况调整。上述采用不同表格阐述正向路由关系、反向路由关系以及路由个数,实际处理中,还可采用一张表存储上述数据,相应的rowkey不同即可,因此可以在rowkey内容的前面添加相应的前缀如trt、trrt、trtc等来表征不同的业务数据。从而用户可通过服务端api实现路由关系的绑定,便捷的建立设备间的通信关系,为后续设备间通信提供基础,且无需跨设备授权。在源路径和目的路径的路由关系建立完毕后,物联网设备间可以进行消息通信。如图3所示,通信系统包括:物联网设备520、物联网设备540、连接网关60、消息网关(broker)70、路由网关30和存储设备40。本申请实施例中,服务端的各种网关如连接网关、消息网关、接口网关、路由网关等均可作为服务器的一种,存储设备也可看作一种服务器。本实施例中,物联网设备520作为源路径对应的源物联网设备,物联网设备540作为目的路径对应的目的物联网设备。在步骤302中物联网设备520可发送消息到连接网关60,然后在步骤304中连接网关60可调用消息网关70的发布接口转发该消息,消息网关在步骤306中调用路由消息接口给路由网关发送消息。然后在步骤308中路由网关30从存储设备40中查询该消息对应的路由关系,其中,可依据该消息确定源路径,然后采用该源路径查询正向路由关系,确定该源路径对应的至少一个目的路径,以及该源路径对应正向路由关系的个数。然后在步骤310中路由网关30依据路由个数选择消息发送方式,其中可判断所述路由个数是否超出个数阈值;若所述路由个数未超出个数阈值,选择第一消息发送方式;若所述路由个数超出个数阈值,选择第二消息发送方式。其中,第一消息发送方式用于处理目的路径相对较少的消息,如第一消息发送方式包括:设备间消息发送方式,可以在设备间进行消息的传输;第二消息发送方式用于批量处理大规模目的路径的消息,如第二消息发送方式包括:广播消息发送方式,可以通过广播方式发送消息。图3的示例中以第一消息发送方式发送消息为例。路由网关30依据路由个数选择第一消息发送方式,在步骤312中生成所述消息的消息标识,其中,消息标识用于唯一表示一个消息,可以通过多种方式生成,例如通过递增的方式生成全局唯一消息标识等。然后在步骤314中路由网关30将消息写入位于在存储设备40中的所述目的路径的接收消息箱中,在写入完成后,路由网关30可推送给所述目的路径对应的设备。其中,在步骤316中路由网关30拉取目的路径的接收消息箱中的消息,其中拉取的消息包括存储的新消息,也可包括接收消息箱中未读消息。然后在步骤318中路由网关30调用消息接口将消息发送给消息网关70,从而按照目的路径进行消息的分发。并且在步骤320中路由网关还可更新所述目的路径的接收消息箱中消息的第一处理进度,也就是各接收消息箱中对于消息的处理进度,如是否读取、读取时间、是否回复等。在步骤322中消息网关70调用连接网关的接口发送消息给连接网关60,以将消息发送给订阅了该路径的设备。然后在步骤324中连接网关60将消息发送给相应的设备如本示例中的物联网设备540。其中,在消息推送给设备端,消息指的是来自源topic的消息,经过路由发到了目的topic中,其中topic里含有设备的信息,消息网关70在转发消息之前可对topic进行鉴权,物联网设备订阅和发布属于自己的topic,因此基topic可以确定唯一需要发送的设备,如目的路径对应的设备,使得本申请实施例能够简化topic授权逻辑,不会出现跨设备授权topic的情况。本申请实施例还提供可通过第二消息发送方式发送消息的示例,如图4所示。在步骤402中物联网设备520可发送消息到连接网关60,然后在步骤404中连接网关60可调用消息网关70的发布接口转发该消息,消息网关在步骤406中调用路由消息接口给路由网关发送30消息。然后在步骤408中路由网关30从存储设备40中查询该消息对应的路由关系,其中,可依据该消息确定源路径,然后采用该源路径查询正向路由关系,确定该源路径对应的至少一个目的路径,以及该源路径对应正向路由关系的个数。然后在步骤410中路由网关30依据路由个数选择消息发送方式,其中可判断所述路由个数是否超出个数阈值;若所述路由个数未超出个数阈值,选择第一消息发送方式;若所述路由个数超出个数阈值,选择第二消息发送方式。本示例以第二消息发送方式为例,在步骤412中生成所述消息的消息标识,其中,消息标识用于唯一表示一个消息,可以通过多种方式生成,例如通过递增的方式生成全局唯一消息标识等。然后在步骤414中路由网关30将消息写入位于在存储设备40中的所述源路径的发送消息箱中,在写入完成后,路由网关30可推送给所述目的路径对应的设备。其中,在步骤416中路由网关30代理所述目的路径对应的设备拉取所述源路径的发送消息箱中的消息。在步骤418中路由网关30调用消息接口将消息发送给消息网关70,从而按照目的路径进行消息的分发。并且在步骤420中路由网关还可更新所述目的路径从所述源路径的发送消息箱中获取消息的第二处理进度,也就是发送消息箱中对于各目的路径对应消息的处理进度,如是否读取、读取时间、是否回复等。在步骤422中消息网关70调用连接网关的接口发送消息给连接网关60,以将消息发送给订阅了该路径的设备。然后在步骤424中连接网关60将消息发送给相应的设备如本示例中的物联网设备540。其中,在消息推送给设备端,消息指的是来自源topic的消息,经过路由发到了目的topic中,其中topic里含有设备的信息,消息网关70在转发消息之前可对topic进行鉴权,物联网设备订阅和发布属于自己的topic,因此基topic可以确定唯一需要发送的设备,如目的路径对应的设备,使得本申请实施例能够简化topic授权逻辑,不会出现跨设备授权topic的情况。上述实施例中,第二消息发送方式可应用于广播场景中,第一消息发送方式可应用于m2m(machine-to-machine/man,设备间、人机交互)场景。其中,该m2m场景中目的路径的数量相对较少,因此采用写入目的路径的接收消息箱的方式;而广播场景中目的路径的数量较大,可能是百万级别的,因此可采用写入源路径的发送消息箱,然后各个目的路径读取源路径的发送消息箱的方式。而对于m2m场景和广播场景的切换,个数阈值可以根据实际的场景进行调整,从而得到使服务器写入和读取存储设备的比例平衡的目的,不会因为读写失衡产生的性能瓶颈导致消息到达慢或者丢失。本申请实施例中存储设备还可设置有接收消息箱、发送消息箱等。其中,一种接收消息箱(receivemessagebox,rmb)的示例如表4所示:表4其中,行值(rowkey)的内容为源路径(srctopic),列1(column1)为消息标识(messageid),列2(column2)为消息内容。其中,一种接收消息箱中消息的第一处理进度的示例如表5所示:表5其中,第一处理进度可为rmcs(receivemessageconsumeschedule,接收消息消费进度),行值(rowkey)的内容为源路径(srctopic),列(column)为处理到的消息标识(messageid),如已读的消息标识等。其中,一种发送消息箱(sendmessagebox,smb)的示例如表6所示:表6其中,行值(rowkey)的内容为源路径(scrtopic),列1(column1)为消息标识(messageid),列2(column2)为消息内容。一种目的路径从所述源路径的接收消息箱中获取消息的第二处理进度的示例如表7所示:表7其中,第二处理进度可为smcs(sendmessageconsumeschedule,发送消息消费进度),行值(rowkey)的内容为目的路径到源路径(dsttopic@srctopic),列(column)为处理到的消息标识(messageid),如已读的消息标识等。本申请实施例中,为了数据散列存储,所有的rowkey可以使用如下的算法重新计算:rowkey=md5_32(rowkey).substring(0,4)+rowkey。从而可利用存储设备的特性如hbase列存储的一些特性,保证了路由表非常大时的广播推送的及时性和消息可靠性。本申请实施例可利用topic路由模型实现基于mqtt协议的设备间通信,能够动态选择普通的m2m场景和广播场景,平衡服务端写入和读取存储设备的压力,使服务端不会出现单方面的瓶颈,提高了服务端的稳定性。参照图5,示出了本申请一种设备间通信方法实施例的步骤流程图。步骤502,建立源路径和至少一个目的路径的路由关系。用户可以通过用户设备调用服务端的api接口进行路由关系的添加,在接口网关验证源路径和目的路径均具有权限后,通过路由网关建立相应的路由关系。其中,针对每个目的路径可建立源路径到目的路径的正向路由关系,以及目的路径到源路径的反向路由关系,可将正向路由关系和反向路由关系存储到存储设备中,并且可记录该源地址对应正向路由关系的路由个数,也就是该源地址对应目的地址的个数。完成对路由关系的建立,便于后续使用该路由关系发送消息。步骤504,依据接收的消息查询所述路由关系,确定至少一个目的路径和路由个数。物联网设备的消息可通过网关转发给路由网关,例如,将消息发送给连接网关,然后连接网关可调用消息网关的发布接口转发该消息,消息网关调用路由消息接口给路由网关发送消息。然后路由网关从存储设备中查询该消息对应的路由关系表,其中可基于消息的topic作为源路径查询正向路由关系确定至少一个目的路径,并确定该源路径对应正向路由关系的路由个数。步骤506,依据所述路由个数选择消息发送方式。路由网关依据路由个数选择消息发送方式,其中可判断所述路由个数是否超出个数阈值;若所述路由个数超出个数阈值,选择第二消息发送方式;若所述路由个数未超出个数阈值,选择第一消息发送方式。步骤508,按照所述消息发送方式发送所述消息。依据所选择的消息发送方式可以进行消息的发送,其中可为消息生成唯一的消息标识,然后消息写入到相应的消息箱中,经过其他网关推送给目的路径对应的设备。综上,建立源路径和至少一个目的路径的路由关系,从而无需通过跨设备的topic授权的方式通信,对于接收的消息可查询所述路由关系,确定至少一个目的路径和路由个数,然后依据路由个数选择消息发送方式,按照所述消息发送方式发送所述消息,使得消息发送更加灵活,也不会出现越权使用的问题。参照图6,示出了本申请另一种设备间通信方法实施例的步骤流程图。步骤602,接收路由添加消息,从所述路由添加消息中获取源路径和至少一个目的路径。步骤604,依据所述源路径和至少一个目的路径,建立正向路由关系和反向路由关系,并记录所述正向路由关系的路由个数。用户可以通过用户设备调用服务端的api接口进行路由关系的添加,在接口网关验证源路径和目的路径均具有权限后,通过路由网关建立相应的路由关系。其中,路由网关可从所述路由添加消息中获取源路径和至少一个目的路径,针对每个目的路径可建立源路径到目的路径的正向路由关系,以及目的路径到源路径的反向路由关系,可将正向路由关系和反向路由关系存储到存储设备中,并且可记录该源地址对应正向路由关系的路由个数,也就是该源地址对应目的地址的个数。完成对路由关系的建立,便于后续使用该路由关系发送消息。本申请一个可选实施例中,还包括:依据路由删除消息,删除源路径和目的路径之间的正向路由关系和反向路由关系,并减少所述正向路由关系的路由个数。路由网关依据该路由删除消息确定源路径和需要删除的至少一个目的路径,然后删除存储设备中该源路径和各需要删除的目的路径的路由关系,其中,针对每个目的路径分别删除源路径和目的路径的正向路由关系和反向路由关系,并且可在该源路径对应正向路由关系的路由个数的记录中减少相应删除的路由个数。步骤606,确定接收的消息对应的源路径。步骤608,依据所述源路径查询至少一个目的路径,并确定所述源路径对应正向路由关系的路由个数。物联网设备的消息可通过网关转发给路由网关,例如,将消息发送给连接网关,然后连接网关可调用消息网关的发布接口转发该消息,消息网关调用路由消息接口给路由网关发送消息。然后路由网关可确定该消息对应的源路径,然后依据源路径从存储设备中查询该消息对应的路由关系表,得到至少一个目的路径,并确定所述源路径对应正向路由关系的路由个数。步骤610,判断所述路由个数是否超出个数阈值。若否,即所述路由个数未超出个数阈值,可以选择第一消息发送方式,执行步骤612;若是,即所述路由个数超出个数阈值,可以选择第二消息发送方式,执行步骤618。所述第一消息发送方式包括:设备间消息发送方式;所述第二消息发送方式包括:广播消息发送方式。步骤612,生成所述消息的消息标识。步骤614,将所述消息写入所述目的路径的接收消息箱,并推送给所述目的路径对应的设备。路由网关依据路由个数选择第一消息发送方式,可为该消息生成唯一的消息标识,如通过递增的方式生成全局唯一消息标识。然后将消息写入位于在存储设备中的所述目的路径的接收消息箱中,在写入完成后,路由网关可推送给所述目的路径对应的设备。其中,所述推送给所述目的路径对应的设备,包括:拉取所述目的路径的接收消息箱中的消息,将所述消息推送给所述目的路径对应的设备。其中,路由网关拉取目的路径的接收消息箱中的消息,其中拉取的消息包括存储的新消息,也可包括接收消息箱中未读消息。然后调用消息接口将消息发送给消息网关,从而按照目的路径进行消息的分发。其中,消息网关调用连接网关的接口发送消息给连接网关,连接网关将消息发送给相应的设备。步骤616,更新所述目的路径的接收消息箱中消息的第一处理进度。可以更新目的路径的接收消息箱中消息的第一处理进度,该第一处理进度指的是各接收消息箱中对于消息的处理进度,如是否读取、读取时间、是否回复等,便于了解消息是否被读取等。步骤618,生成所述消息的消息标识。步骤620,将所述消息写入所述源路径的发送消息箱,并推送给所述目的路径对应的设备。路由网关依据路由个数选择第二消息发送方式,可为该消息生成唯一的消息标识,如通过递增的方式生成全局唯一消息标识。然后将消息写入位于在存储设备中的所述源路径的发送消息箱中,在写入完成后,路由网关可推送给所述目的路径对应的设备。其中,所述推送给所述目的路径对应的设备,包括:代理所述目的路径对应的设备拉取所述源路径的发送消息箱中的消息,将所述消息推送给所述目的路径对应的设备。路由网关代理所述目的路径对应的设备,从所述源路径的发送消息箱中拉取消息,然后路由网关调用消息接口将消息发送给消息网关,从而按照目的路径进行消息的分发。消息网关调用连接网关的接口发送消息给连接网关,以将消息发送给订阅了该路径的设备。然后连接网关将消息发送给相应的设备如本示例中的物联网设备。步骤622,更新所述目的路径从所述源路径的发送消息箱中获取消息的第二处理进度。路由网关还可更新所述目的路径从所述源路径的发送消息箱中获取消息的第二处理进度,也就是发送消息箱中对于各目的路径对应消息的处理进度,如是否读取、读取时间、是否回复等。本申请实施例可应用于mqtt场景中,其中,将源路径对应的物联网设备作为源物联网设备,将目的路径对应的物理网设备作为目的物理网设备。源物联网设备的消息可经由路由网关传输给一个或多个目的物联网设备。参照图7,示出了本申请一种应用于mqtt场景的设备间通信方法实施例的步骤流程图。步骤702,路由网关依据请求,建立源路径和至少一个目的路径的路由关系,所述源路径属于源物联网设备。用户可以通过用户设备调用服务端的api接口进行路由关系的添加,在接口网关验证源路径和目的路径均具有权限后,通过路由网关建立相应的路由关系。其中,路由网关可从所述路由添加消息中获取源路径和至少一个目的路径,针对每个目的路径可建立源路径到目的路径的正向路由关系,以及目的路径到源路径的反向路由关系,可将正向路由关系和反向路由关系存储到存储设备中,并且可记录该源地址对应正向路由关系的路由个数,也就是该源地址对应目的地址的个数。完成对路由关系的建立,便于后续使用该路由关系发送消息。一个可选实施例中,还可依据路由删除消息,删除源路径和目的路径之间的正向路由关系和反向路由关系,并减少所述正向路由关系的路由个数。路由网关依据该路由删除消息确定源路径和需要删除的至少一个目的路径,然后删除存储设备中该源路径和各需要删除的目的路径的路由关系,其中,针对每个目的路径分别删除源路径和目的路径的正向路由关系和反向路由关系,并且可在该源路径对应正向路由关系的路由个数的记录中减少相应删除的路由个数。步骤704,依据源物联网设备的消息查询所述路由关系,确定至少一个目的路径和路由个数。源物联网设备将消息发送给连接网关,然后连接网关可调用消息网关的发布接口转发该消息,消息网关调用路由消息接口给路由网关发送消息。然后路由网关可确定该消息对应的源路径,然后依据源路径从存储设备中查询该消息对应的路由关系表,得到至少一个目的路径,并确定所述源路径对应正向路由关系的路由个数。步骤706,依据所述路由个数选择消息发送方式。若路由个数未超出个数阈值,可以选择第一消息发送方式,如m2m的发送方式;若所述路由个数超出个数阈值,可以选择第二消息发送方式,如广播的发送方式。步骤708,按照所述消息发送方式将消息写入对应的消息箱中,并推送给所述目的路径对应的目的物联网设备。可先为消息生成唯一的消息标识,以便于查找消息,然后按照所选的消息发送方式可将消息写入到对应的消息箱中,其中,依据第一消息发送方式可将消息写入到各目的路径的接收消息箱;依据第二消息发送方式将消息写入到源路径的发送消息箱中。在写入完成后,路由网关可推送消息给所述目的路径对应的设备。针对第一消息发送方式可拉取所述目的路径的接收消息箱中的消息,将所述消息推送给所述目的路径对应的设备。如调用消息接口将消息发送给消息网关,从而按照目的路径进行消息的分发。其中,消息网关调用连接网关的接口发送消息给连接网关,连接网关将消息发送给相应的设备。并且路由网关可更新所述目的路径的接收消息箱中消息的第一处理进度。针对第二消息发送方式可代理所述目的路径对应的设备拉取所述源路径的发送消息箱中的消息,将所述消息推送给所述目的路径对应的设备。其中,路由网关调用消息接口将消息发送给消息网关,从而按照目的路径进行消息的分发。消息网关调用连接网关的接口发送消息给连接网关,以将消息发送给订阅了该路径的设备。然后连接网关将消息发送给相应的设备如本示例中的物联网设备。并且路由网关可更新所述目的路径从所述源路径的发送消息箱中获取消息的第二处理进度。从而在mqtt场景中实现设备间通信,本申请实施例无需跨设备授权topic的模式,不再需要管理复杂的授权记录,不会产生非法越权使用的问题,而是利用topic路由模型实现基于mqtt协议的设备间通信,设备端只需要订阅和发布属于自己的topic即可实现设备间通信。能够动态选择普通的m2m场景和广播场景,平衡服务端写入和读取存储设备的压力,使服务端不会出现单方面的瓶颈,提高了服务端的稳定性。并且可利用存储设备的特性如hbase列存储的一些特性,保证了路由表非常大时的广播推送的及时性和消息可靠性。需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。在上述实施例的基础上,本实施例还提供了一种设备间通信装置,应用于连接网关。参照图8,示出了本申请一种设备间通信装置实施例的结构框图,具体可以包括如下模块:路由建立模块802,用于建立源路径和至少一个目的路径的路由关系。消息处理模块804,用于依据接收的消息查询所述路由关系,确定至少一个目的路径和路由个数。方式选择模块806,用于依据所述路由个数选择消息发送方式。消息发送模块808,用于按照所述消息发送方式发送所述消息。综上,建立源路径和至少一个目的路径的路由关系,从而无需通过跨设备的topic授权的方式通信,对于接收的消息可查询所述路由关系,确定至少一个目的路径和路由个数,然后依据路由个数选择消息发送方式,按照所述消息发送方式发送所述消息,使得消息发送更加灵活,也不会出现越权使用的问题。参照图9,示出了本申请另一种设备间通信装置实施例的结构框图,具体可以包括如下模块:路由建立模块802,用于建立源路径和至少一个目的路径的路由关系。消息处理模块804,用于依据接收的消息查询所述路由关系,确定至少一个目的路径和路由个数。方式选择模块806,用于依据所述路由个数选择消息发送方式。消息发送模块808,用于按照所述消息发送方式发送所述消息。路由删除模块810,依据路由删除消息,删除源路径和目的路径之间的正向路由关系和反向路由关系,并减少所述正向路由关系的路由个数。其中,所述路由建立模块802,包括:接收子模块8022和建立子模块8024。接收子模块8022,用于接收路由添加消息,从所述路由添加消息中获取源路径和至少一个目的路径。建立子模块8024,用于依据所述源路径和至少一个目的路径,建立正向路由关系和反向路由关系,并记录所述正向路由关系的路由个数。所述消息处理模块804,用于确定接收的消息对应的源路径;依据所述源路径查询至少一个目的路径,并确定所述源路径对应正向路由关系的路由个数。所述方式选择模块806,用于判断所述路由个数是否超出个数阈值;若所述路由个数超出个数阈值,选择第二消息发送方式;若所述路由个数未超出个数阈值,选择第一消息发送方式。所述消息发送方式包括第一消息发送方式和第二消息发送方式;所述第二消息发送方式包括:广播消息发送方式;所述第一消息发送方式包括:设备间消息发送方式。所述消息发送模块808,包括:第一发送子模块8082和第二发送子模块8084。第一发送子模块8082,用于生成所述消息的消息标识;将所述消息写入所述目的路径的接收消息箱,并推送给所述目的路径对应的设备。第二发送子模块8084,用于生成所述消息的消息标识;将所述消息写入所述源路径的发送消息箱,并推送给所述目的路径对应的设备。所述第一发送子模块8082,用于拉取所述目的路径的接收消息箱中的消息,将所述消息推送给所述目的路径对应的设备。所述第一发送子模块8082,还用于更新所述目的路径的接收消息箱中消息的第一处理进度。所述第二发送子模块8084,用于代理所述目的路径对应的设备拉取所述源路径的发送消息箱中的消息,将所述消息推送给所述目的路径对应的设备。所述第二发送子模块8084,还用于更新所述目的路径从所述源路径的发送消息箱中获取消息的第二处理进度。在上述实施例的基础上,本实施例还提供了一种设备间通信装置,应用于基于mqtt技术构建的系统,可设置于连接网关中。参照图10,示出了本申请一种应用于mqtt场景的设备间通信装置实施例的结构框图,具体可以包括如下模块:路由配置模块1002,用于路由网关依据请求,建立源路径和至少一个目的路径的路由关系,所述源路径属于源物联网设备;查询模块1004,用于依据源物联网设备的消息查询所述路由关系,确定至少一个目的路径和路由个数;判断模块1006,用于依据所述路由个数选择消息发送方式;发送模块1008,用于按照所述消息发送方式将消息写入对应的消息箱中,并推送给所述目的路径对应的目的物联网设备。其中,所述路由配置模块1002,用于接收路由添加消息,从所述路由添加消息中获取源路径和至少一个目的路径;依据所述源路径和至少一个目的路径,建立正向路由关系和反向路由关系,并记录所述正向路由关系的路由个数。所述查询模块1004,用于确定接收的消息对应的源路径;依据所述源路径查询至少一个目的路径,并确定所述源路径对应正向路由关系的路由个数。所述判断模块1006,用于判断所述路由个数是否超出个数阈值;若所述路由个数未超出个数阈值,选择第一消息发送方式;若所述路由个数超出个数阈值,选择第二消息发送方式。所述消息发送方式包括第一消息发送方式;所述发送模块1008,用于生成所述消息的消息标识;将所述消息写入所述目的路径的接收消息箱,并推送给所述目的路径对应的设备。所述发送模块1008,用于拉取所述目的路径的接收消息箱中的消息,将所述消息推送给所述目的路径对应的设备。所述发送模块1008,还用于更新所述目的路径的接收消息箱中消息的第一处理进度。所述消息发送方式包括第二消息发送方式;所述发送模块1008,用于生成所述消息的消息标识;将所述消息写入所述源路径的发送消息箱,并推送给所述目的路径对应的设备。所述发送模块1008,用于代理所述目的路径对应的设备拉取所述源路径的发送消息箱中的消息,将所述消息推送给所述目的路径对应的设备。所述发送模块1008,还用于更新所述目的路径从所述源路径的发送消息箱中获取消息的第二处理进度。所述第一消息发送方式包括:设备间消息发送方式;所述第二消息发送方式包括:广播消息发送方式。所述路由配置模块1002,用于依据路由删除消息,删除源路径和目的路径之间的正向路由关系和反向路由关系,并减少所述正向路由关系的路由个数。本申请实施例无需跨设备授权topic的模式,不再需要管理复杂的授权记录,不会产生非法越权使用的问题,而是利用topic路由模型实现基于mqtt协议的设备间通信,设备端只需要订阅和发布属于自己的topic即可实现设备间通信。能够动态选择普通的m2m场景和广播场景,平衡服务端写入和读取存储设备的压力,使服务端不会出现单方面的瓶颈,提高了服务端的稳定性。并且可利用存储设备的特性如hbase列存储的一些特性,保证了路由表非常大时的广播推送的及时性和消息可靠性。本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例中各方法步骤的指令(instructions)。本申请实施例提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个所述的方法。本申请实施例中,所述电子设备包括服务器、网关、子设备等,子设备为物联网设备等设备。本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的装置,该装置可包括服务器(集群)、终端设备如iot设备等电子设备。图11示意性地示出了可被用于实现本申请中所述的各个实施例的示例性装置1100。对于一个实施例,图11示出了示例性装置1100,该装置具有一个或多个处理器1102、被耦合到(一个或多个)处理器1102中的至少一个的控制模块(芯片组)1104、被耦合到控制模块1104的存储器1106、被耦合到控制模块1104的非易失性存储器(nvm)/存储设备1108、被耦合到控制模块1104的一个或多个输入/输出设备1110,以及被耦合到控制模块1106的网络接口1112。处理器1102可包括一个或多个单核或多核处理器,处理器1102可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,装置1100能够作为本申请实施例中所述网关等服务器设备。在一些实施例中,装置1100可包括具有指令1114的一个或多个计算机可读介质(例如,存储器1106或nvm/存储设备1108)以及与该一个或多个计算机可读介质相合并被配置为执行指令1114以实现模块从而执行本公开中所述的动作的一个或多个处理器1102。对于一个实施例,控制模块1104可包括任意适当的接口控制器,以向(一个或多个)处理器1102中的至少一个和/或与控制模块1104通信的任意适当的设备或组件提供任意适当的接口。控制模块1104可包括存储器控制器模块,以向存储器1106提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。存储器1106可被用于例如为装置1100加载和存储数据和/或指令1114。对于一个实施例,存储器1106可包括任意适当的易失性存储器,例如,适当的dram。在一些实施例中,存储器1106可包括双倍数据速率类型四同步动态随机存取存储器(ddr4sdram)。对于一个实施例,控制模块1104可包括一个或多个输入/输出控制器,以向nvm/存储设备1108及(一个或多个)输入/输出设备1110提供接口。例如,nvm/存储设备1108可被用于存储数据和/或指令1114。nvm/存储设备1108可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(hdd)、一个或多个光盘(cd)驱动器和/或一个或多个数字通用光盘(dvd)驱动器)。nvm/存储设备1108可包括在物理上作为装置1100被安装在其上的设备的一部分的存储资源,或者其可被该设备访问可不必作为该设备的一部分。例如,nvm/存储设备1108可通过网络经由(一个或多个)输入/输出设备1110进行访问。(一个或多个)输入/输出设备1110可为装置1100提供接口以与任意其他适当的设备通信,输入/输出设备1110可以包括通信组件、音频组件、传感器组件等。网络接口1112可为装置1100提供接口以通过一个或多个网络通信,装置1100可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如wifi、2g、3g、4g等,或它们的组合进行无线通信。对于一个实施例,(一个或多个)处理器1102中的至少一个可与控制模块1104的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器1102中的至少一个可与控制模块1104的一个或多个控制器的逻辑封装在一起以形成系统级封装(sip)。对于一个实施例,(一个或多个)处理器1102中的至少一个可与控制模块1104的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器1102中的至少一个可与控制模块1104的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(soc)。在各个实施例中,装置1100可以但不限于是:服务器、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。在各个实施例中,装置1100可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置1100包括一个或多个摄像机、键盘、液晶显示器(lcd)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(asic)和扬声器。本申请实施例提供了一种服务器,包括:一个或多个处理器;和,其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述服务器执行如本申请实施例中一个或多个所述的设备间通信方法。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。以上对本申请所提供的一种设备间通信方法、一种设备间通信装置、一种服务器和一种存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1