一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于云平台的物联网海量消息可靠传输方法、设备及介质与流程

2022-11-30 10:13:01 来源:中国专利 TAG:


1.本发明涉及物联网技术领域,尤其是涉及基于云平台的物联网海量消息可靠传输方法、设备及介质。


背景技术:

2.随着物联网技术的飞速发展,对于物联网平台,如:对讲终端/门禁设备,在云端与数以百万计的对讲终端、门禁设备之间的消息传输是海量的,如何解决云端与终端设备之间的消息可靠传输,同时节省云端-终端设备之间的网络带宽、流量占用与服务器数量,从而减少整个解决方案的建设成本是业界亟待解决的问题。
3.目前大多数厂商在海量消息传输时为了使云平台快速地搭建起来,消息传输服务涉及的核心组件基本是采用第三方开源的mqtt协议(mqtt(消息队列遥测传输)是iso标准(iso/iec prf 20922)下基于发布/订阅范式的消息协议)进行搭建,导致后期的一系列隐患;还有很多厂商虽然意识到第三方消息传输组件存在各种各样的使用隐患,采用自研的方式进行开发,但是受限于技术水平与项目发展阶段,所有的消息组件都是采用单点的方式进行部署,可靠性方面没有保证;另外一部分厂商在技术方面沉淀较多,但是受限于项目发展阶段,没有及时意识到海量消息在数以百万计终端设备中进行传输时,会对云端的带宽、流量以及负载压力产生多大的成本,以至于没有发明相关的省流量方案。综上,现有技术存在以下几个问题:
4.1、现有技术只能解决消息传输的可达性,对海量消息传输的场景来说,由于数据量很大,采用该方案在消息传输时较复杂,效率也不高,且采用第三方开源组件,在系统稳定性与安全性方面存在较大的隐患,同时一旦第三方组件使用过程中发生异常,很难快速定位,可用性无法保障;
5.2、现有技术并没有考虑到当终端设备数量达到数以百万计的时候,海量消息传输、分发时对云端服务负载、带宽、流量的压力,所有的消息都采用从云端一一分别发送给目标终端设备的方式,导致海量消息传输的流量会非常大,对云端的带宽占用、消息分发效率都会造成影响,导致相关云平台的建设成本高居不下。


技术实现要素:

6.为解决上述问题,本发明提供一种基于云平台的物联网海量消息可靠传输方法,保证海量消息可靠传输,降低成本。
7.本发明是通过以下技术方案予以实现:
8.本发明提供了基于云平台的物联网海量消息可靠传输方法,所述方法包括如下步骤:
9.步骤1、建立一套云端消息传输服务,所述云端消息传输服务采用分布式架构部署有长连接服务器集群、会话服务器集群和路由服务器集群;
10.步骤2、建立至少一个终端设备联动系统,每个所述终端设备联动系统部署有同一
个局域网内的不同终端设备;选择所述终端设备联动系统中的一台终端设备作为主设备,其他台终端设备为从设备;
11.步骤3、所述主设备与长连接服务器集群中某一个节点建立长连接通信;
12.步骤4、所述节点将主设备与节点的映射关系注册进会话服务器集群;
13.步骤5、所述云端消息传输服务的消息入口产生消息,每条消息包括消息头部和消息体,所述消息头部标记有该消息要发送到的目标设备列表;将该消息和消息路由指令发送给路由服务器集群;
14.步骤6、所述路由服务器集群收到消息和消息路由指令后,根据目标设备列表查询该目标设备所在的目标终端设备联动系统,并从会话服务器集群查询与目标终端设备联动系统的主设备所连接的节点信息;
15.步骤7、所述路由服务器集群将该消息的消息头部进行编码,并根据节点信息将消息和消息分发指令发送给长连接服务器集群对应的节点;
16.步骤8、所述节点收到消息和消息分发指令后,将消息发送给目标终端设备联动系统的主设备;
17.步骤9、目标终端设备联动系统的主设备收到消息后,将消息通过局域网的方式广播给从设备;从设备收到主设备广播的消息后,解码消息头部,确定该条消息是否需要发送给自己,若是,则将消息插入该从设备的消息接收模块;否则直接丢弃该消息。
18.进一步的,所述步骤2中选择所述终端设备联动系统中的一台终端设备作为主设备,具体包括:
19.选择所述终端设备联动系统中具有外网通信能力的其中一台终端设备作为主设备。
20.进一步的,所述步骤3具体包括:
21.所述主设备上集成有sdk,通过sdk的接口实现与长连接服务器集群中某一个节点建立长连接通信。
22.进一步的,所述步骤4具体包括:
23.所述节点将主设备的唯一标识与该节点在云端消息传输服务的唯一标识的映射关系通过rpc注册进会话服务器集群。
24.进一步的,所述步骤4之后还包括:
25.步骤41、所述会话服务器集群采用redis mysql对映射关系数据进行存储。
26.进一步的,所述步骤5中消息入口产生的消息是由长连接服务器集群有消息推送业务时推送过来的或是由云端消息传输服务外的web服务器推送过来的。
27.进一步的,所述步骤7中所述路由服务器集群将该消息的消息头部进行编码,具体包括:
28.所述路由服务器集群采用protobuf编译器将该消息的消息头部进行编码。
29.进一步的,所述步骤8具体包括:
30.所述节点收到消息和消息分发指令后,采用异步io复用的方式将消息发送给目标终端设备联动系统的主设备。
31.本发明还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述的基于云平台的物联网
海量消息可靠传输方法。
32.本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述的基于云平台的物联网海量消息可靠传输方法。
33.本发明的有益效果是:
34.1、本发明采用自研一套云端消息传输服务跟终端设备sdk的形式,从而实现了云端与终端设备之间的消息可靠传输,终端设备只需要接入sdk即可实现与云端的消息服务间的消息通信,无需额外做任何代码开发工作,实现开箱即用。云端消息传输服务由长连接服务器集群、会话服务器集群、路由服务器集群等三个核心服务器集群采用分布式架构部署构成,实现了消息传输服务的可用性、可拓展性与可维护性。终端设备的sdk则实现了同一个局域网内不同设备间的广播能力与消息去重、排序、拉取的能力,架构上非常灵活稳定,保证海量消息可靠传输;
35.2、提出终端设备联动系统主从设备架构、消息编码、qos(即quality of service,服务质量,对于网络业务,服务质量包括传输的带宽、传送的时延、数据的丢包率等)保证等核心技术理念,从而解决了云端的消息传输服务在带宽占用、流量消耗与服务器购买费用等成本问题。
附图说明
36.为了更清楚地说明本发明实施方式的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
37.图1是本发明实施例提供的基于云平台的物联网海量消息可靠传输方法流程图。
38.图2是本发明实施例提供的基于云平台的物联网海量消息可靠传输框架图。
39.图3是发明实施例提供的消息头字段结构图。
40.图4是本发明实施例提供的一种电子设备的示意图。
41.图5是本发明实施例提供的一种计算机可读存储介质的示意图。
具体实施方式
42.为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。因此,以下对在附图中提供的本发明的实施方式的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
43.如图1-图3所示,本发明实施例提供了基于云平台的物联网海量消息可靠传输方法,所述方法包括如下步骤:
44.步骤1、建立一套云端消息传输服务,所述云端消息传输服务采用分布式架构部署
有长连接服务器集群、会话服务器集群和路由服务器集群;所述云端消息传输服务采用自研的分布式架构,确保架构的可用性、可拓展性、可维护性,以此支撑起海量消息传输的需求,解决了其他厂商碰到的安全与可靠性隐患;
45.步骤2、建立至少一个终端设备联动系统,每个所述终端设备联动系统部署有同一个局域网内的不同终端设备;选择所述终端设备联动系统中的一台终端设备作为主设备,其他台终端设备为从设备;本发明提出了终端设备联动系统与主从架构的概念,所谓的联动系统是指同一个项目下的多台终端设备之间组成的一个设备群组,该群组下的所有终端设备具有对等的地位且均部署在同一个局域网下面,典型的对讲、门禁设备都是按项目进行部署的,同一个项目下的设备数少则几台,多则数百台,这些设备基本都处于同一个局域网下面,能够快速地进行消息的广播。当云端要将一条消息分发给该终端设备联动系统下的所有终端设备或者某些设备时,不需要将消息一一发送给这些目标设备,只需要将一条消息推送给该群组下面的其中一台主设备(亦即当前设备群组下的主设备),然后由主设备在本地的局域网内将消息广播给群组内的目标设备(从设备),从设备根据dev list的情况来确定收取来自主设备广播的消息自己是否是接收者,如果不是,则自动放弃该消息,如果是,则将消息插入接收消息列表。解决了海量消息传输时,对云端服务在带宽、流量以及服务器建设成本方面的巨大挑战。这样就实现了原先从云端要发送n条消息给群组下的所有终端设备,当前只需要发送一条消息即可,云端的流量消耗、带宽要求、服务器数量可以大大节省。借助联动系统的概念,解决了云端推送消息时的负担,将消息分发的压力传递给终端设备,对云端支撑海量消息的可靠与低成本传输起到重要的作用。
46.在本实施例中,选择所述终端设备联动系统中的一台终端设备作为主设备,具体包括:选择所述终端设备联动系统中具有外网通信能力的其中一台终端设备作为主设备,这样的目的是主设备通信能力好,就能更好地完成主设备与长连接服务器集群之间的传输。
47.步骤3、所述主设备与长连接服务器集群中某一个节点建立长连接通信;
48.在本实施例中,所述主设备上集成有sdk,通过sdk的接口实现与长连接服务器集群中某一个节点建立长连接通信;这样的目的主要是终端设备接入与云端消息服务配套的sdk进行消息的可靠传输,对设备本身不需要做任何的功能性开发,使得终端设备只需要接入sdk即可实现与云端的消息服务间的消息通信,无需额外做任何代码开发工作,实现开箱即用。终端设备的sdk则实现了同一个局域网内不同设备间的广播能力与消息去重、排序、拉取的能力。
49.步骤4、所述节点将主设备与节点的映射关系注册进会话服务器集群;在本实施例中,所述节点将主设备的唯一标识与该节点在云端消息传输服务的唯一标识的映射关系通过rpc(rpc全称是remote procedure call,即远程过程调用,其对应的是我们的本地调用。中间件:采用业内广泛使用的grpc)注册进会话服务器集群。这样的目的是通过唯一标识可以将主设备与节点的映射关系存储于会话服务器集群内,以便后期查询时更快找到对应的映射关系。
50.在本实施例中,所述步骤4之后还包括:步骤41、所述会话服务器集群采用redis mysql对映射关系数据进行存储;这样的目的是采用c 开发,底层的数据存储依赖于redis mysql,从而提升查询效率。
51.步骤5、所述云端消息传输服务的消息入口产生消息,每条消息包括消息头部和消息体,所述消息头部标记有该消息要发送到的目标设备列表;将该消息和消息路由指令发送给路由服务器集群;消息路由指令是用来通知路由服务器集群准备进行消息路由了;云端—设备端之间的消息由消息头部 消息体组成,其中消息头部在终端设备的消息可靠性传输中起到了非常关键的作用。
52.在本实施例中,所述消息入口产生的消息是由长连接服务器集群有消息推送业务时推送过来的或是由云端消息传输服务外的web服务器推送过来的;当云端内部的长连接服务器集群或者云端外部的web服务器需要推送消息给终端设备时,需要将消息先通过消息入口传输给路由服务器集群进行消息路由,这样的目的是使得要推送的消息能统一由路由服务器集群发送给指定的终端设备。
53.步骤6、所述路由服务器集群收到消息和消息路由指令后,消息路由指令是用来通知消息需要执行路由操作,当路由服务器集群收到消息路由指令时,就要准备准备进行消息路由,在执行消息路由之前,先要确定该消息最终要发送的目标设备以及通过哪个通信通道进行传输,才能将消息进行传输和路由,因此首先要根据目标设备列表查询该目标设备所在的目标终端设备联动系统,并从会话服务器集群查询与目标终端设备联动系统的主设备所连接的节点信息;
54.步骤7、所述路由服务器集群将该消息的消息头部进行编码,并根据节点信息将消息和消息分发指令发送给长连接服务器集群对应的节点;
55.在本实施例中,所述路由服务器集群采用protobuf编译器将该消息的消息头部进行编码;该发明提出了消息编码的概念,云端—设备端之间的消息由消息头部 消息体组成,其中消息头部在终端设备的消息可靠性传输中起到了非常关键的作用,消息编码的功能使得云端可以选择性的将消息分发给终端设备联动系统中目标设备列表成为了可能。
56.相关的消息头字段描述如图3所示:
57.version(v):7bits,表示版本号,目前默认为1;
58.padding(p):1bit,表示预留字段;
59.msg type:8bits,表示消息类型
60.dev list num(dln):4bit,表示一条消息中有多少个设备列表单元,其中每个设备列表单元占4个字节(32bit);
61.sequence number:12bits,表示每个云端与终端设备之间的消息会话中递增,seq随机选取,范围在0-2^12之间循环;
62.timestamp:32bits,表示消息的时间戳,精确到秒;
63.dev list:dln*32bits,表示该条消息要转发给该终端设备联动系统下的目标设备列表,每一个bit代表其中一台终端设备,终端设备按唯一标识的顺序进行标记,大小根据dln的取值可变,可见单个终端设备联动系统支持的目标设备列表最大为2^4*32=16*32=512台设备。
64.步骤8、所述节点收到消息和消息分发指令后,将消息发送给目标终端设备联动系统的主设备;
65.在本实施例中,所述节点收到消息和消息分发指令后,采用异步io复用的方式将消息发送给目标终端设备联动系统的主设备。
66.步骤9、目标终端设备联动系统的主设备收到消息后,将消息通过局域网的方式广播给从设备;从设备收到主设备广播的消息后,解码消息头部,确定该条消息是否需要发送给自己,若是,则将消息插入该从设备的消息接收模块;否则直接丢弃该消息。
67.在本实施例中,每一条消息都分成消息头部 消息体两个部分组成,消息头部标记有从云端下发的消息需要转发给联动系统下面的目标设备列表,联动系统的主设备收到云端发送的消息后,不需要解码消息头部,直接将消息通过局域网广播给其他设备(即联动系统的从设备),从设备收到主设备广播的消息后,解码消息头部,确定该条消息是否需要发送给自己,如果是,则将消息插入设备端的消息接收模块,如果不是,则直接丢弃该消息。消息编码的功能跟所述终端设备联动系统结合,可以保证终端设备联动系统下的终端设备的消息可靠且选择性接收消息成为了可能。
68.所述云端消息传输服务还包括协议转换服务器,所述协议转换服务器设在消息入口与路由服务器集群之间,或者所述协议转换服务器设在路由服务器集群与长连接服务器集群之间。通过协议转换服务器将来自各个厂商的iot终端设备的信令消息转成内部统一的消息格式,然后再转发给后端的长连接服务器集群,这样该技术方案就可以实现对接任意的iot设备,使得任意厂商的iot解决方案都能够实现海量消息的可靠与低成本传输方案。
69.a、说明部件之间的关系:
70.(1)终端设备:终端对讲门禁设备,通过与云端消息传输服务的核心组件之长连接服务器集群的某个节点建立tcp(协议)长连接网络通信,并进行消息传输;同一个项目下的所有终端设备处于相同的局域网内,构成一个联动系统,其中具有外网通信能力的其中一台设备作为主设备与云端消息传输服务的核心组件长连接服务器建立网络通道,并在该网络通道上进行消息的传输。
71.(2)长连接服务器集群:作为终端设备的接入服务,由多个长连接服务器的节点采用集群方式进行开发与部署,当终端设备与长连接服务器集群中的某个节点建立连接后,该节点会将终端设备的唯一标识d_uuid与该节点在云端的唯一标识s_uuid的映射关系d_uuid:s_uuid通过rpc注册进会话服务器集群。同时接收来自路由服务器集群的消息分发需求,将消息精准发送给目标设备。
72.(3)会话服务器集群:保管终端设备与长连接服务器集群的某一节点映射关系的服务。
73.(4)路由服务器集群:核心功能是进行消息路由,即将某一条消息精准地进行消息头编码,同时将该消息发送给目标设备所在的目标长连接服务器集群的节点,以达到将消息精准路由到目标设备的目的。
74.b、云端消息传输服务由三大核心服务器集群构成,包括:长连接服务器集群、会话服务器集群和路由服务器集群,不同的服务器集群之间采用rpc的方式进行通信,其中:
75.(1)长连接服务器集群:采用高性能的c 进行开发,利用异步io复用的方式达到网络消息高并发的业务需求;
76.(2)会话服务器集群:采用c 开发,底层的数据存储依赖于redis mysql,从而提升查询效率;
77.(3)路由服务器集群:采用c 开发,通过引入protobuf使得消息体的编码效率得
到保证;
78.(4)rpc中间件:采用业内广泛使用的grpc;
79.(5)终端设备:主要是接入与云端消息服务配套的sdk进行消息的可靠传输,对设备本身不需要做任何的功能性开发。
80.本发明通过自研一套云端消息传输服务 终端设备联动系统,在终端设备上集成sdk,从而实现了云端与终端设备之间的消息可靠传输,终端设备只需要接入sdk即可实现与云端的消息服务间的消息通信,无需额外做任何代码开发工作,实现开箱即用。云端消息传输服务由长连接服务器集群、会话服务器集群和路由服务器集群三个核心服务器集群采用分布式架构部署构成,实现了消息传输服务的可用性、可拓展性与可维护性。终端设备的sdk则实现了同一个局域网内不同终端设备间的广播能力与消息去重、排序、拉取的能力。
81.1、海量消息的可靠传输实现:采用自研的方式,开发了云端消息传输服务与配套的终端设备联动系统,云端消息传输服务采用分布式服务的架构,所有核心组件均采用集群的方式部署,确保了消息在云端分发、传输时的效率、可靠性以及海量消息传输的需要。终端设备联动系统中的主设备与云端消息传输服务的长连接服务集群中的某一个节点建立长连接通信通道,所有云端与设备端之间的消息传输均通过该长连接通道进行传输。而会话服务器集群则会记录这些数以百万计的终端设备(主设备(直接连接)和从设备(间接连接))当前与长连接服务集群的节点连接信息,从而能够实现云端精准查询某台终端设备连接在某个长连接服务器集群的节点的目的。路由服务器集群则实现云端不同消息的分发策略,实现消息路由的功能。
82.2、海量消息的低成本策略实现:提出了终端设备联动系统的概念,所谓的联动系统是指同一个项目下的多台终端设备之间组成的一个设备群组,该群组下的所有终端设备具有对等的地位且均部署在同一个局域网下面,典型的对讲、门禁设备都是按项目进行部署的,同一个项目下的设备数少则几台,多则数百台,这些设备基本都处于同一个局域网下面,能够快速地进行消息的广播。当云端要将一条消息分发给该终端设备联动系统下的所有终端设备或者某些设备时,不需要将消息一一发送给这些目标设备,只需要推送给该群组下面的其中一台主设备(亦即当前设备群组下的主设备),然后由该主设备通过局域网的方式广播给群组内的目标设备。这样就实现了原先从云端要发送n条消息给群组下的所有终端设备,当前只需要发送一条消息即可,云端的流量消耗、带宽要求、服务器数量可以大大节省。借助联动系统的概念,解决了云端推送消息时的负担,将消息分发的压力传递给终端设备,对云端支撑海量消息的可靠与低成本传输起到重要的作用。
83.3、该发明提出了消息编码的概念,每一条消息都分成消息头部 消息体两个部分组成,消息头部标记有从云端下发的消息需要转发给联动系统下面的目标设备列表,联动系统的主设备收到云端发送的消息后,不需要解码消息头部,直接将消息通过局域网广播给其他设备(即联动系统的从设备),从设备收到主设备广播的消息后,解码消息头部,确定该条消息是否需要发送给自己,如果是,则将消息插入设备端的消息接收模块,如果不是,则直接丢弃该消息。消息编码的功能使得云端可以选择性的将消息分发给终端设备联动系统中目标设备列表成为了可能。
84.首先,终端设备需要集成sdk(软件开发工具包),通过sdk的接口实现与云端的通信;然后,将该方案所涉及的长连接服务器集群、会话服务器集群、路由服务器集群采用分
布式的方式部署到linux操作系统上,组合成一套完整的云端消息传输服务,最后,确保终端设备联动系统中有至少一台设备能够与云端的长连接服务器集群的一个节点进行网络连接。
85.由于该发明的本质是海量消息的可靠、低成本传输方案,因此更换或者新增sdk与云端消息传输服务之间的网络通信协议之后,可以跟任意厂商的终端设备实现对接。所以可以广泛应用在物联网、智能家居、智能驾驶等新兴科技领域的远程终端设备的可靠消息传输方案上。随着aiot时代的到来,该方案可以跟智能设备对接,为ai应用场景下的多样化配置提供稳定可靠的服务。
86.如图4所示,本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的基于云平台的物联网海量消息可靠传输方法。
87.如图5所示,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的基于云平台的物联网海量消息可靠传输方法。
88.以上所述仅为本发明的优选实施方式而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献