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

请求处理方法、装置、设备及计算机可读存储介质与流程

2022-05-17 22:19:53 来源:中国专利 TAG:


1.本技术涉及通信技术,尤其涉及一种请求处理方法、装置、设备及计算机可读存储介质。


背景技术:

2.物联网(the internet of things)是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、连接、互动的物体或过程,采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网将现实世界数位化,拉近分散的信息,整合物与物的数位信息,应用十分广泛,其应用领域主要包括以下方面:运输和物流领域、工业制造、健康医疗、智能环境(家庭、办公、工厂)领域、个人和社会领域等,具有十分广阔的市场和应用场景。
3.在物联网中的集群模式下,数以百万计的终端连接到不同的服务节点上,终端可以在任意服务节点上发布消息和接收消息。一个消息的发布后,需要做到按需推送到对应的订阅终端,这就需要解决消息在不同服务节点间的路由问题。即需要根据每个终端的订阅关系找到需要推送的终端,然后转发消息到终端所连接的服务节点。
4.每当任意一个服务节点收到终端的连接/关闭连接/订阅/取消订阅请求后会广播到其他服务节点,因此需要在每个服务节点都保存当前局域网下所有终端的订阅关系数据。在一个服务节点对应的终端发出状态变更请求后,会采用广播的方式通过该服务节点向其他所有服务节点发送状态变更消息,不仅不需要接受状态变更消息的服务节点也会收到状态变更消息,状态变更消息的安全性得不到保障,而且会造成信息泛滥的问题,也会浪费大量带宽。


技术实现要素:

5.本技术实施例提供一种请求处理方法、装置及计算机可读存储介质。
6.本技术实施例的技术方案是这样实现的:
7.本技术实施例提供一种方法,包括:
8.一种请求处理方法,,应用于服务层,所述服务层包括至少一个服务节点,所述方法包括:接收终端传输的功能请求;发送与所述功能请求对应的查询请求至持久层;接收所述持久层返回的查询结果;所述查询结果是所述持久层根据持久化数据生成的;根据所述查询结果,执行与所述功能请求对应的功能操作。
9.本技术实施例提供一种装置,包括:
10.存储器,用于存储可执行指令;
11.处理器,用于执行所述存储器中存储的可执行指令时,实现本技术实施例提供的方法。
12.本技术实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理
器执行时,实现本技术实施例提供的方法。
13.本技术实施例具有以下有益效果:
14.本技术实施例中服务层通过将功能请求需要的订阅关系和/或连接关系存储在持久层的持久化数据中,在服务节点接收到终端的功能请求,需要更新订阅关系和/或连接关系时,只需发送查询请求至持久层即可完成订阅关系和/或连接关系的更新,相比于现有技术中广播形式的更新订阅关系和/或连接关系,本技术实施例无需将该订阅关系和/或连接关系同步至服务层中其他的服务节点中,可以提升订阅请求处理效率,节省了带宽的同时,提升了服务层中各服务节点的服务性能。
附图说明
15.图1是本技术实施例提供的请求处理系统架构的一个可选的结构示意图;
16.图2是本技术实施例提供的请求处理方法的一个可选的流程示意图;
17.图3是本技术实施例提供的请求处理方法的一个可选的流程示意图;
18.图4是本技术实施例提供的请求处理方法的一个可选的流程示意图;
19.图5是本技术实施例提供的请求处理方法的一个可选的流程示意图;
20.图6是本技术实施例提供的请求处理方法的一个可选的流程示意图;
21.图7是本技术实施例提供的请求处理方法的一个可选的流程示意图;
22.图8是本技术实施例提供的请求处理方法的一个可选的流程示意图;
23.图9是本技术实施例提供的请求处理方法的一个可选的流程示意图;
24.图10是本技术实施例提供的请求处理方法的一个可选的流程示意图;
25.图11是本技术实施例提供的请求处理方法的一个可选的流程示意图;
26.图12是本技术实施例提供的请求处理方法的一个可选的流程示意图;
27.图13是本技术实施例提供的请求处理方法的一个可选的流程示意图;
28.图14是本技术实施例提供的请求处理方法的一个可选的流程示意图;
29.图15是本技术实施例提供的请求处理方法的一个可选的流程示意图;
30.图16是本技术实施例提供的请求处理方法的一个可选的流程示意图;
31.图17是本技术实施例提供的请求处理方法的一个可选的流程示意图;
32.图18是本技术实施例提供的请求处理方法的一个可选的流程示意图;
33.图19是本技术实施例提供的请求处理方法的一个可选的流程示意图;
34.图20是本技术实施例提供的请求处理方法的一个可选的流程示意图;
35.图21是本技术实施例提供的请求处理方法的一个可选的流程示意图;
36.图22是本技术实施例提供的请求处理方法的一个可选的流程示意图;
37.图23是本技术实施例提供的请求处理方法的一个可选的流程示意图;
38.图24是本技术实施例提供的一种的设计总体框架示意图;
39.图25a是本技术实施例提供的一种持久化节点故障宕机的示意图;
40.图25b是本技术实施例提供的一种服务层与持久化层的交互示意图;
41.图26是本技术实施例提供的服务层处理connect报文时与持久层的交互流程示意图;
42.图27是本技术实施例提供的服务层处理subscribe报文时与持久层的交互流程示
意图;
43.图28是本技术实施例提供的服务层处理publish报文时与持久层的交互流程示意图;
44.图29是本技术实施例提供的服务层处理unsubscribe报文时与持久层的交互流程示意图;
45.图30是本技术实施例提供的服务层处理disconnect报文时与持久层的交互流程示意图;
46.图31是本技术实施例提供的broker处理物联网设备终端异常断开连接时与持久层的交互流程示意图;
47.图32为本技术实施例提供的一种请求处理装置的组成结构示意图;
48.图33为本技术实施例提供的一种请求处理装置的组成结构示意图;
49.图34为本技术实施例提供的一种设备的硬件实体示意图。
具体实施方式
50.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,所描述的实施例不应视为对本技术的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
51.参见图1,图1是本技术实施例提供的请求处理系统100的一个可选的架构示意图,为实现支撑一个请求处理应用,终端200(示例性示出了终端200-1、终端200-2和终端200-3)连接服务层300。服务层300中包括至少一个服务节点(示例性示出了服务节点300-1、服务节点300-2和服务节点300-3),其中,终端200可以通过与至少一个服务节点建立连接,以与服务层300建立连接。服务层中每一服务节点均连接持久层400,其中,持久层400中包括一个主持久节点和与该主持久节点连接的至少一个备份持久节点(示例性示出了主持久节点400-1、备份持久节点400-2和备份持久节点400-3)。服务层300中每一服务节点通过与主持久节点400-1建立连接,以与持久层400建立连接。
52.其中,服务层用于接收终端传输的功能请求,并发送与功能请求对应的查询请求至持久层;持久层根据持久化数据生成查询结果,并发送查询结果至服务层;服务层还用于根据查询结果,执行与功能请求对应的功能操作。
53.参见图2,图2是本技术实施例提供的请求处理方法的一个可选的流程示意图,将结合图2示出的步骤进行说明。
54.在步骤202中,服务层接收终端传输的功能请求。
55.在一些实施例中,服务层中包括至少一个服务节点,其中,每一服务节点可以与至少一个终端建立连接。其中,服务节点与终端之间的通信协议可以为超文本传输协议(http)、websocket、可扩展通讯和表示协议(xmpp,extensible messaging and presence protocol)、coap协议(coap,the constrained application protocol)、消息队列遥测传输(mqtt,message queuing telemetry transport)等物联网通信协议中的一种,本技术对此不作限定,为了便于对本技术方案的理解,以下方案均以mqtt协议为例进行描述。
56.在本实施例中,以mqtt协议作为终端与服务层中任意一个服务节点之间的通信协议为例,终端可以向与其连接的服务节点发送连接请求、断开连接请求、订阅请求和取消订
阅请求等功能请求。
57.在本实施例中,终端可以与服务层中的一个服务节点建立通信连接,在该终端需要发送功能请求时,可以通过该通信连接向该服务节点发送功能请求。此时,该服务层可以通过与终端建立通信连接的服务节点实现接收终端传输的功能请求。
58.在步骤204中,服务层发送与功能请求对应的查询请求至持久层。
59.在步骤206中,服务层接收持久层返回的查询结果;查询结果是持久层根据持久化数据生成的。
60.在一些实施例中,请求处理系统中的各个终端的连接关系和订阅关系不保存于服务层的各个服务节点中,而是保存在持久层中。在服务层接收到终端发送的功能请求后,会根据该功能请求的请求类型,确定需要查询的数据,根据需要查询的数据发送对应的查询请求至持久层。以功能请求为发布请求为例,服务层中的服务节点p接收到终端的在目标主题的发布请求后,可以根据该请求的类型确定需要查询的数据包括订阅该目标主题的目标终端、目标终端的连接的目标服务节点和目标服务节点的状态,根据上述需要查询的数据发送对应的查询请求至持久层,持久层将查询到的数据返回至该服务节点p。
61.在一些实施例中,持久层根据该查询请求在持久化数据中进行查询操作,并将查询结果发送至与该终端连接的服务节点,服务层通过与该终端连接的服务节点接收持久层返回的查询结果。在上述以功能请求为发布请求为例的基础上,服务层会通过服务节点p接收到该查询结果。
62.在步骤208中,服务层根据查询结果,执行与功能请求对应的功能操作。
63.在一些实施例中,服务层接收到查询结果后,即接收到需要查询的数据后,会根据该查询结果执行该功能请求对应的功能操作。在上述以功能请求为发布请求为例的基础上,服务层在接收到订阅该目标主题的目标终端、目标终端的连接的目标服务节点和目标服务节点的状态后,会以此确定路由信息,根据该路由信息,发送与该发布请求对应的功能反馈至目标终端。
64.通过本技术实施例对于图2的上述示例性实施可知,本技术实施例中服务层通过将功能请求需要的订阅关系和/或连接关系存储在持久层的持久化数据中,在服务节点接收到终端的功能请求,需要更新订阅关系和/或连接关系时,只需发送查询请求至持久层即可完成订阅关系和/或连接关系的更新,相比于现有技术中广播形式的更新订阅关系和/或连接关系,本技术实施例无需将该订阅关系和/或连接关系同步至服务层中其他的服务节点中,可以提升订阅请求处理效率,节省了带宽的同时,提升了服务层中各服务节点的服务性能。
65.在一些实施例中,参见图3,图3是本技术实施例提供的请求处理方法的一个可选的流程示意图,基于图2,在步骤202之前,还包括步骤302至步骤304。
66.在步骤302中,每一服务节点按照预设频率发送心跳消息至持久层。
67.在一些实施例中,持久层中存储的持久化数据还包括服务层中每一服务节点的节点状态数据,其中,节点状态数据可以包括服务节点的节点网际互连协议地址(ip,internet protocol)和节点存活状态等。
68.在本实施例中,服务层中的每一服务节点按照预设频率发送心跳消息至持久层,心跳消息中可以携带服务节点的当前节点ip,持久层在接收到服务节点按照预设频率发送
的心跳消息后,可以在持久化数据中更新该服务节点的节点状态数据,即更新该服务节点的节点ip,并将节点存活状态设置为存活状态。持久层在预设的一段时间内未接收到服务节点发送的心跳消息的情况下,也可以在持久化数据中更新该服务节点的节点状态数据,即并将节点存活状态设置为故障状态。
69.在步骤304中,服务层接收持久层返回的心跳确认消息。
70.在本实施例中,服务层中每一服务节点接收持久层返回的与心跳消息对应的心跳确认消息。
71.通过本技术实施例对于图3的上述示例性实施可知,本技术实施例通过每一服务节点发送心跳消息至持久层,可以实时更新持久层中存储的持久化数据,即提高该持久化数据中每一服务节点的节点状态数据的准确性。同时,由于服务节点的节点状态数据存储于持久层中,在服务节点的节点状态发生改变时,通过心跳机制可以实时更新持久化数据中该服务节点的节点状态数据,相比于现有技术中广播形式的更新节点状态数据,本技术实施例无需将该节点状态数据同步至服务层中其他的服务节点中,节省了带宽的同时,提升了服务层中各服务节点的服务性能。
72.在一些实施例中,参见图4,图4是本技术实施例提供的请求处理方法的一个可选的流程示意图,基于图2,在步骤202之前,还包括步骤402至步骤404。
73.在步骤402中,每一服务节点按照预设频率发送节点状态请求至持久层。
74.在步骤404中,服务层接收持久层根据各服务节点的节点状态数据生成并返回的节点状态响应;节点状态响应包括至少一个服务节点中处于存活状态的服务节点的节点状态数据。
75.在一些实施例中,持久层中存储的持久化数据还包括服务层中每一服务节点的节点状态数据,其中,节点状态数据可以包括服务节点的节点ip和节点存活状态等。
76.在一些实施例中,服务层中的每一服务节点按照预设频率节点状态请求至持久层,该节点状态请求用于请求当前服务层中所有服务节点的节点状态数据。持久层在收到任意服务节点发送的节点状态请求后,会在持久化数据中遍历所有服务节点的节点状态数据,并确定其中处于存活状态的服务节点。持久层将所有处于存活状态的服务节点的节点状态数据通过节点状态响应发送至服务层的该任意服务节点。
77.需要说明的是,步骤402中的节点状态请求可以与图3中提供的心跳消息同时发送,也就是说,在服务节点按照预设频率发送节点状态请求时,不需要再次发送心跳消息,因为在服务节点按照预设频率发送节点状态请求时,已经表明该服务节点处于存活状态。对应地,步骤404中的节点状态响应可以与图3中提供的心跳确认消息同时接收,即持久层发送的节点状态响应已经可以表明持久层处于存活状态,不需要持久层再次发送心跳确认消息。
78.通过本技术实施例对于图4的上述示例性实施可知,本技术实施例通过每一服务节点发送节点状态请求至持久层,可以使得每一服务节点均可以获取到当前服务层中每一服务节点的节点状态数据。同时,由于服务节点的节点状态数据存储于持久层中,在服务节点的节点状态发生改变时,通过心跳机制可以实时更新持久化数据中该服务节点的节点状态数据,其他服务节点可以通过节点状态请求获取最新的所有服务节点的节点状态数据,相比于现有技术中广播形式的更新节点状态数据,本技术实施例无需将该节点状态数据同
步至服务层中其他的服务节点中,节省了带宽的同时,提升了服务层中各服务节点的服务性能。
79.在一些实施例中,参见图5,图5是本技术实施例提供的请求处理方法的一个可选的流程示意图,基于图2,在终端发送的功能请求为连接请求的情况下,图2示出的步骤202可以更新为步骤500,步骤204可以通过步骤502至步骤504实现,步骤206可以更新为步骤506,步骤208可以更新为步骤508,将结合图5示出的步骤进行说明。
80.在步骤500中,服务层接收终端传输的连接请求。
81.在一些实施例中,终端还会发送连接请求至服务层,其中,终端还未与该服务层中的任意一个服务节点建立通信连接,终端可以向其中任意一个服务节点发送连接请求,以请求连接至该服务节点。服务层可以通过该服务节点接收到该连接请求。
82.在步骤502中,服务层获取连接请求中携带的终端的连接关系和订阅关系。
83.在一些实施例中,该连接请求中可以携带该请求数据包的包标识符(packet identifier)、终端标识(client identifier)、清除会话(clean session)标识、遗嘱数据(will message)和连接关系。其中,连接关系中包括该终端需要连接的服务节点的节点标识;订阅关系包括该终端的清除会话标识和遗嘱数据。
84.在步骤504中,服务层发送携带连接关系和订阅关系的连接查询请求至持久层。
85.在一些实施例中,响应于接收到的连接请求,服务层会获取其中携带的终端的连接关系和订阅关系,该连接关系可以包括该终端标识与服务节点之间的对应关系,该订阅关系可以包括该终端的遗嘱数据。服务层会发送携带该终端的连接关系和订阅关系的连接查询请求至持久层。持久层在接收到该连接查询请求后,会在持久化数据中获取该终端的终端状态数据,并根据订阅查询请求中携带的该终端的连接关系和订阅关系更新该终端的终端状态数据。
86.在步骤506中,服务层接收持久层返回的连接查询结果;连接查询结果是持久层在持久化数据中查询和/或更新终端的连接关系和订阅关系时生成的。
87.在一些实施例中,持久层接收到该连接查询请求后,会获取连接查询请求中携带的该终端的连接关系和订阅关系,并通过该订阅查询请求中携带的该终端的连接关系和订阅关系更新存储至持久化数据中该终端的终端状态数据中。同时,持久层还会生成包括连接关系对应的连接关系存储结果和订阅关系对应的订阅关系存储结果的连接查询结果,并发送至服务层。服务层接收该连接查询结果。其中,对于连接关系,持久化层会将该连接关系更新至该终端的终端状态数据;对于订阅关系,即对于该终端的遗嘱数据,持久化层会将该遗嘱数据存储至该终端的终端状态数据中。
88.在步骤508中,服务层根据连接查询结果发送与连接请求对应的连接反馈至终端。
89.在一些实施例中,持久层接收到该连接查询结果后,会将其中的连接关系存储结果和订阅关系存储结果通过连接反馈的方式发送至终端。
90.举例来说,对于终端c1发送的连接请求,服务层通过与c1请求建立连接的服务节点p1接收该连接请求,并获取该连接请求中携带的c1的订阅关系(c1的清除会话标识和遗嘱数据)和连接关系(c1请求连接于p1);服务层通过p1发送携带c1的订阅关系和连接关系的连接查询请求至持久层,持久层获取c1的终端状态数据,即c1的历史连接关系和历史订阅关系,持久层可以利用连接请求中携带的c1连接关系(c1请求连接于p1)替换该历史连接
关系,实现c1连接关系的更新存储;持久层可以利用连接请求中携带的c1的订阅关系(c1的清除会话标识和遗嘱数据)替换该历史订阅关系,实现c1订阅关系的更新存储;持久层还可以将连接请求中携带的c1的订阅关系(c1的清除会话标识和遗嘱数据)新增至该历史订阅关系,实现c1订阅关系的保留存储。持久化层可以保存存储过程中的行为记录,并将该行为记录作为连接查询结果发送至服务层。该连接查询结果可以包括连接关系存储结果和订阅关系存储结果。服务层在接收到该连接查询结果后,会将其中的连接关系存储结果和订阅关系存储结果通过连接反馈的方式发送至终端c1。
91.通过本技术实施例对于图5的上述示例性实施可知,本技术实施例在接收到终端发送的连接请求后,可以及时更新持久层中该终端的终端状态数据,因此可以及时获取到连接请求中目标主题的发布消息。同时,由于该终端的终端状态数据存储于持久层中,在需要更新订阅关系和/或连接关系时,只需发送订阅查询请求至持久层即可完成终端状态数据的更新,相比于现有技术中广播形式的更新终端状态数据,本技术实施例无需将该终端状态数据同步至服务层中其他的服务节点中,可以提升连接请求处理效率,节省了带宽的同时,提升了服务层中各服务节点的服务性能。
92.在一些实施例中,参见图6,图6是本技术实施例提供的请求处理方法的一个可选的流程示意图,基于图5,在步骤500之后的任意步骤之间,还包括步骤602至步骤606,将结合图6示出的步骤进行说明。
93.在步骤602中,服务层获取连接请求中携带的终端的遗嘱数据。
94.在一些实施例中,在服务层接收到该连接请求后,会查询该连接请求中是否存在该终端的遗嘱数据。在该连接请求中携带遗嘱数据的情况下,服务层会获取该遗嘱数据。
95.在步骤604中,服务层发送携带遗嘱数据的遗嘱更新请求至持久层。
96.在步骤606中,在持久层根据遗嘱数据更新持久化数据并生成遗嘱更新结果的情况下,服务层接收持久层返回的遗嘱更新结果。
97.在一些实施例中,在持久层查询到该终端不存在历史遗嘱数据的情况下,会存储该遗嘱数据,在持久层查询到该终端存在历史遗嘱数据的情况下,利用该遗嘱数据更新替换该终端的历史遗嘱数据。同时,持久层会保存存储遗嘱数据过程中的行为记录,并将该行为记录作为遗嘱更新结果发送至服务层。服务层接收该遗嘱更新结果,该遗嘱更新结果可以用于表征遗嘱数据是否已经保存在持久化数据中,该遗嘱更新结果还可以用于表征遗嘱数据的更新方式。
98.通过本技术实施例对于图6的上述示例性实施可知,本技术实施例中服务层在接收到连接请求时,还会获取其中的遗嘱数据,并将该终端的遗嘱数据及时保存至持久层中,可以在该终端掉线时,及时发送最新的遗嘱数据至订阅该遗嘱数据的目标终端。同时,由于该终端的遗嘱数据存储于持久层中,在需要更新遗嘱数据时,只需发送遗嘱更新请求至持久层即可完成遗嘱数据的更新,相比于现有技术中广播形式的更新遗嘱数据,本技术实施例无需将该遗嘱数据同步至服务层中其他的服务节点中,可以提升订阅请求处理效率,节省了带宽的同时,提升了服务层中各服务节点的服务性能。
99.在一些实施例中,参见图7,图7是本技术实施例提供的请求处理方法的一个可选的流程示意图,基于上述实施例,所述方法还包括步骤702至步骤706,将结合图7示出的步骤进行说明。
100.在步骤702中,服务层接收终端发送的断开连接请求。
101.在一些实施例中,终端还会发送断开连接请求至服务层,其中,终端已经与该服务层中的一个服务节点建立通信连接,终端可以通过该通信连接发送断开连接请求至服务层。
102.在本实施例中,服务层可以通过服务节点接收到该断开连接请求,其中,该断开连接请求是连接于该服务节点的终端发送的。
103.在步骤704中,服务层发送与断开连接请求对应的遗嘱删除请求至持久层。
104.在一些实施例中,响应于接收到的断开连接请求,服务层会发送携带该终端的终端标识的遗嘱删除请求至持久层。持久层在接收到该遗嘱删除请求后,会在持久化数据中查询终端标识对应遗嘱数据,在查找到该遗嘱数据的情况下,删除该遗嘱数据,并生成删除结果,发送携带该删除结果的遗嘱删除结果至服务层。
105.在步骤706中,服务层接收持久层发送的遗嘱删除结果。
106.通过本技术实施例对于图7的上述示例性实施可知,本技术实施例在接收到终端发送的断开连接请求后,可以及时删除持久层中该终端的遗嘱数据。同时,由于该终端的遗嘱数据存储于持久层中,在需要删除遗嘱数据时,只需发送遗嘱删除请求至持久层即可完成遗嘱数据的删除,相比于现有技术中广播形式的删除遗嘱数据,本技术实施例无需将该遗嘱数据同步至服务层中其他的服务节点中,可以提升订阅请求处理效率,节省了带宽的同时,提升了服务层中各服务节点的服务性能。
107.在一些实施例中,参见图8,图8是本技术实施例提供的请求处理方法的一个可选的流程示意图,基于上述实施例,所述方法还包括步骤802至步骤804,将结合图8示出的步骤进行说明。
108.在步骤802中,在终端异常断开的情况下,服务层发送遗嘱查询请求至持久层。
109.在一些实施例中,上述终端异常断开的情况可以进一步包括:(1)服务层发现一个i/o错误或者网络错误;(2)终端没有按时发送心跳包;(3)终端没有在断开连接前发送断开连接请求(disconnect包);(4)终端因为协议错误而断开连接。
110.在步骤804中,服务层接收持久层返回的遗嘱查询结果。
111.在一些实施例中,持久层接收所述服务层在所述终端异常断开的情况下发送的遗嘱查询请求,持久层在所述持久化数据中查询该终端的遗嘱数据,生成遗嘱查询结果。该遗嘱查询结果用于表征持久化数据中是否存在该终端的遗嘱数据,在持久化数据中存在终端的遗嘱数据的情况下,遗嘱查询结果还携带终端的遗嘱数据。
112.通过本技术实施例对于图8的上述示例性实施可知,本技术实施例在终端异常断开的情况下,可以在持久层及时查询并获取对应的遗嘱查询结果。
113.在一些实施例中,参见图9,图9是本技术实施例提供的请求处理方法的一个可选的流程示意图,基于图8,在步骤804之后,还可以包括步骤902至步骤906,将结合图9示出的步骤进行说明。
114.在步骤902中,在遗嘱查询结果携带终端的遗嘱数据的情况下,服务层发送遗嘱订阅终端查询请求至持久层。
115.在一些实施例中,在步骤804之后,服务层在遗嘱查询结果查询到携带的该终端的遗嘱数据后,会发送遗嘱订阅终端查询请求至持久层,以获取订阅该遗嘱数据的遗嘱订阅
终端的终端状态数据和与每一遗嘱订阅终端连接的目标服务节点的节点状态数据。
116.在步骤904中,服务层接收持久层返回的遗嘱订阅终端查询结果;遗嘱订阅终端查询结果包括至少一个订阅遗嘱数据的遗嘱订阅终端的终端状态数据,和与每一遗嘱订阅终端连接的目标服务节点的节点状态数据。
117.在一些实施例中,持久层在接收服务层发送的遗嘱订阅终端查询请求后,在持久化数据中查询订阅遗嘱数据的至少一个遗嘱订阅终端,根据持久化数据中保存的各终端的终端状态数据可以获取到各遗嘱订阅终端的终端状态数据,根据各遗嘱订阅终端的连接关系,可以获取与每一遗嘱订阅终端连接的目标终端,结合持久化数据中保存的每一服务节点的节点状态数据,可以获取到与每一遗嘱订阅终端连接的目标服务节点的节点状态数据。发送携带至少一个订阅遗嘱数据的遗嘱订阅终端的终端状态数据和与每一遗嘱订阅终端连接的目标服务节点的节点状态数据的遗嘱订阅终端查询结果至服务层。
118.在步骤906中,服务层根据至少一个遗嘱订阅终端的终端状态数据和目标服务节点的节点状态数据,通过处于存活状态的目标服务节点发送遗嘱数据至至少一个遗嘱订阅终端。
119.在一些实施例中,服务层在接收到至少一个遗嘱订阅终端的终端状态数据和目标服务节点的节点状态数据后,通过至少一个目标服务节点中处于存活状态的目标服务节点发送遗嘱数据至所述至少一个遗嘱订阅终端。
120.通过本技术实施例对于图9的上述示例性实施可知,本技术实施例在遗嘱查询结果携带终端的遗嘱数据的情况下,可以在持久层中及时获取订阅该遗嘱数据的至少一个遗嘱订阅终端的终端状态数据和目标服务节点的节点状态数据,提升了请求处理效率。
121.在一些实施例中,参见图10,图10是本技术实施例提供的请求处理方法的一个可选的流程示意图,基于图2,在终端发送的功能请求为订阅请求的情况下,图2示出的步骤202可以更新为步骤1000,步骤204可以通过步骤1002至步骤1004实现,步骤206可以更新为步骤1006,步骤208可以更新为步骤1008,将结合图10示出的步骤进行说明。
122.在步骤1000中,服务层接收终端传输的订阅请求。
123.在一些实施例中,终端还会发送订阅请求至服务层,其中,终端已经与该服务层中的一个服务节点建立通信连接,终端可以通过该通信连接发送订阅请求至服务层。
124.在本实施例中,服务层可以通过服务节点接收到该订阅请求,其中,该订阅请求是连接于该服务节点的终端发送的。
125.在步骤1002中,服务层获取订阅请求中携带的终端的连接关系和订阅关系。
126.在一些实施例中,该订阅请求中可以携带该请求数据包的包标识符(packet identifier)、订阅关系和连接关系。其中,订阅关系中包括该终端需要订阅的至少一个目标主题,和与每一目标主题对应的服务质量级别(qos,quality of service level);连接关系中包括该终端当前连接的服务节点的节点标识。
127.在步骤1004中,服务层发送携带连接关系和订阅关系的订阅查询请求至持久层。
128.在一些实施例中,响应于接收到的订阅请求,服务层会发送携带该终端的连接关系和订阅关系的订阅查询请求至持久层。持久层在接收到该订阅查询请求后,会在持久化数据中获取该终端的终端状态数据,并根据订阅查询请求中携带的该终端的连接关系和订阅关系更新该终端的终端状态数据。
129.在步骤1006中,服务层接收持久层返回的订阅查询结果;订阅查询结果是持久层在持久化数据中存储终端的连接关系和订阅关系时生成的。
130.在一些实施例中,持久层接收到该订阅查询请求后,会获取订阅查询请求中携带的该终端的连接关系和订阅关系,并通过该订阅查询请求中携带的该终端的连接关系和订阅关系更新存储至持久化数据中该终端的终端状态数据中。同时,持久层还会生成包括连接关系对应的连接关系存储结果和订阅关系对应的订阅关系存储结果的订阅查询结果,并发送至服务层。服务层接收该订阅查询结果。
131.在一些实施例中,持久层还会根据该订阅查询请求中携带的订阅关系,查询与该订阅关系匹配的保留消息。在持久层查询到该订阅关系匹配的保留消息后,会通过该订阅查询结果中携带该保留消息,发送至服务层。对应地,在持久层查询到目标主题的保留消息的情况下,服务层接受到的订阅查询结果还携带保留消息。
132.在步骤1008中,服务层根据订阅查询结果发送与订阅请求对应的订阅反馈至终端。
133.在一些实施例中,持久层接收到该订阅查询结果后,会将其中的连接关系存储结果和订阅关系存储结果通过订阅反馈的方式发送至终端。
134.举例来说,对于终端c2发送的订阅请求,服务层通过与c2连接的服务节点p2接收该订阅请求,并获取该订阅请求中携带的c2的订阅关系(c2订阅t2主题)和连接关系(c2连接于p2);服务层通过p2发送携带c2的订阅关系和连接关系的订阅查询请求至持久层,持久层获取c2的终端状态数据,即c2的历史连接关系和历史订阅关系,持久层可以利用订阅请求中携带的c2连接关系(c2连接于p2)替换该历史连接关系,实现c2连接关系的更新存储;持久层可以利用订阅请求中携带的c2的订阅关系(c2订阅t2主题)替换该历史订阅关系,实现c2订阅关系的更新存储;持久层还可以将订阅请求中携带的c2的订阅关系(c2订阅t2主题)新增至该历史订阅关系,实现c2订阅关系的保留存储。持久化层可以保存存储过程中的行为记录,并将该行为记录作为订阅查询结果发送至服务层。该订阅查询结果可以包括连接关系存储结果和订阅关系存储结果。服务层在接收到该订阅查询结果后,会将其中的连接关系存储结果和订阅关系存储结果通过订阅反馈的方式发送至终端c2。
135.通过本技术实施例对于图10的上述示例性实施可知,本技术实施例在接收到终端发送的订阅请求后,可以及时更新持久层中该终端的终端状态数据,因此可以及时获取到订阅请求中目标主题的发布消息。同时,由于该终端的终端状态数据存储于持久层中,在需要更新订阅关系和/或连接关系时,只需发送订阅查询请求至持久层即可完成终端状态数据的更新,相比于现有技术中广播形式的更新终端状态数据,本技术实施例无需将该终端状态数据同步至服务层中其他的服务节点中,可以提升订阅请求处理效率,节省了带宽的同时,提升了服务层中各服务节点的服务性能。
136.在一些实施例中,参见图11,图11是本技术实施例提供的请求处理方法的一个可选的流程示意图,基于图2,在终端发送的功能请求为发布请求的情况下,图2示出的步骤202可以更新为步骤1100,步骤204可以通过步骤1102至步骤1104实现,步骤206可以更新为步骤1106,步骤208可以更新为步骤1108,将结合图11示出的步骤进行说明。
137.在步骤1100中,服务层接收终端传输的发布请求。
138.在一些实施例中,终端还会发送发布请求至服务层,其中,终端已经与该服务层中
的一个服务节点建立通信连接,终端可以通过该通信连接发送发布请求至服务层。
139.在本实施例中,服务层可以通过服务节点接收到该发布请求,其中,该发布请求是连接于该服务节点的终端发送的。
140.在步骤1102中,服务层获取发布请求中携带的目标主题。
141.在一些实施例中,该发布请求中可以携带该请求数据包的包标识符(packet identifier)、目标主题、目标主题对应的服务质量级别(qos,quality of service level)和有效载荷(payload)等,其中该有效载荷为发布请求中实际发布的内容,发送的有可能是图片、任何编码的文本、加密的数据。
142.在步骤1104中,服务层发送携带目标主题的发布查询请求至持久层。
143.在一些实施例中,响应于接收到的发布请求,服务层会发送携带目标主题的发布查询请求至持久层。持久层在接收到该发布查询请求后,会在持久化数据中查询订阅该目标主题的至少一个目标终端,获取该至少一个目标终端的终端状态数据,并根据该至少一个目标终端的终端状态数据终端的连接关系,获取与该至少一个目标终端连接的目标服务节点,进而可以获得每一目标服务节点的节点状态数据。
144.在步骤1106中,服务层接收持久层返回的发布查询结果;发布查询结果包括至少一个订阅目标主题的目标终端的终端状态数据,和与每一目标终端连接的目标服务节点的节点状态数据。
145.在一些实施例中,持久层接收到该发布查询请求后,会获取发布查询请求中携带的目标主题,并通过该目标主题在持久化数据中获取上述至少一个目标终端的终端状态数据和至少一个目标服务节点的节点状态数据。同时,持久层还会生成包括至少一个目标终端的终端状态数据和至少一个目标服务节点的节点状态数据的发布查询结果,并发送至服务层。服务层接收该发布查询结果。
146.在步骤1108中,服务层根据至少一个目标终端的终端状态数据和目标服务节点的节点状态数据,通过处于存活状态的目标服务节点发送与发布请求对应的发布反馈至至少一个目标终端。
147.在一些实施例中,服务层在接收到至少一个目标终端的终端状态数据和至少一个目标服务节点的节点状态数据后,通过所述至少一个目标服务节点中处于存活状态的目标服务节点发送与发布请求对应的发布反馈至所述至少一个目标终端,也就是说,通过所述至少一个目标服务节点中处于存活状态的目标服务节点发送与发布请求中的有效载荷至所述至少一个目标终端。
148.举例来说,对于终端c3发送的发布请求,服务层通过与c3连接的服务节点p3接收该发布请求,并获取该发布请求中携带的目标主题t3;服务层通过p3发送携带目标主题t3的发布查询请求至持久层,持久层获取订阅该目标主题t3的至少一个目标终端的终端状态数据,即至少一个目标终端的连接关系和订阅关系,根据至少一个目标终端的连接关系,可以获取与所述至少一个目标终端连接的目标服务节点,进而可以获得每一目标服务节点的节点状态数据。持久化层可以将该至少一个目标终端的终端状态数据和至少一个目标服务节点的节点状态数据作为发布查询结果发送至服务层。服务层在接收到该发布查询结果后,确定该至少一个目标服务节点中处于存活状态的目标服务节点,并根据各目标终端的连接关系,通过与每一目标终端对应的处于存活状态的目标服务节点发送该发布请求对应
的发布反馈至每一目标终端,该发布反馈可以为该发布请求中的有效载荷。
149.通过本技术实施例对于图11的上述示例性实施可知,本技术实施例在接收到终端发送的发布请求后,可以快速从持久层中获取该发布请求对应的目标终端的终端状态数据和与每一目标终端连接的目标服务节点的节点状态数据,因此可以及时发送该发布请求对应的发布反馈至目标终端。同时,由于各个终端的终端状态数据和各服务节点的节点状态数据存储于持久层中,在需要发布消息时,只需发送发布查询请求至持久层即可完成目标终端及路由信息的获取,相比于现有技术中广播形式的发布消息方式,本技术实施例无需将该终端状态数据同步至服务层中其他的服务节点中,也无需发送该发布反馈至其他服务节点,可以提升发布请求处理效率,节省了带宽的同时,提升了服务层中各服务节点的服务性能。
150.在一些实施例中,参见图12,图12是本技术实施例提供的请求处理方法的一个可选的流程示意图,基于图2,在终端发送的功能请求为取消订阅请求的情况下,图2示出的步骤202可以更新为步骤1200,步骤204可以通过步骤1202至步骤1204实现,步骤206可以更新为步骤1206,步骤208可以更新为步骤1208,将结合图12示出的步骤进行说明。
151.在步骤1200中,服务层接收终端传输的取消订阅请求。
152.在一些实施例中,终端还会发送取消订阅请求至服务层,其中,终端已经与该服务层中的一个服务节点建立通信连接,终端可以通过该通信连接发送取消订阅请求至服务层。
153.在本实施例中,服务层可以通过服务节点接收到该取消订阅请求,其中,该取消订阅请求是连接于该服务节点的终端发送的。
154.在步骤1202中,服务层获取取消订阅请求中携带的终端的待取消订阅关系。
155.在一些实施例中,该订阅请求中可以携带该请求数据包的包标识符(packet identifier)和待取消订阅关系。其中,待取消订阅关系中包括该终端需要取消订阅的至少一个目标主题。
156.在步骤1204中,服务层发送携带待取消订阅关系的取消订阅查询请求至持久层。
157.在一些实施例中,响应于接收到的取消订阅请求,服务层会发送携带该终端的待取消订阅关系的取消订阅查询请求至持久层。持久层在接收到该取消订阅查询请求后,会在持久化数据中获取该终端的终端状态数据,并根据订阅查询请求中携带的该终端的待取消订阅关系更新该终端的终端状态数据。
158.在步骤1206中,服务层接收持久层返回的取消订阅查询结果;取消订阅查询结果是持久层在持久化数据中删除终端的待取消订阅关系时生成的。
159.在一些实施例中,持久层接收到该取消订阅查询请求后,会获取取消订阅查询请求中携带的该终端的待取消订阅关系,并通过该取消订阅查询请求中携带的该终端的待取消订阅关系更新持久化数据中该终端的终端状态数据,也就是说,删除该终端的终端状态数据中与该待取消订阅关系对应的订阅关系。同时,持久层还会生成取消订阅查询结果,并发送至服务层。其中,该取消订阅查询结果可以用包括持久层删除该终端的终端状态数据中与该待取消订阅关系对应的订阅关系时的删除记录。服务层接收该订阅查询结果。
160.在步骤1208中,服务层根据取消订阅查询结果发送与取消订阅请求对应的取消订阅反馈至终端。
161.在一些实施例中,持久层接收到该取消订阅查询结果后,会将其中的删除记录通过取消订阅反馈的方式发送至终端。
162.举例来说,对于终端c4发送的取消订阅请求,服务层通过与c4连接的服务节点p4接收该取消订阅请求,并获取该取消订阅请求中携带的c4的待取消订阅关系(c4取消订阅t4主题);服务层通过p4发送携带c4的待取消订阅关系的取消订阅查询请求至持久层,持久层获取c4的终端状态数据,即c4的历史订阅关系,持久层可以在该历史订阅关系删除该待取消订阅关系对应的订阅关系。持久化层可以保存删除过程中的删除记录,并将该删除记录作为取消订阅查询结果发送至服务层,该取消订阅查询结果可以包括该待取消订阅关系的删除结果。服务层在接收到该取消订阅查询结果后,会将其中的删除记录通过取消订阅反馈的方式发送至终端c4。
163.通过本技术实施例对于图12的上述示例性实施可知,本技术实施例在接收到终端发送的取消订阅请求后,可以及时更新持久层中该终端的终端状态数据。同时,由于该终端的终端状态数据存储于持久层中,在需要更新订阅关系和/或连接关系时,只需发送订阅查询请求至持久层即可完成终端状态数据的更新,相比于现有技术中广播形式的更新终端状态数据,本技术实施例无需将该终端状态数据同步至服务层中其他的服务节点中,可以提升订阅请求处理效率,节省了带宽的同时,提升了服务层中各服务节点的服务性能。
164.在一些实施例中,参见图13,图13是本技术实施例提供的请求处理方法的一个可选的流程示意图,将结合图13示出的步骤进行说明。
165.在步骤1302中,持久层接收服务层发送的查询请求;查询请求是服务层根据终端传输的功能请求生成。
166.在一些实施例中,持久层包括一个主持久节点和至少一个备份持久节点,其中,主持久节点和备份持久节点采用raft算法设计,可以保证持久层的可靠性以及容灾能力。
167.在本实施例中,持久层中,多个持久节点组成一个raft组,一个组里只有一个主持久节点(leader节点),其余为备份持久节点(follower节点),主持久节点对服务层提供数据服务,主持久节点的持久化数据与备份持久节点保持一致,当主持久节点故障宕机后,备份持久节点开始竞选,产生新的主持久节点继续提供服务,保证持久层的高可用。同时,持久层采用multi-raft-group架构,实现对订阅关系等状态数据的分片存储,解决单个raft leader节点的读写性能瓶颈问题,保证持久层的高性能。
168.在步骤1304中,持久层根据持久化数据生成查询结果。
169.在步骤1306中,持久层发送查询结果至服务层;查询结果用于指示服务层执行与功能请求对应的功能操作。
170.通过本技术实施例对于图13的上述示例性实施可知,本技术实施例通过在持久化层设置一个主持久节点和至少一个备份持久节点,可以提高持久层的读写性能,提高了持久层的可用性。并且,本技术实施例中服务层通过将功能请求需要的订阅关系和/或连接关系存储在持久层的持久化数据中,在服务节点接收到终端的功能请求,需要更新订阅关系和/或连接关系时,只需发送查询请求至持久层即可完成订阅关系和/或连接关系的更新,相比于现有技术中广播形式的更新订阅关系和/或连接关系,本技术实施例无需将该订阅关系和/或连接关系同步至服务层中其他的服务节点中,可以提升订阅请求处理效率,节省了带宽的同时,提升了服务层中各服务节点的服务性能。
171.在一些实施例中,参见图14,图14是本技术实施例提供的请求处理方法的一个可选的流程示意图,将结合图14示出的步骤进行说明。
172.在步骤1402中,持久层接收每一服务节点按照预设频率发送的心跳消息。
173.在步骤1404中,持久层根据每一服务节点发送的心跳消息生成心跳确认消息。
174.在步骤1406中,持久层发送心跳确认消息至每一服务节点。
175.在一些实施例中,参见图15,图15是本技术实施例提供的请求处理方法的一个可选的流程示意图,将结合图15示出的步骤进行说明。
176.在步骤1502中,持久层接收每一服务节点按照预设频率发送的节点状态请求。
177.在步骤1504中,持久层根据每一服务节点的节点状态数据生成节点状态响应;节点状态响应包括至少一个服务节点中处于存活状态的服务节点的节点状态数据。
178.在步骤1506中,持久层发送节点反馈消息至每一服务节点。
179.在一些实施例中,参见图16,图16是本技术实施例提供的请求处理方法的一个可选的流程示意图,基于图13,在服务层发送的查询请求为连接查询请求的情况下,图2示出的步骤1302至步骤1306可以更新为步骤1602至步骤1608,将结合图16示出的步骤进行说明。
180.在步骤1602中,持久层接收服务层发送的连接查询请求;连接查询请求是服务层根据终端发送的连接请求生成的。
181.在步骤1604中,持久层获取连接查询请求中携带的终端的连接关系和订阅关系。
182.在步骤1606中,持久层在持久化数据中查询和/或更新终端的连接关系和订阅关系,并生成连接查询结果。
183.在步骤1608中,持久层发送连接查询结果至服务层;连接查询结果用于指示服务层发送与连接请求对应的连接反馈至终端。
184.在一些实施例中,参见图17,图17是本技术实施例提供的请求处理方法的一个可选的流程示意图,基于图16,在任意步骤之间,还包括步骤1702至步骤1706,将结合图17示出的步骤进行说明。
185.在步骤1702中,持久层接收服务层发送的遗嘱更新请求;遗嘱更新请求是服务层根据连接请求中携带的终端的遗嘱数据生成的。
186.在步骤1704中,持久层根据遗嘱数据更新持久化数据并生成遗嘱更新结果。
187.在步骤1706中,持久层发送遗嘱更新结果至服务层。
188.在一些实施例中,参见图18,图18是本技术实施例提供的请求处理方法的一个可选的流程示意图,将结合图18示出的步骤进行说明。
189.在步骤1802中,持久层接收服务层发送的遗嘱删除请求;遗嘱删除请求是服务层根据终端发送的断开连接请求生成的。
190.在步骤1804中,持久层删除终端的遗嘱数据,并生成遗嘱删除结果。
191.在步骤1806中,持久层发送遗嘱删除结果至服务层。
192.在一些实施例中,参见图19,图19是本技术实施例提供的请求处理方法的一个可选的流程示意图,将结合图19示出的步骤进行说明。
193.在步骤1902中,持久层接收服务层在终端异常断开的情况下发送的遗嘱查询请求。
194.在步骤1904中,持久层在持久化数据中查询终端的遗嘱数据,生成遗嘱查询结果;遗嘱查询结果用于表征持久化数据中是否存在终端的遗嘱数据;在持久化数据中存在终端的遗嘱数据的情况下,遗嘱查询结果还携带终端的遗嘱数据。
195.在一些实施例中,参见图20,图20是本技术实施例提供的请求处理方法的一个可选的流程示意图,将结合图20示出的步骤进行说明。
196.在步骤2002中,持久层接收服务层发送的遗嘱订阅终端查询请求。
197.在步骤2004中,持久层查询订阅遗嘱数据的至少一个遗嘱订阅终端。
198.在步骤2006中,持久层根据持久化数据生成遗嘱订阅终端查询结果;遗嘱订阅终端查询结果包括至少一个遗嘱订阅终端的终端状态数据,和与每一遗嘱订阅终端连接的目标服务节点的节点状态数据。
199.在步骤2008中,持久层发送遗嘱订阅终端查询结果至服务层;遗嘱订阅终端查询结果用于指示服务层通过处于存活状态的目标服务节点发送遗嘱数据至至少一个遗嘱订阅终端。
200.在一些实施例中,参见图21,图21是本技术实施例提供的请求处理方法的一个可选的流程示意图,将结合图21示出的步骤进行说明。
201.在步骤2102中,持久层接收服务层发送的订阅查询请求;订阅查询请求是服务层根据终端发送的订阅请求生成的。
202.在步骤2104中,持久层获取订阅查询请求中携带的终端的连接关系和订阅关系。
203.在步骤2106中,持久层在持久化数据中存储终端的连接关系和订阅关系,并生成订阅查询结果。
204.在步骤2108中,持久层发送订阅查询结果至服务层;连接查询结果用于指示服务层发送与订阅请求对应的订阅反馈至终端。
205.在一些实施例中,订阅关系包括目标主题,在查询到目标主题的保留消息的情况下,订阅查询结果还携带保留消息。
206.在一些实施例中,参见图22,图22是本技术实施例提供的请求处理方法的一个可选的流程示意图,将结合图22示出的步骤进行说明。
207.在步骤2202中,持久层接收服务层发送的发布查询请求;发布查询请求是服务层根据终端发送的发布请求生成的。
208.在步骤2204中,持久层获取发布查询请求中携带的目标主题。
209.在步骤2206中,持久层根据持久化数据查询订阅目标主题的至少一个目标终端并生成发布查询结果;发布查询结果包括至少一个目标终端的终端状态数据,和与每一目标终端连接的目标服务节点的节点状态数据。
210.在步骤2208中,持久层发送发布查询结果至服务层;发布查询结果用于指示服务层通过处于存活状态的目标服务节点发送与发布请求对应的发布反馈至至少一个目标终端。
211.在一些实施例中,参见图23,图23是本技术实施例提供的请求处理方法的一个可选的流程示意图,将结合图23示出的步骤进行说明。
212.在步骤2302中,持久层接收服务层发送的取消订阅查询请求;取消订阅查询请求是服务层根据终端发送的取消订阅请求生成的。
213.在步骤2304中,持久层获取取消订阅查询请求中携带的待取消订阅关系。
214.在步骤2306中,持久层在持久化数据中删除终端的待取消订阅关系,并生成取消订阅查询结果。
215.在步骤2308中,持久层发送取消订阅查询结果至服务层;取消订阅查询结果用于指示服务层发送与取消订阅请求对应的取消订阅反馈至终端。
216.下面,将说明本技术实施例在一个实际的应用场景中的示例性应用。
217.物联网(the internet of things)的定义很简单:把所有物品通过射频识别等信息传感设备与互联网连接起来,实现智能化识别和管理。物联网通过智能感知、识别技术与普适计算、泛在网络的融合应用,被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。物联网将现实世界数位化,拉近分散的信息,整合物与物的数位信息,应用十分广泛,其应用领域主要包括以下方面:运输和物流领域、工业制造、健康医疗、智能环境(家庭、办公、工厂)领域、个人和社会领域等,具有十分广阔的市场和应用场景。
218.实现万物互联的物联网,最重要的是在互联网中设备与设备的通讯。现在物联网在互联网中通信中比较常见的通讯协议包括:http、websocket、xmpp、coap、mqtt。相较其他几种通讯协议,mqtt是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于tcp/ip协议上,由ibm在1999年发布。mqtt在协议设计时就考虑到不同设备的计算性能的差异,所以所有的协议都是采用二进制格式编解码,并且编解码格式都非常易于开发和实现。最小的数据包只有2个字节,对于低功耗低速网络也有很好的适应性。有非常完善的qos机制,根据业务场景可以选择最多一次、至少一次、刚好一次三种消息送达模式。运行在tcp协议之上,同时支持tls(tcp ssl)协议,安全性得到了较好地保障。
219.万物互联,设备众多,单台mqtt服务器性能有限,难以满足众多设备连接需求,mqtt服务器高可用集群在物联网应用中尤为重要。目前开源的、支持集群模式的mqtt代理服务器(包括支持mqtt协议的消息队列)主要有emq、apache activemq。mosquitto官方没有给出集群解决方案。在集群模式下,数以百万计的终端连接到不同的节点上,终端可以在任意节点发布消息和发布消息。一个消息的发布后,需要做到按需推送到对应的订阅终端,这就需要解决消息在不同节点间的路由问题。即需要根据每个终端的订阅关系找到需要推送的终端,然后转发消息到终端所连接的节点。activemq、mosquitto和emq对此问题的解决方案如下:
220.每当收到终端的连接/关闭连接/订阅/取消订阅请求后会广播到其他节点,在每个节点都保存全量的订阅关系数据。考虑到节点间随时出现的网络问题和节点的宕机、恢复,节点间会出现数据不一致,集群提供了广播失败后的重试机制。另外,当某个节点因为宕机等原因脱离集群,在重新加入集群后,其他节点会发送各自所有的订阅数据到该节点以防止该节点的订阅数据丢失。
221.可以看出,传统技术中缺点如下:
222.(1)不能支持大规模集群。
223.假设集群中有n个服务节点,每个服务节点都需要和其他n-1个服务节点保持长连接,并且每个连接/关闭连接/订阅/取消订阅请求都要产生n-1次rpc调用。当服务节点规模增大后,这些prc请求会占用大量带宽,而且是呈现几何增长,性能急剧下降。如果采用广播的方式,不需要接受信息的主机也会收到信息,信息的安全性得不到保障,而且会造成同一
网段中信息泛滥,也会浪费大量带宽。
224.(2)数据一致性问题、性能问题等难以解决。
225.由于网络不稳定、服务节点的宕机/恢复所造成的服务节点间数据不一致问题难以解决。即便activemq、mosquitto-cluster或emq提出了各自的解决方案,但是存在逻辑复杂、对性能有影响等问题。
226.activemq有两种集群方式,一种是master/slave集群模式,此集群方式依赖zookeeper,增大了系统的复杂性,管理麻烦,而且不具有负载均衡的特性;另一种是broker clusters集群方式,消息可以在多个服务节点(broker)之间转发,但是消息只存储在一个broker上,一旦失效必需重启。
227.mosquitto-cluster支持水平扩展,但当集群规模比较大时,有新的终端(client)订阅/取消订阅时,需要通知其他所有的broker,client与broker集群间网络不稳定导致其频繁重连发送订阅/取消订阅报文时,broker集群间就会有大量请求,势必对性能产生影响。
228.emq消息服务器集群基于erlang/otp分布式设计,emq消息服务器同一集群的所有节点,都会复制一份主题(topic)与broker节点映射的路由表,当终端很多时,订阅主题很多时,路由表占用的内存就不容小觑,势必要保证服务器的内存充足;另外在处理跨界点持久会话时,若维护持久会话的节点故障,则服务异常。
229.本技术实施例采用计算和存储分离架构设计,连接关系和订阅关系数据持久化层基于raft算法设计,计算服务层无状态,持久层兼具注册中心的功能,实现高性能、弹性扩缩、高可用的面向物联网的消息队列系统。
230.如图24所示的本技术实施例提供的一种的设计总体框架示意图,mqtt broker启动并将自己信息保存到持久层,broker可从持久层获取到其他broker信息,彼此组成broker集群。物联网设备通过负载均衡服务器连接到broker集群,broker集群将物联网设备的连接关系和订阅关系数据持久化到持久层。服务层不持有连接关系和订阅关系这些状态数据,因此broker节点是无状态的,可支持无限制水平扩展。持久层基于raft算法设计,当持久层的leader宕机后,follower中竞选产生新leader对broker集群提供服务。同时,持久层采用multi-raft-group架构设计,在必要时对存储的状态数据进行分片存储,解决单个raft集群leader节点性能瓶颈问题,实现持久层的整体高可用及水平扩展。该发明方案,定义了broker服务提供层和订阅关系持久层不紧密耦合,broker不持有订阅关系数据,物联网设备每个连接/关闭连接/订阅/取消订阅请求,都只会产生一次服务层对订阅关系持久层的调用。持久层持有维护订阅关系数据,使得即使提供服务的broker故障宕机后,物联网设备重新连接到其他broker,不用发送不必要的订阅报文就仍能正常收发mqtt消息。该发明方案支持broker及持久层的弹性扩缩,大规模集群。基于raft算法设计的持久层保证了数据一致性,整体提高了系统高可用性能。
231.在一些实施例中,服务层与持久层分离架构。其中:
232.(1)持久层:基于raft算法设计,用来保证持久层的可靠性以及容灾能力。其负责维护物联网设备连接到broker的连接关系数据及订阅关系数据,比如物联网设备mqtt终端连接到的broker的地址、遗嘱消息(will message)、保留消息(retainmessage)、离线消息、订阅的主题(topic)、订阅主题的消息服务质量(qos)、清除会话标志(cleansession)等。除
此之外,持久层还维护broker节点的相关信息,比如broker节点ip、存活状态等,持久层兼具注册中心的功能,实现方式参看服务层说明。在持久层,多个存储节点组成一个raft组,一个组里只有一个leader节点,其余为follower节点,leader节点对broker层提供数据服务,follower节点数据与leader节点保持一致,当leader节点故障宕机后,follower节点开始竞选,产生新的leader节点继续提供服务,保证持久层的高可用。同时,持久层采用multi-raft-group架构,实现对订阅关系等状态数据的分片存储,解决单个raft leader节点的读写性能瓶颈问题,保证持久层的高性能。
233.举例来说,请参阅图25a提供的一种持久化节点故障宕机的示意图。在故障发生前,持久层中存在持久化节点1、持久化节点2、持久化节点3、持久化节点4和持久化节点5,其中,持久化节点1为主持久节点,其余节点为备份持久节点,在发生故障后,主持久节点1及备份主持久节点2出现故障,持久化节点3、持久化节点4和持久化节点5会重新竞选除新的主持久化节点,如图中所示的持久化节点3变为主持久化节点,继续提供服务。
234.(2)服务层:每个broker需要动态感知集群中当前存活的broker,这里,如果采用第三方组件(比如zookeeper或etcd等)来保存各个broker当前在线状态,则会增加整个方案设计的复杂性,同样会对实际的部署和运维工作造成很多负担。请参考图25b提供的一种服务层与持久化层的交互示意图,这里考虑借助持久层实现轻量级注册中心,提供服务注册和服务发现的功能。每个broker实例启动时向持久层保存自己的信息并定时发送心跳包维护自己的在线状态。其他broker通过访问持久层就可以准实时动态感知集群中的其他broker。无论有新的broker加入集群,还是集群中有broker出现故障而宕机,其他能够正常工作的broker均可以动态感知到这些状态信息,完成消息在集群broker间的路由。多个broker组成一个集群共同对物联网设备mqtt终端提供服务。
235.在一些实施例中,本技术还提供了服务层和持久层间的交互场景。本提案中服务层与持久层的交互场景比较多,下面按物联网设备终端发送的报文类型分类说明交互场景。以下流程中,省略了服务层的一些报文检查等说明,重点介绍服务层与持久层的交互。
236.在一些实施例中,如图26,本技术还提供了服务层处理connect报文(连接请求)时与持久层的交互流程。
237.在步骤2602中,持久层收到broker的心跳包及感知集群存活broker的请求后,更新当前broker的状态信息,查询存活broker的状态,返回给broker,以备后续处理publish报文时在集群broker间进行消息路由;
238.在步骤2604中,如果connect报文中包含有遗嘱消息(will message),服务层调用持久层保存遗嘱消息;
239.在步骤2606中,持久层收到broker查询是否存在订阅关系数据的请求后,若持久层中原先已存在订阅关系数据,更新订阅关系的cleansession;服务层根据持久层的响应创建connack报文。
240.在一些实施例中,如图27,本技术还提供了服务层处理subscribe报文(订阅请求)时与持久层的交互流程。
241.在步骤2702中,持久层处理broker的心跳及感知请求同上;
242.在步骤2704中,持久层收到broker发送的连接关系及订阅关系数据后进行存储持久化;持久层查询与订阅关系匹配的保留消息,并返回给broker,以便broker向新连接的终
端推送保留消息。
243.在一些实施例中,如图28,本技术还提供了服务层处理publish报文(发布请求)时与持久层的交互流程。
244.在步骤2802中,持久层处理broker的心跳及感知请求同上;
245.在步骤2804中,持久层收到broker保存保留消息(retain message)的请求后,将保留消息持久化,以备broker处理subscribe报文时发送给订阅了该消息的新连接的终端;
246.在步骤2806中,持久层收到broker请求后,该请求是:查询订阅了publish报文主题(topic)的终端及其连接的broker的状态,持久层查询相应信息,返会给broker,以便broker进行消息推送及消息路由。
247.在一些实施例中,如图29,本技术还提供了服务层处理unsubscribe报文(取消订阅请求)时与持久层的交互流程。
248.在步骤2902中,持久层处理broker心跳及感知请求同上;
249.在步骤2904中,持久层收到broker取消订阅的请求后,更新订阅关系数据,返回相应以便broker创建unsuback报文。
250.在一些实施例中,如图30,本技术还提供了服务层处理disconnect报文(取消连接请求)时与持久层的交互流程
251.在步骤3002中,持久层处理broker的心跳及感知请求同上;
252.在步骤3004中,持久层收到broker发送的删除遗嘱消息(will message)的请求后,若持久层存在对应的遗嘱消息,执行删除逻辑,若不存在,不进行任何操作;持久层返回处理响应。
253.在一些实施例中,如图31,本技术还提供了broker处理物联网设备终端异常断开连接时与持久层的交互流程。
254.在步骤3102中,持久层处理broker的心跳及感知请求同上;
255.在步骤3104中,持久层收到broker查询遗嘱消息(will message)的请求,查询遗嘱消息,返回响应;
256.在步骤3106中,若遗嘱消息存在,broker会继续发送请求查询订阅了此遗嘱消息的终端及其连接的broker的状态,持久层收到请求进行查询,返回响应,以便broker进行消息推送及消息路由;若遗嘱消息不存在,处理逻辑结束。
257.本技术发明方案与业界现有的技术方案相对比,重要的区别点和关键点可以概括如下:物联网消息队列系统运算存储分离架构;服务层与持久层分离架构,broker集群中的节点不持有物联网设备端连接关系和订阅关系数据,此类数据由持久层持有维护,持久层为broker集群提供数据服务接口。broker节点无状态,可无限制支持扩容和缩容。持久层具备注册中心的功能;broker集群中节点状态数据定时上报至持久层,持久层兼具注册中心的角色,简化了系统结构,降低了运维维护成本。持久层统计broker集群节点状态,broker集群节点从持久层动态准实时感知集群节点状态。
258.本技术实施例还支持broker集群弹性扩缩及高性能大规模集群。相关技术方案中,当broker集群规模增大,百万级、千万级乃至亿级物联网设备接入集群,集群中的每个broker都需要维护全量连接信息及订阅信息,而且集群中broker节点间的rpc调用也随着broker节点数呈几何级增长,大规模集群性能急剧下降。本技术实施例中broker集群中的
节点不全量持有连接关系及订阅关系,而是将这些信息交由持久层持有,集群性能不会随着broker节点数量的增多而下降,能大规模集群,满足物联网设备亿万级接入需求。本技术方案中的持久层也兼具注册中心的角色,其为服务层动态感知集群中其他节点状态数据提供服务,避免了使用第三方组件(zookeeper,etcd等)带来的运维维护成本。
259.本技术实施例还保证数据一致性,故障容灾能力强。相关技术方案中,由于网络不稳定、节点的宕机/恢复所造成的节点间数据不一致问题难以解决。即便mosquitto-cluster或emqtt等提出了各自的解决方案:各个节点全量持有集群所有数据,但是存在逻辑复杂、对性能有影响等问题。本技术实施例中集群数据交由持久层持有维护,broker集群中的节点从持久层获取连接关系、订阅关系数据,数据一致性问题得到有效解决,broker节点故障不会影响服务。持久层的一致性保证可采用raft算法实现。
260.基于前述的实施例,本技术实施例再提供一种请求处理装置,所述请求处理装置包括所包括的各模块、以及各模块所包括的各单元,可以通过终端中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(central processing unit,cpu)、微处理器(micro processing unit,mpu)、数字信号处理器(digital signal processor,dsp)或现场可编程门阵列(field programmable gate array,fpga)等。
261.图32为本技术实施例提供的一种请求处理装置的组成结构示意图,如图32所示,所述请求处理装置3200包括第一接收模块3201、第一发送模块3202、第二接收模块3203和执行模块3204,其中:
262.第一接收模块3201,用于接收终端传输的功能请求;
263.第一发送模块3202,用于发送与所述功能请求对应的查询请求至持久层;
264.第二接收模块3203,用于接收所述持久层返回的查询结果;所述查询结果是所述持久层根据持久化数据生成的。
265.执行模块3204,用于根据所述查询结果,执行与所述功能请求对应的功能操作。
266.图33为本技术实施例提供的一种请求处理装置的组成结构示意图,如图33所示,所述请求处理装置3300包括第三接收模块3301、生成模块3302和第二发送模块3303,其中:
267.第三接收模块3301,用于接收服务层发送的查询请求;所述查询请求是所述服务层根据终端传输的功能请求生成;
268.生成模块3302,用于根据持久化数据生成查询结果;
269.第二发送模块3303,用于发送所述查询结果至所述服务层;所述查询结果用于指示所述服务层执行与所述功能请求对应的功能操作。
270.这里需要指出的是:以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
271.需要说明的是,本技术实施例中,如果以软件功能模块的形式实现上述请求处理方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得终端(可以是具有摄像头的智能手机、平板电脑等)执行本技术各个实施例所述方法的全
部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本技术实施例不限制于任何特定的硬件和软件结合。
272.对应地,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中任一所述请求处理方法中的步骤。
273.对应地,本技术实施例中,还提供了一种芯片,所述芯片包括可编程逻辑电路和/或程序指令,当所述芯片运行时,用于实现上述实施例中任一所述请求处理方法中的步骤。
274.对应地,本技术实施例中,还提供了一种计算机程序产品,当该计算机程序产品被终端的处理器执行时,其用于实现上述实施例中任一所述请求处理方法中的步骤。
275.基于同一技术构思,本技术实施例提供一种设备,用于实施上述方法实施例记载的请求处理方法。图34为本技术实施例提供的一种设备的硬件实体示意图,如图34所示,所述设备3400包括存储器3410和处理器3420,所述存储器3410存储有可在处理器3420上运行的计算机程序,所述处理器3420执行所述程序时实现本技术实施例任一所述请求处理方法中的步骤。
276.存储器3410配置为存储由处理器3420可执行的指令和应用,还可以缓存待处理器3420以及终端中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(flash)或随机访问存储器(random access memory,ram)实现。
277.处理器3420执行程序时实现上述任一项的请求处理方法的步骤。处理器3420通常控制终端3400的总体操作。
278.上述处理器可以为特定用途集成电路(application specific integrated circuit,asic)、数字信号处理器(digital signal processor,dsp)、数字信号处理装置(digital signal processing device,dspd)、可编程逻辑装置(programmable logic device,pld)、现场可编程门阵列(field programmable gate array,fpga)、中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本技术实施例不作具体限定。
279.上述计算机可读存储介质/存储器可以是只读存储器(read only memory,rom)、可编程只读存储器(programmable read-only memory,prom)、可擦除可编程只读存储器(erasable programmable read-only memory,eprom)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁性随机存取存储器(ferromagnetic random access memory,fram)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(compact disc read-only memory,cd-rom)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。
280.这里需要指出的是:以上存储介质和终端实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术存储介质和终端实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
281.应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
282.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
283.在本技术所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。以上所描述的终端实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本技术实施例方案的目的。
284.另外,在本技术各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
285.或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得设备自动测试线执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
286.本技术所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
287.本技术所提供的几个方法或终端实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或终端实施例。
288.以上所述,仅为本技术的实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献