一种分布式物联设备跨区域数据一致性的方法和服务集群转让专利

申请号 : CN202011596522.4

文献号 : CN112711635B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 金辉刘一帆

申请人 : 深圳杰睿联科技有限公司

摘要 :

一种分布式物联设备跨区域数据一致性的方法和物联设备的服务集群,在服务集群之间数据同步时,当判断所述物联设备的服务集群的标识不是当前服务集群的标识,当前服务集群的OTI模块会向其他服务集群发起问询动作,然后会相比所有获取到的以及本地已有的设备信息版本号,选择最大的版本号并更新,最后再使用“流言”(Gossip)协议向其余服务集群同步物联设备的带最新版本号的设备信息。本申请服务集群之间的设备数据同步,采用“问询”(Query)与“流言”(Gossip)机制,提供了一种分布式物联设备跨区域数据一致性的解决方案。

权利要求 :

1.一种分布式物联设备跨区域数据一致性的方法,应用于服务集群,所述服务集群包括OTI集群、MQTT代理集群、容器管理系统、分布式缓存和数据库,所述OTI集群包括一个或多个OTI模块,所述MQTT代理集群包括一个或多个MQTT代理模块;其特征在于,所述方法包括:

当一物联设备从一个服务集群的服务区域移动到另一个服务集群的服务区域时,当前服务集群的MQTT代理模块与所述物联设备建立连接,接收所述物联设备使用自身设备ID并携带该物联设备最后连接的服务集群的标识的注册;

当前服务集群的MQTT代理模块向当前服务集群中的OTI模块,发送所述物联设备的注册事件;

当判断所述物联设备的服务集群的标识不是当前服务集群的标识,并向当前服务集群的容器管理系统查询确认无所述物联设备的设备信息时,则当前服务集群的OTI模块向其他服务集群发起问询动作;

当前服务集群的OTI模块接收所有的问询应答;其中具有所述物联设备的设备信息的其他服务集群会响应于所述问询动作返回所述物联设备的设备信息,所述设备信息包含有版本号;

当有问询应答有效,则当前服务集群的OTI模块比较问询应答中返回的设备信息所携带的版本号和本地已有的设备信息的版本号,选择其中最大的版本号并更新该版本号;

当前服务集群的OTI模块,将所述物联设备更新版本号后的设备信息保存至当前服务集群的容器管理系统,以及将所述物联设备的注册事件保存至当前服务集群的分布式缓存和数据库;

当前服务集群的OTI模块使用流言协议向其他服务集群发送所述物联设备带有新版本号的设备信息,以进行同步。

2.如权利要求1所述的方法,其特征在于,在当前服务集群的OTI模块使用流言协议向其他服务集群发送所述物联设备带有新版本号的设备信息后,任意一接收到该设备信息的服务集群都会将该设备信息与自身保存的设备信息进行比较,若自身保存的设备信息中的版本号早于接收到的设备信息中的版本号,则使用接收到的设备信息中的版本号更新自身设备信息中的版本号,反之,则丢弃所接收到的设备信息。

3.如权利要求1所述的方法,其特征在于,还包括:当一物联设备初次注册时,该初次注册的物联设备所在服务区域的服务集群的MQTT代理模块,与所述初次注册的物联设备建立连接,接收该物联设备使用自身设备ID的注册;

所述初次注册的物联设备所在服务区域的服务集群的MQTT代理模块向同一服务集群中的一OTI模块发送注册信息,其中所述注册信息包含有物联设备的设备ID;

接收注册信息的OTI模块向同一服务集群中的容器管理系统请求验证所述初次注册的物联设备的合法性;

当同一服务集群中的容器管理系统根据设备ID验证所述初次注册的物联设备合法时,所述接收注册信息的OTI模块将注册事件保存至同一服务集群的分布式缓存和数据库;

接收所述初次注册的物联设备的注册的MQTT代理模块,接收该物联设备发布的设备信息事件;

接收设备信息事件的MQTT代理模块,向同一服务集群中的OTI模块发送携带有设备ID的设备信息事件;

接收设备信息事件的OTI模块向同一服务集群中的容器管理系统请求验证所述初次注册的物联设备的合法性;当合法时,则所述接收设备信息事件的OTI模块将设备信息事件保存至同一服务集群的分布式缓存和数据库。

4.如权利要求3所述的方法,其特征在于,该初次注册的物联设备所在服务区域的服务集群的容器管理系统,在该物联设备进行初次注册前,已将所述初次注册的物联设备的设备ID进行了初始化导入。

5.如权利要求1或3所述的方法,其特征在于,还包括:在MQTT代理模块接收到物联设备的注册前,物联设备所在服务区域的服务集群的OTI模块会接收到物联设备的Ticket请求;

当接收到物联设备的Ticket请求后,OTI模块向物联设备返回Ticket,该Ticket包含当前服务区域可用的服务集群列表,在服务集群列表中各服务集群都包含有其自各的MQTT代理模块的访问地址,以使得物联设备根据自身的网络状况和地理位置,选取其中一个MQTT代理模块进行连接。

6.一种物联设备的服务集群,其特征在于,包括OTI集群、MQTT代理集群、容器管理系统、分布式缓存和数据库;

当一物联设备从其他服务集群的服务区域移动到当前服务集群的服务区域时,当前服务集群的MQTT代理模块与所述物联设备建立连接,接收所述物联设备使用自身设备ID并携带该物联设备最后连接的服务集群的标识的注册;

当前服务集群的MQTT代理模块向当前服务集群中的OTI模块,发送所述物联设备的注册事件;

当判断所述物联设备的服务集群的标识不是当前服务集群的标识,并向当前服务集群的容器管理系统查询确认无所述物联设备的设备信息时,则当前服务集群的OTI模块向其他服务集群发起问询动作;

当前服务集群的OTI模块接收所有的问询应答;其中具有所述物联设备的设备信息的其他服务集群会响应于所述问询动作返回所述物联设备的设备信息,所述设备信息包含有版本号;

当有问询应答有效,则当前服务集群的OTI模块比较问询应答中返回的设备信息所携带的版本号和本地已有的设备信息的版本号,选择其中最大的版本号并更新该版本号;

当前服务集群的OTI模块,将所述物联设备更新版本号后的设备信息保存至当前服务集群的容器管理系统,以及将所述物联设备的注册事件保存至当前服务集群的分布式缓存和数据库;

当前服务集群的OTI模块使用流言协议向其他服务集群发送所述物联设备带有新版本号的设备信息,以进行同步。

7.如权利要求6所述的服务集群,其特征在于,在当前服务集群的OTI模块使用流言协议向其他服务集群发送所述物联设备带有新版本号的设备信息后,任意一接收到该设备信息的服务集群都会将该设备信息与自身保存的设备信息进行比较,若自身保存的设备信息中的版本号早于接收到的设备信息中的版本号,则使用接收到的设备信息中的版本号更新自身设备信息中的版本号,反之,则丢弃所接收到的设备信息。

8.如权利要求6所述的服务集群,其特征在于,当一物联设备初次注册时,该初次注册的物联设备所在服务区域的服务集群的MQTT代理模块,与所述初次注册的物联设备建立连接,接收该物联设备使用自身设备ID的注册;

所述初次注册的物联设备所在服务区域的服务集群的MQTT代理模块向同一服务集群中的一OTI模块发送注册信息,其中所述注册信息包含有物联设备的设备ID;

接收注册信息的OTI模块向同一服务集群中的容器管理系统请求验证所述初次注册的物联设备的合法性;

当同一服务集群中的容器管理系统根据设备ID验证所述初次注册的物联设备合法时,所述接收注册信息的OTI模块将注册事件保存至同一服务集群的分布式缓存和数据库;

接收所述初次注册的物联设备的注册的MQTT代理模块,接收该物联设备发布的设备信息事件;

接收设备信息事件的MQTT代理模块,向同一服务集群中的OTI模块发送携带有设备ID的设备信息事件;

接收设备信息事件的OTI模块向同一服务集群中的容器管理系统请求验证所述初次注册的物联设备的合法性;当合法时,则所述接收设备信息事件的OTI模块将设备信息事件保存至同一服务集群的分布式缓存和数据库。

9.如权利要求8所述的服务集群,其特征在于,该初次注册的物联设备所在服务区域的服务集群的容器管理系统,在该物联设备进行初次注册前,已将所述初次注册的物联设备的设备ID进行了初始化导入。

10.如权利要求6或8所述的服务集群,其特征在于,在MQTT代理模块接收到物联设备的注册前,物联设备所在服务区域的服务集群的OTI模块会接收到物联设备的Ticket请求;

当接收到物联设备的Ticket请求后,OTI模块向物联设备返回Ticket,该Ticket包含当前服务区域可用的服务集群列表,在服务集群列表中各服务集群都包含有其自各的MQTT代理模块的访问地址,以使得物联设备根据自身的网络状况和地理位置,选取其中一个MQTT代理模块进行连接。

说明书 :

一种分布式物联设备跨区域数据一致性的方法和服务集群

技术领域

[0001] 本发明涉及一种分布式物联设备跨区域数据一致性的方法和物联设备的服务集群。

背景技术

[0002] 物联网(IoT,Internet of Things)是近年在各行各业普及得比较广泛的技术,广义上只要通过网络连接技术,如WiFi、蓝牙、近场通讯等接入局域或广域网的设备都是物联
网的接入对象。由于物联设备普遍具有无人值守和需遥测操控等特性,因此在保持连接的
过程中,物联网设备与云端服务器(特别是跨多个区域数据中心)的数据状态同步是比较艰
难的一项任务。

发明内容

[0003] 本发明提供一种分布式物联设备跨区域数据一致性的方法和物联设备的服务集群,下面具体说明。
[0004] 根据第一方面,一种实施例中提供一种分布式物联设备跨区域数据一致性的方法,应用于服务集群,所述服务集群包括OTI集群、MQTT代理集群、容器管理系统、分布式缓
存和数据库,所述OTI集群包括一个或多个OTI模块,所述MQTT代理集群包括一个或多个
MQTT代理模块;所述方法包括:
[0005] 当一物联设备从一个服务集群的服务区域移动到另一个服务集群的服务区域时,当前服务集群的MQTT代理模块与所述物联设备建立连接,接收所述物联设备使用自身设备
ID并携带该物联设备最后连接的服务集群的标识的注册;
[0006] 当前服务集群的MQTT代理模块向当前服务集群中的OTI模块,发送所述物联设备的注册事件;
[0007] 当判断所述物联设备的服务集群的标识不是当前服务集群的标识,并向当前服务集群的容器管理系统查询确认无所述物联设备的设备信息时,则当前服务集群的OTI模块
向其他服务集群发起问询动作;
[0008] 当前服务集群的OTI模块接收所有的问询应答;其中具有所述物联设备的设备信息的其他服务集群会响应于所述问询动作返回所述物联设备的设备信息,所述设备信息包
含有版本号;
[0009] 当有问询应答有效,则当前服务集群的OTI模块比较问询应答中返回的设备信息所携带的版本号和本地已有的设备信息的版本号,选择其中最大的版本号并更新该版本
号;
[0010] 当前服务集群的OTI模块,将所述物联设备更新版本号后的设备信息保存至当前服务集群的容器管理系统,以及将所述物联设备的注册事件保存至当前服务集群的分布式
缓存和数据库;
[0011] 当前服务集群的OTI模块使用流言协议向其他服务集群发送所述物联设备带有新版本号的设备信息,以进行同步。
[0012] 一实施例中,在当前服务集群的OTI模块使用流言协议向其他服务集群发送所述物联设备带有新版本号的设备信息后,任意一接收到该设备信息的服务集群都会将该设备
信息与自身保存的设备信息进行比较,若自身保存的设备信息中的版本号早于接收到的设
备信息中的版本号,则使用接收到的设备信息中的版本号更新自身设备信息中的版本号,
反之,则丢弃所接收到的设备信息。
[0013] 一实施例中,本文的方法还包括:
[0014] 当一物联设备初次注册时,该初次注册的物联设备所在服务区域的服务集群的MQTT代理模块,与所述初次注册的物联设备建立连接,接收该物联设备使用自身设备ID的
注册;
[0015] 所述初次注册的物联设备所在服务区域的服务集群的MQTT代理模块向同一服务集群中的一OTI模块发送注册信息,其中所述注册信息包含有物联设备的设备ID;
[0016] 接收注册信息的OTI模块向同一服务集群中的容器管理系统请求验证所述初次注册的物联设备的合法性;
[0017] 当同一服务集群中的容器管理系统根据设备ID验证所述初次注册的物联设备合法时,所述接收注册信息的OTI模块将注册事件保存至同一服务集群的分布式缓存和数据
库;
[0018] 接收所述初次注册的物联设备的注册的MQTT代理模块,接收该物联设备发布的设备信息事件;
[0019] 接收设备信息事件的MQTT代理模块,向同一服务集群中的OTI模块发送携带有设备ID的设备信息事件;
[0020] 接收设备信息事件的OTI模块向同一服务集群中的容器管理系统请求验证所述初次注册的物联设备的合法性;当合法时,则该OTI模块将设备信息事件保存至同一服务集群
的分布式缓存和数据库。
[0021] 一实施例中,该初次注册的物联设备所在服务区域的服务集群的容器管理系统,在该物联设备进行初次注册前,已将所述初次注册的物联设备的设备ID进行了初始化导
入。
[0022] 一实施例中,本文的方法还包括:
[0023] 在MQTT代理模块接收到物联设备的注册前,物联设备所在服务区域的服务集群的OTI模块会接收到物联设备的Ticket请求;
[0024] 当接收到物联设备的Ticket请求后,OTI模块向物联设备返回Ticket,该Ticket包含当前服务区域可用的服务集群列表,在服务集群列表中各服务集群都包含有其自各的
MQTT代理模块的访问地址,以使得物联设备根据自身的网络状况和地理位置,选取其中一
个MQTT代理模块进行连接。
[0025] 根据第二方面,一种实施例中提供一种物联设备的服务集群,包括OTI集群、MQTT代理集群、容器管理系统、分布式缓存和数据库;
[0026] 当一物联设备从其他服务集群的服务区域移动到当前服务集群的服务区域时,当前服务集群的MQTT代理模块与所述物联设备建立连接,接收所述物联设备使用自身设备ID
并携带该物联设备最后连接的服务集群的标识的注册;
[0027] 当前服务集群的MQTT代理模块向当前服务集群中的OTI模块,发送所述物联设备的注册事件;
[0028] 当判断所述物联设备的服务集群的标识不是当前服务集群的标识,并向当前服务集群的容器管理系统查询确认无所述物联设备的设备信息时,则当前服务集群的OTI模块
向其他服务集群发起问询动作;
[0029] 当前服务集群的OTI模块接收所有的问询应答;其中具有所述物联设备的设备信息的其他服务集群会响应于所述问询动作返回所述物联设备的设备信息,所述设备信息包
含有版本号;
[0030] 当有问询应答有效,则当前服务集群的OTI模块比较问询应答中返回的设备信息所携带的版本号和本地已有的设备信息的版本号,选择其中最大的版本号并更新该版本
号;
[0031] 当前服务集群的OTI模块,将所述物联设备更新版本号后的设备信息保存至当前服务集群的容器管理系统,以及将所述物联设备的注册事件保存至当前服务集群的分布式
缓存和数据库;
[0032] 当前服务集群的OTI模块使用流言协议向其他服务集群发送所述物联设备带有新版本号的设备信息,以进行同步。
[0033] 一实施例中,在当前服务集群的OTI模块使用流言协议向其他服务集群发送所述物联设备带有新版本号的设备信息后,任意一接收到该设备信息的服务集群都会将该设备
信息与自身保存的设备信息进行比较,若自身保存的设备信息中的版本号早于接收到的设
备信息中的版本号,则使用接收到的设备信息中的版本号更新自身设备信息中的版本号,
反之,则丢弃所接收到的设备信息。
[0034] 一实施例中,当一物联设备初次注册时,该初次注册的物联设备所在服务区域的服务集群的MQTT代理模块,与所述初次注册的物联设备建立连接,接收该物联设备使用自
身设备ID的注册;
[0035] 所述初次注册的物联设备所在服务区域的服务集群的MQTT代理模块向同一服务集群中的一OTI模块发送注册信息,其中所述注册信息包含有物联设备的设备ID;
[0036] 接收注册信息的OTI模块向同一服务集群中的容器管理系统请求验证所述初次注册的物联设备的合法性;
[0037] 当同一服务集群中的容器管理系统根据设备ID验证所述初次注册的物联设备合法时,所述接收注册信息的OTI模块将注册事件保存至同一服务集群的分布式缓存和数据
库;
[0038] 接收所述初次注册的物联设备的注册的MQTT代理模块,接收该物联设备发布的设备信息事件;
[0039] 接收设备信息事件的MQTT代理模块,向同一服务集群中的OTI模块发送携带有设备ID的设备信息事件;
[0040] 接收设备信息事件的OTI模块向同一服务集群中的容器管理系统请求验证所述初次注册的物联设备的合法性;当合法时,则该OTI模块将设备信息事件保存至同一服务集群
的分布式缓存和数据库。
[0041] 一实施例中,该初次注册的物联设备所在服务区域的服务集群的容器管理系统,在该物联设备进行初次注册前,已将所述初次注册的物联设备的设备ID进行了初始化导
入。
[0042] 一实施例中,在MQTT代理模块接收到物联设备的注册前,物联设备所在服务区域的服务集群的OTI模块会接收到物联设备的Ticket请求;
[0043] 当接收到物联设备的Ticket请求后,OTI模块向物联设备返回Ticket,该Ticket包含当前服务区域可用的服务集群列表,在服务集群列表中各服务集群都包含有其自各的
MQTT代理模块的访问地址,以使得物联设备根据自身的网络状况和地理位置,选取其中一
个MQTT代理模块进行连接。
[0044] 依据上述实施例的分布式物联设备跨区域数据一致性的方法和物联设备的服务集群,在服务集群之间数据同步时,当判断所述物联设备的服务集群的标识不是当前服务
集群的标识,当前服务集群的OTI模块会向其他服务集群发起问询动作,然后会相比所有获
取到的以及本地已有的设备信息版本号,选择最大的版本号并更新,最后再使用“流言”
(Gossip)协议向其余服务集群同步物联设备的带最新版本号的设备信息。本申请服务集群
之间的设备数据同步,采用“问询”(Query)与“流言”(Gossip)机制,提供了一种分布式物联
设备跨区域数据一致性的解决方案。

附图说明

[0045] 图1为Kafka的一种示意图;
[0046] 图2为一实施例的物联设备的服务集群的结构示意图;
[0047] 图3为一实施例的服务集群之间的连接关系图;
[0048] 图4为一种实施例的分布式物联设备跨区域数据一致性的方法的流程图;
[0049] 图5为另一种实施例的分布式物联设备跨区域数据一致性的方法的流程图;
[0050] 图6为本发明的一个例子中的通信交互流程图;
[0051] 图7为本发明的另一个例子中的通信交互流程图。

具体实施方式

[0052] 下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了
使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征
在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申
请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过
多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们
根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
[0053] 另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易
见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一
个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
[0054] 本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和
间接连接(联接)。
[0055] 本文中物联网设备和物联设备是同一概念和术语。
[0056] 在说明本发明之前,先对现在技术进行一个说明。在物联设备消息服务的技术中,有Apache ActiveMQ和Apache Kafka,下面分别说明。
[0057] Apache ActiveMQ:ActiveMQ(Active Message Queue)是Apache软件基金会下的一个开源软件,它遵循JMS 1.1规范,是消息驱动中间件软件;它为企业消息传递提供高可
用、高性能、可扩展、稳定与安全保障等特性。
[0058] 具体地,Apache ActiveMQ是一个开源的,多协议的,基于Java的消息服务中间件,支持多种业界标准协议和多语言平台,例如融合多平台的AMQP协议、互联网应用通过
websockets使用STOMP协议交换消息、使用MQTT协议管理IoT设备、支持已有的JMS基础设施
等等。ActiveMQ提供强大的能力和灵活性支持任何的消息使用场景。
[0059] MQTT(Message Queuing Telemetry Transport)即消息队列遥感传输,是ISO标准(ISO/IEC PRF 20922)下基于发布订阅范式的消息协议,可视为“数据传递的桥梁”。它工作
在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发
布/订阅型消息协议。
[0060] JMS(Java Message Service)即Java消息服务应用程序接口,是一个Java平台中关于面向消息中间件的API,用于两个应用程序之间,或分布式系统中发布消息,进行异步
通信。Java消息服务是一个与具体平台无关的API,绝大多数中间件供应商商都对JMS提供
支持。
[0061] 以上是关于Apache ActiveMQ的一些说明;下面对Apache Kafka进行说明。
[0062] Kafka是由Apache软件基金会开发的一个开源的流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐和低延迟的平台;其持久化层本
质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”。
[0063] 可见,Apache Kafka是一个分布式流数据平台,是以“流”为载体的实时数据传输解决方案。一个标准流平台方案应该具备三种能力:
[0064] (1)向“记录流”发布与订阅,类似于消息队列或企业消息系统;
[0065] (2)以一种持续的容错方式来存储“记录流”;
[0066] (3)当“记录流”发生的时候去做处理。
[0067] Kafka通常用于两类广义的应用:
[0068] (1)构建实时的流数据通道用于稳定地在系统与应用程序之后获取数据;
[0069] (2)构建实时的流应用程序用于传输或反映流数据。
[0070] Kafka有以下特征:
[0071] (1)作为集群运行在一个或多个服务器,并可横跨多个数据中心;
[0072] (2)Kafka集群以“主题”为类别去存储“记录流”;
[0073] (3)每一个“记录”包含一个“关键字”,一个“值”,以及一个“时间戳”。
[0074] 请参照图1,Kafka有五个核心API(Application Programming Interface,应用程序接口),分别为生产者API(Producer API),消费者API(Consumer API),流API(Streams 
API),连接者API(Connector API)以及管理API(Admin API)。
[0075] 上述两类现有技术有一些缺点。例如,现有技术专注于“服务器”对“服务器”的连接关系,而物联设备具有体积小、功耗低和处理能力弱等特点,不能利用现有技术完整地接
入网络;再例如,数据不同步的情况下,现有技术未有机制解决设备跨区域移动后连接效率
低下的问题,比如跨洲移动时仍然需要连接原有的云服务器;再例如,物联设备使用HTTP/
HTTPS协议与云端服务器保持数据状态同步,网络开销较大,不利于拓展海量设备的分布式
部署。
[0076] 一些实施例中,发明人希望提出这样一种技术,其支持海量物联网设备连接,提供灵活的消息传递机制,且维持较小的网络开销。
[0077] 一些实施例中,发明人希望提出这样一种技术,其支持物联设备跨区域的数据同步,物联设备可灵活地接入当地最优的云服务节点,提高连接效率。
[0078] 基于上述情况,本申请提出一种分布式物联设备跨区域数据一致性的方法和物联设备的服务集群,下面具体说明。
[0079] 本发明一些实施例中提供一种物联设备的服务集群。服务集群的英文是Service Cluster,可以缩写为SC。请参照图2,本发明中物联设备的服务集群可以包括包括MQTT代理
集群10、OTI集群20、容器管理系统30、分布式缓存40和数据库50,下面具体说明。
[0080] MQTT代理集群10包括一个或多个MQTT代理模块11——当然,一般情况下,MQTT代理集群10作为一个集群是由多个MQTT代理模块11所构成,即一般情况下,是多个MQTT代理
模块11互相连接成集群;当任意一MQTT代理模块11收到消息时,则该消息被在MQTT代理集
群10内同步和保存。集群的模式运行,可以保证消息下发的质量和整个功能可用性。
[0081] 一些实施例中,MQTT代理模块11能够发送和接收MQTT消息,这主要是为了与物联设备进行通信。一些例子中,MQTT代理模块11还可以接收和发送基于网络应用层协议的消
息,这主要是为了与OTI集群20进行通信。
[0082] MQTT代理模块11能够与已订阅的物联设备保持TCP长连接,并通过心跳机制来监测所连接的物联设备的状况;MQTT代理模块11能够发送和接收MQTT消息,如上所述,这主要
是为了与物联设备进行通信。MQTT代理模块11实现了MQTT协议,主要提供了消息的订阅和
发布功能,是实现向物联设备“推送”(Push)消息的核心部件。如上所述,MQTT是Message 
Queuing Telemetry Transport的缩写,是消息队列遥感传输的意思,是ISO标准(ISO/IEC 
PRF 20922)下基于发布订阅范式的消息协议,可视为“数据传递的桥梁”;MQTT协议工作在
TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发
布/订阅型消息协议。本申请的一些例子中,MQTT代理模块11主要有两大功能,如上所述,一
是保持和所连设备的TCP长连接,并通过“心跳”(Heartbeat)来监测连接的健康状况;二是
在发在发布订阅的基础功能上,对外提供API使得一些第三方根据“主题”(Topic)向设备发
送MQTT消息,同时也能接收设备对其发送的MQTT消息,根据需求再向第三方转发。
[0083] 本发明中MQTT代理模块11支持海量物联设备连接;MQTT协议本身是适合物联设备连接与消息传递的轻量级网络层应用协议,MQTT代理模块11是MQTT协议的具体实现,例如
MQTT代理模块11是实现MQTT协议的代理软件,运行在服务器中。
[0084] 因此,本发明中物联设备使用MQTT代理模块11主要提供以下三个功能:
[0085] (1)以设备标识,例如设备ID(DeviceID)作为“topic”向MQTT代理模块11订阅(Subscribe),即完成该设备对MQTT代理模块11的注册,此时物联设备也是MQTT代理模块11
的一个用户,MQTT代理模块11保持和所连设备的TCP长连接,并通过“心跳”来监测连接的健
康状况;
[0086] (2)任一接入了MQTT代理模块11的设备或服务器可根据topic,这里特指设备ID(DeviceID),向某一设备发布(Publish)消息;
[0087] (3)订阅设备ID(DeviceID)为标识的设备监听到有消息,接收该消息。
[0088] 以上是关于MQTT代理集群10及其MQTT代理模块11的一些说明。
[0089] OTI集群20包括一个或多个OTI模块21——当然,一般情况下,OTI集群20作为一个集群是由多个OTI模块21所构成,即一般情况下,是多个OTI模块21互相连接成集群。
[0090] 在对OTI集群20及其OTI模块21说明前,先对OTA技术进行说明。
[0091] 现有技术中有基于短信服务的OTA技术。OTA(Over The Air)是一项基于短消息机制,通过移动通信的空中接口对SIM卡数据及应用进行远程管理的技术。基于OTA技术,可以
形成OTA业务,即一种基于短消息机制。基于短信服务的OTA技术,短信成本高昂,特别是涉
及漫游服务时。因此如果要将其应用于物联设备中卡的数据和应用管理,则面临许多困难;
这是因为物联设备需要努力降低成本,目前其硬件成本较为低廉,但如果使用OTA技术后,
会导致后期运营成本大量增加;另外,短信可承载的信息量有限制,无法一次传递完整的应
用数据;再加上,OTA技术的可靠性不佳,无法准确获知其消息是否完全通达,同时安全性方
面有比较多漏洞。
[0092] 本发明中,OTI集群20及其OTI模块21中的OTI,是Over The Internet缩写,这是发明人模拟OTA的概念,OTI集群20及其OTI模块21所提供的OTI服务,是指使用Internet网络,
即一般意义上的TCP层之上的应用层作为消息传输的主要通道,目前支持的应用层协议有
HTTP/HTTPS和BIP等。OTI服务是消息传递的核心服务,负责消息转义、分发、存储以及满足
消息管理需求,OTI不关注消息的具体内容,而是重点关注“连接”与“传递”。
[0093] 因此一些实施例中,OTI模块21用于接收基于网络应用层协议所发送过来的消息,再基于网络应用层协议将相应消息发送出去。一些实施例中,OTI模块21能够用于接收基于
网络应用层协议所发送过来的消息,例如OTI模块21可以接收外界的消息请求,包括由MQTT
代理模块11发送来的消息。一些实施例中,OTI模块21还可以内置有消息解析器,当OTI模块
21接收基于网络应用层协议所发送过来的消息消息,消息解析器则解析基于网络应用层协
议所发送过来的消息。一些实施例中,OTI模块21内置的消息解析器支持解析各类网络应用
层协议,例如HTTP/HTTPS、BIP等,并将其为内部定义的信息或者说消息。
[0094] OTI模块21接着对接收到的消息进行处理。例如消息类型分为同步消息和异步消息两种。一些实施例中,在接收基于网络应用层协议的同步消息时,OTI模块21保持连接,以
接收同步消息;换句话说,此时OTI模块21与请求方一直保持连接,用以实时处理事务,直至
处理结束才将连接断开。一些实施例中,在接收基于网络应用层协议的异步消息时,OTI模
块21将所接收到的异常消息放入消息队列中,然后再将所述消息队列中的消息分发出去;
可以看到,与同步消息的接收不同,异步消息不需要和请求方一直保持连接,在接收异步消
息时,可以将将消息放入消息队列中,后续再分配至相应的接收方。
[0095] 上文所涉及的HTTP/HTTPS,其中HTTP是Hypertext Transfer Protocol的缩写,指超文本传输协议;这是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万
维网的数据通信的基础。HTTPS则是在HTTP的基础上添加TLS安全协议。TLS是Transport 
Layer Security的缩写,是指传输层安全;这是一种安全协议,其前身为安全套接层(SSL,
Secure Sockets Layer),目的是为互联网通信提供安全及数据完整性保障;该协议在浏览
器、电子邮件、即时通信、网络传真等应用程序中被广泛使用,目前已成为互联网上保密通
信的工业标准。
[0096] 上文所涉及的BIP是Bearer Independent Protocol的缩写,它是一种提供终端SIM卡与网络数据交互的独立传输协议。
[0097] 以上是关于OTI集群20及其OTI模块21的一些说明。
[0098] 本发明中OTI模块21,负责接入消息缓存与持久性存储,多个节点的OTI模块21可以构成OTI集群20,OTI集群20和MQTT代理集群10构成了本发明的物联设备的服务集群的主
要部分,服务集群可分布于不同的区域。本发明一些实施例中,OTI模块21能够提供Ticket
功能,提供可用的MQTT代理集群10与节点信息,目的在于使物联设备可快速高效地与连接,
也扩展了连接的冗余性。
[0099] 本发明一些实施例中,同一服务集群内的设备数据采用分布式缓存40和数据库50实现同步机制。本发明一些实施例中,不同服务集群间的设备数据同步采用“问询”(Query)
与“流言”(Gossip)机制。
[0100] 容器管理系统的英文是Container Management System,其缩写为CMS。本发明中服务集群的容器管理系统30,将物联设备抽象成“容器”的概念并管理其生命周期,是配合
OTI工作的一个附属服务。
[0101] 本发明中,物联设备这类设备终端上可以安装SmartClient代理软件,其主要具备MQTT客户端代理SDK、消息中间件处理节点(Broker)的信息获取模块、消息中间件处理节点
(Broker)的选择模块;具体地:
[0102] (1)MQTT客户端代理SDK,负责与MQTT代理模块11保存长连接,监听接收所有订阅主题所发布的消息,将消息转换之后分发给相应的内部模块。其中SDK的英文为Software 
Development Kit,其是用于为特定的软件包、软件框架、硬件平台和操作系统等创建应用
软件的开发工具的集合。
[0103] (2)消息中间件处理节点(Broker)的信息获取模块,访问OTI模块21的Ticket功能,获取MQTT代理模块11最新的集群与节点信息;
[0104] (3)消息中间件处理节点(Broker)的选择模块,根据一定策略从获取到的MQTT代理模块11中选择一个最优节点去连接。
[0105] 本发明的服务集群,其内部数据同步和外部服务集群之间的同步,采用了不同的机制,下面具体说明。
[0106] 本发明的服务集群内数据同步机制,不论是MQTT代理集群10还是OTI集群20,数据同步依靠的是各自共享的分布式缓存40和数据库50;分布式缓存的英文为Distributed 
cache,其采用主从复制同步;本文中的数据库为Elastic database,其采用主从或多主模
式。
[0107] 请参照图3,为服务集群之间的连接关系图。图中SC‑A、SC‑B、SC‑C、SC‑D、SC‑E分别表示服务集群A、服务集群B、服务集群C、服务集群D、服务集群E。本发明的服务集群之间的
设备数据同步,采用“问询”(Query)与“流言”(Gossip)机制,该动作适用于物联设备跨服务
集群时触发,同步的数据量一般较小,且发生频次较低。
[0108] 不妨以两个服务集群A和服务集群B为例,说明服务集群之间的数据同步机制。
[0109] (1)假设一物联设备1从服务集群A的服务区域移动到服务集群B的服务区域。物联设备1的SmartClient能够根据地域与网络条件判断,优先连接服务集群B内的某个MQTT代
理模块11并以自身DeviceID注册。
[0110] (2)服务集群B的DeviceID将设备注册信息(携带上一次连接的集群标识,即A‑tag)发送给服务集群B内某个OTI模块21。
[0111] (3)服务集群B的OTI模块21发现当前集群B‑tag与上一次连接集群A‑tag不同,该条件触发向其他服务集群问询该物联设备1,如果相同则不触发问询动作。
[0112] (4)服务集群A的OTI模块21具有该物联设备1的设备信息,因此会向服务集群B的问询节点(即服务集群B中发出问询动作的OTI模块21)返回此信息,信息中包含“版本号”
(例如可以是一数字,其初始值为0)。
[0113] (5)服务集群B的OTI模块21收到所有的问询应答,如果问询应答有效(即找到物联设备1的设备信息),则会相比所有获取到的以及本地已有的设备信息版本号,选择最大的
版本号并更新(例如给版本号的数字加1)。
[0114] (6)服务集群B的OTI模块21再使用“流言”(Gossip)协议向其余服务集群同步物联设备1的带最新版本号的设备信息。
[0115] 以上就是服务集群,其内部数据同步机制和外部服务集群之间的同步机制的一些说明。
[0116] 因此,本发明的服务集群内部的同步机制,总结如下:
[0117] (1)当一物联设备初次注册时,该初次注册的物联设备所在服务区域的服务集群的MQTT代理模块11,与所述初次注册的物联设备建立连接,接收该物联设备使用自身设备
ID的注册。一些实施例中该初次注册的物联设备所在服务区域的服务集群的容器管理系统
30,在该物联设备进行初次注册前,已将所述初次注册的物联设备的设备ID进行了初始化
导入。
[0118] 一些实施例中,在MQTT代理模块11接收到物联设备的注册前,物联设备所在服务区域的服务集群的OTI模块21会接收到物联设备的Ticket请求;当接收到物联设备的
Ticket请求后,OTI模块21向物联设备返回Ticket,该Ticket包含当前服务区域可用的服务
集群列表,在服务集群列表中各服务集群都包含有其自各的MQTT代理模块11的访问地址,
以使得物联设备根据自身的网络状况和地理位置,选取其中一个MQTT代理模块11进行连
接。
[0119] (2)所述初次注册的物联设备所在服务区域的服务集群的MQTT代理模块11向同一服务集群中的一OTI模块21发送注册信息,其中所述注册信息包含有物联设备的设备ID。
[0120] (3)接收注册信息的OTI模块21向同一服务集群中的容器管理系统30请求验证所述初次注册的物联设备的合法性。
[0121] (4)当同一服务集群中的容器管理系统30根据设备ID验证所述初次注册的物联设备合法时,所述接收注册信息的OTI模块21将注册事件保存至同一服务集群的分布式缓存
40和数据库50。
[0122] (5)接收所述初次注册的物联设备的注册的MQTT代理模块11,接收该物联设备发布的设备信息事件。
[0123] (6)接收设备信息事件的MQTT代理模块11,向同一服务集群中的OTI模块21发送携带有设备ID的设备信息事件。
[0124] (7)接收设备信息事件的OTI模块21向同一服务集群中的容器管理系统30请求验证所述初次注册的物联设备的合法性;当合法时,则该OTI模块21将设备信息事件保存至同
一服务集群的分布式缓存40和数据库50。
[0125] 本发明的服务集群之间的同步机制,总结如下:
[0126] (1)当一物联设备从其他服务集群的服务区域移动到当前服务集群的服务区域时,当前服务集群的MQTT代理模块11与所述物联设备建立连接,接收所述物联设备使用自
身设备ID并携带该物联设备最后连接的服务集群的标识的注册。
[0127] 一些实施例中,在MQTT代理模块11接收到物联设备的注册前,物联设备所在服务区域的服务集群的OTI模块21会接收到物联设备的Ticket请求;当接收到物联设备的
Ticket请求后,OTI模块21向物联设备返回Ticket,该Ticket包含当前服务区域可用的服务
集群列表,在服务集群列表中各服务集群都包含有其自各的MQTT代理模块11的访问地址,
以使得物联设备根据自身的网络状况和地理位置,选取其中一个MQTT代理模块11进行连
接。
[0128] (2)当前服务集群的MQTT代理模块11向当前服务集群中的OTI模块21,发送所述物联设备的注册事件。
[0129] (3)当判断所述物联设备的服务集群的标识不是当前服务集群的标识,并向当前服务集群的容器管理系统30查询确认无所述物联设备的设备信息时,则当前服务集群的
OTI模块21向其他服务集群发起问询动作。
[0130] (4)当前服务集群的OTI模块21接收所有的问询应答;其中具有所述物联设备的设备信息的其他服务集群会响应于所述问询动作返回所述物联设备的设备信息,所述设备信
息包含有版本号。
[0131] (5)当有问询应答有效,则当前服务集群的OTI模块21比较问询应答中返回的设备信息所携带的版本号和本地已有的设备信息的版本号,选择其中最大的版本号并更新该版
本号。
[0132] (6)当前服务集群的OTI模块21,将所述物联设备更新版本号后的设备信息保存至当前服务集群的容器管理系统30,以及将所述物联设备的注册事件保存至当前服务集群的
分布式缓存40和数据库50。
[0133] (7)当前服务集群的OTI模块21使用流言协议向其他服务集群发送所述物联设备带有新版本号的设备信息,以进行同步。一些实施例中,在当前服务集群的OTI模块21使用
流言协议向其他服务集群发送所述物联设备带有新版本号的设备信息后,任意一接收到该
设备信息的服务集群都会将该设备信息与自身保存的设备信息进行比较,若自身保存的设
备信息中的版本号早于接收到的设备信息中的版本号,则使用接收到的设备信息中的版本
号更新自身设备信息中的版本号,反之,则丢弃所接收到的设备信息。
[0134] 以上是本发明一些实施例中,物联设备的服务集群的说明。本发明一些实施例中还公开了一种分布式物联设备跨区域数据一致性的方法,该方法可以应用于本文任一实施
例所述的服务集群,下面具体说明。
[0135] 请参照图4,一些实施例中,分布式物联设备跨区域数据一致性的方法包括以下步骤:
[0136] 当一物联设备从一个服务集群的服务区域移动到另一个服务集群的服务区域时,会进行步骤100:当前服务集群的MQTT代理模块与所述物联设备建立连接,接收所述物联设
备使用自身设备ID并携带该物联设备最后连接的服务集群的标识的注册。
[0137] 一实施例中,在MQTT代理模块接收到物联设备的注册前,物联设备所在服务区域的服务集群的OTI模块会接收到物联设备的Ticket请求。当接收到物联设备的Ticket请求
后,OTI模块向物联设备返回Ticket,该Ticket包含当前服务区域可用的服务集群列表,在
服务集群列表中各服务集群都包含有其自各的MQTT代理模块的访问地址,以使得物联设备
根据自身的网络状况和地理位置,选取其中一个MQTT代理模块进行连接。
[0138] 步骤110:当前服务集群的MQTT代理模块向当前服务集群中的OTI模块,发送所述物联设备的注册事件。
[0139] 步骤120:当判断所述物联设备的服务集群的标识不是当前服务集群的标识,并向当前服务集群的容器管理系统查询确认无所述物联设备的设备信息时,则当前服务集群的
OTI模块向其他服务集群发起问询动作。
[0140] 步骤130:当前服务集群的OTI模块接收所有的问询应答;其中具有所述物联设备的设备信息的其他服务集群会响应于所述问询动作返回所述物联设备的设备信息,所述设
备信息包含有版本号;
[0141] 步骤140:当有问询应答有效,则当前服务集群的OTI模块比较问询应答中返回的设备信息所携带的版本号和本地已有的设备信息的版本号,选择其中最大的版本号并更新
该版本号;
[0142] 步骤150:当前服务集群的OTI模块,将所述物联设备更新版本号后的设备信息保存至当前服务集群的容器管理系统,以及将所述物联设备的注册事件保存至当前服务集群
的分布式缓存和数据库;
[0143] 步骤160:当前服务集群的OTI模块使用流言协议向其他服务集群发送所述物联设备带有新版本号的设备信息,以进行同步。一具体实施例中,在当前服务集群的OTI模块使
用流言协议向其他服务集群发送所述物联设备带有新版本号的设备信息后,任意一接收到
该设备信息的服务集群都会将该设备信息与自身保存的设备信息进行比较,若自身保存的
设备信息中的版本号早于接收到的设备信息中的版本号,则使用接收到的设备信息中的版
本号更新自身设备信息中的版本号,反之,则丢弃所接收到的设备信息。
[0144] 请参照图5,一些实施例中,分布式物联设备跨区域数据一致性的方法包括以下步骤:
[0145] 当一物联设备初次注册时,会进行步骤200:该初次注册的物联设备所在服务区域的服务集群的MQTT代理模块,与所述初次注册的物联设备建立连接,接收该物联设备使用
自身设备ID的注册。
[0146] 一实施例中,该初次注册的物联设备所在服务区域的服务集群的容器管理系统,在该物联设备进行初次注册前,已将所述初次注册的物联设备的设备ID进行了初始化导
入。
[0147] 一实施例中,在MQTT代理模块接收到物联设备的注册前,物联设备所在服务区域的服务集群的OTI模块会接收到物联设备的Ticket请求。当接收到物联设备的Ticket请求
后,OTI模块向物联设备返回Ticket,该Ticket包含当前服务区域可用的服务集群列表,在
服务集群列表中各服务集群都包含有其自各的MQTT代理模块的访问地址,以使得物联设备
根据自身的网络状况和地理位置,选取其中一个MQTT代理模块进行连接。
[0148] 步骤210:所述初次注册的物联设备所在服务区域的服务集群的MQTT代理模块向同一服务集群中的一OTI模块发送注册信息,其中所述注册信息包含有物联设备的设备ID。
[0149] 步骤220:接收注册信息的OTI模块向同一服务集群中的容器管理系统请求验证所述初次注册的物联设备的合法性;
[0150] 步骤230:当同一服务集群中的容器管理系统根据设备ID验证所述初次注册的物联设备合法时,所述接收注册信息的OTI模块将注册事件保存至同一服务集群的分布式缓
存和数据库;
[0151] 步骤240:接收所述初次注册的物联设备的注册的MQTT代理模块,接收该物联设备发布的设备信息事件;
[0152] 步骤250:接收设备信息事件的MQTT代理模块,向同一服务集群中的OTI模块发送携带有设备ID的设备信息事件;
[0153] 步骤260:接收设备信息事件的OTI模块向同一服务集群中的容器管理系统请求验证所述初次注册的物联设备的合法性;当合法时,则进行步骤270:该OTI模块将设备信息事
件保存至同一服务集群的分布式缓存和数据库。
[0154] 以上就是本申请一些实施例中的分布式物联设备跨区域数据一致性的方法的说明。
[0155] 本发明一些例子中提出的方案,可以使物联网设备可最大限度与服务器维持连接稳定并保持其数据的一致性。
[0156] 本发明一些例子中,冗余的云端服务器集群和节点,可提供给物联设备多个备份连接,一方面达到局部最优效果,另一方面大概率能保证连接的稳定性与可用性。
[0157] 本发明一些例子中,提供的轻量级的数据同步机制解决物联设备跨区域问题,且接入的是最近的网络,在管理上突破区域隔离,提升总体效率。
[0158] 最后再举两个例子说明。
[0159] 请参照图6,某物联设备例如物联设备1初次向某区域内的服务集群注册,其中:该服务集群所附属的CMS服务已将该设备的基本信息(DeviceID)进行了初始化导入。
[0160] 1、物联设备1根据已知的区域信息向该区域内某个服务集群的OTI模块(不妨记为OTI服务节点One)请求Ticket;
[0161] 2、OTI服务节点One向物联设备1返回Ticket,Ticket的内容包含该区域内可用的服务集群列表,假设当前返回的服务集群列表中有且只有一个集群信息内容,内容包含
MQTT代理模块的访问地址(例如IP或域名);
[0162] 3、物联设备1根据当前自身的网络状况与地理位置,选取一个连接上可达到最优的MQTT集群中的某个节点;
[0163] 4、物联设备1使用自身的DeviceID向已选取的MQTT代理模块注册,MQTT代理模块立即返回OK;
[0164] 5、MQTT代理模块异步地向OTI服务节点One(假设OTI服务节点One和上述接收注册的MQTT代理模块处于同一个服务集群内)发送一个内含DeviceID的注册(REGISTER)信息,
OTI服务节点One即时返回OK;
[0165] 6、OTI服务节点One向CMS服务请求验证设备合法性;
[0166] 7、CMS服务验证DeviceID是否合法;
[0167] 8、由于服务集群所附属的CMS服务已将该设备的基本信息(DeviceID)进行了初始化导入,因此CMS服务返回成功;
[0168] 9、OTI服务节点One根据DeviceID将REGISTER事件保存至分布式缓存与数据库;
[0169] 10、物联设备1向MQTT代理模块发布INFO事件,MQTT代理模块立即返回OK;
[0170] 11、MQTT代理模块异步地向OTI服务节点Two(假设OTI服务节点One和该MQTT代理模块处于同一服务集群内,此时请求被分流至同一服务集群内的OTI服务节点Two)发送设
备的INFO事件(也携带DeviceID),OTI服务节点Two即时返回OK;
[0171] 12、OTI服务节点Two向CMS服务请求验证设备合法性;
[0172] 13、CMS服务验证DeviceID是否合法;
[0173] 14、由于服务集群所附属的CMS服务已将该设备的基本信息(DeviceID)进行了初始化导入,因此CMS服务返回成功;
[0174] 15、OTI服务节点Two根据DeviceID将INFO事件保存至同一分布式缓存与数据库;此时OTI服务节点One与OTI服务节点Two由于共享分布式缓存与数据库,看到的是同样物联
设备按时间顺序上报的事件;
[0175] 至此,在同一服务集群内,物联设备1在获知可连接的MQTT代理模块的情况下可将无需关注数据的一致性,所有的数据同步交由云端服务来处理。
[0176] 请参照图7,一物联设备1已在服务集群A注册,目前从服务集群A(记为SC‑A)转移到服务集群B(记为SC‑B)。
[0177] 1、物联设备1在服务集群B服务区域内,则默认向服务集群B中某节点的OTI模块(不妨记为OTI服务节点B)请求Ticket;
[0178] 2、OTI服务节点B向物联设备1返回Ticket,Ticket的内容包含该区域内可用的服务集群列表,假设当前服务区域返回的服务集群列表中有且只有一个集群信息内容,内容
包含服务集群B中的MQTT代理模块的访问地址(例如IP或域名);
[0179] 3、物联设备1根据当前自身的网络状况与地理位置,选取一个连接上可达到最优的MQTT集群中的某个节点(不妨记为MQTT代理模块B);
[0180] 4、物联设备1使用自身的DeviceID向已选取的MQTT代理模块B注册(携带tag‑A标签),MQTT代理模块B立即返回OK;
[0181] 5、MQTT代理模块B异步地向服务集群B中的例如OTI服务节点B发送REGISTER事件,同时携带tag‑A标签,OTI服务节点B即时返回OK;
[0182] 6、OTI服务节点B在检查物联设备1的设备合法性的时候发现有tag‑A,与本集群的tag‑B不符,同时在向本集群CMS查询确认无此设备后,决定向其他服务集群发起问询动作;
如果tag与本集群的tag‑B相符,则直接执行11之后的步骤;
[0183] 7、OTI服务节点B向服务集群A中的OTI模块(不妨记为OTI服务节点A)问询是否有DeviceID为标识的设备;
[0184] 8、OTI服务节点A问询是否有DeviceID为标识的设备查询到自身服务集群的CMS有该设备信息,向OTI服务节点B返回DeviceInfo(内含版本号);
[0185] 9、OTI服务节点B向服务集群C中的OTI模块(不妨记为OTI服务节点C)问询是否有DeviceID为标识的设备;
[0186] 10、OTI服务节点C查询到自身服务集群的CMS没有该设备信息,向OTI服务节点B返回NotFound;
[0187] 11、OTI服务节点B将所有收集到的问询结果以及自身所保存的设备信息比较,过滤出版本号最大的DeviceInfo,将该版本号加1,将设备信息保存至自身服务集群的CMS;将
REGISTER保存至自身服务集群的缓存与数据库;
[0188] 12、通过“流言”协议(Gossip Protocol)将最新的DeviceInfo传播至其他服务集群(由相应服务集群内的OTI模块负责接收);接收到DeviceInfo的服务集群与自身保存的
DeviceInfo比较,若小于当前版本号则丢弃该条消息,若大于则更新。通过“流言”协议可使
得所有“服务集群”内的DeviceInfo版本号都能得到最终一致。
[0189] 至此,物联设备1移动到服务集群B的所在区域,完成了从服务集群A同步信息的动作,使得该物联设备1可以在服务集群B合法地使用;反之,当物联设备1重新移回到服务集
群A或又去到其他服务区域,同样可以同步到最新的设备信息。
[0190] 后续物联设备1如果不移动区域,则长期只与MQTT代理模块保持连接。
[0191] 本文参照了各种示范实施例进行说明。然而,本领域的技术人员将认识到,在不脱离本文范围的情况下,可以对示范性实施例做出改变和修正。例如,各种操作步骤以及用于
执行操作步骤的组件,可以根据特定的应用或考虑与系统的操作相关联的任何数量的成本
函数以不同的方式实现(例如一个或多个步骤可以被删除、修改或结合到其他步骤中)。
[0192] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。另外,如本领域技术人员所理解的,本文的原理可以反映在计算机可读存储介质上的计
算机程序产品中,该可读存储介质预装有计算机可读程序代码。任何有形的、非暂时性的计
算机可读存储介质皆可被使用,包括磁存储设备(硬盘、软盘等)、光学存储设备(CD至ROM、
DVD、Blu Ray盘等)、闪存和/或诸如此类。这些计算机程序指令可被加载到通用计算机、专
用计算机或其他可编程数据处理设备上以形成机器,使得这些在计算机上或其他可编程数
据处理装置上执行的指令可以生成实现指定的功能的装置。这些计算机程序指令也可以存
储在计算机可读存储器中,该计算机可读存储器可以指示计算机或其他可编程数据处理设
备以特定的方式运行,这样存储在计算机可读存储器中的指令就可以形成一件制造品,包
括实现指定功能的实现装置。计算机程序指令也可以加载到计算机或其他可编程数据处理
设备上,从而在计算机或其他可编程设备上执行一系列操作步骤以产生一个计算机实现的
进程,使得在计算机或其他可编程设备上执行的指令可以提供用于实现指定功能的步骤。
[0193] 虽然在各种实施例中已经示出了本文的原理,但是许多特别适用于特定环境和操作要求的结构、布置、比例、元件、材料和部件的修改可以在不脱离本披露的原则和范围内
使用。以上修改和其他改变或修正将被包含在本文的范围之内。
[0194] 前述具体说明已参照各种实施例进行了描述。然而,本领域技术人员将认识到,可以在不脱离本披露的范围的情况下进行各种修正和改变。因此,对于本披露的考虑将是说
明性的而非限制性的意义上的,并且所有这些修改都将被包含在其范围内。同样,有关于各
种实施例的优点、其他优点和问题的解决方案已如上所述。然而,益处、优点、问题的解决方
案以及任何能产生这些的要素,或使其变得更明确的解决方案都不应被解释为关键的、必
需的或必要的。本文中所用的术语“包括”和其任何其他变体,皆属于非排他性包含,这样包
括要素列表的过程、方法、文章或设备不仅包括这些要素,还包括未明确列出的或不属于该
过程、方法、系统、文章或设备的其他要素。此外,本文中所使用的术语“耦合”和其任何其他
变体都是指物理连接、电连接、磁连接、光连接、通信连接、功能连接和/或任何其他连接。
[0195] 具有本领域技术的人将认识到,在不脱离本发明的基本原理的情况下,可以对上述实施例的细节进行许多改变。因此,本发明的范围应仅由权利要求确定。