长连接的任务执行方法、装置及相关设备与流程
未命名
09-22
阅读:43
评论:0
1.本技术涉及物联网技术领域,具体而言,本技术涉及一种长连接的任务执行方法、装置及相关设备。
背景技术:
2.随着物联网技术的发展,越来越多的客户端请求与服务端建立长连接。在现有基于长连接的服务实现方案中,服务器所能支撑的长连接数量较少,且在所支撑的长连接数量达到一定阈值后,容易出现客户端请求超时的问题。
技术实现要素:
3.本技术的目的旨在提供一种长连接的任务执行方法、装置及相关设备,能够提高服务器所能支撑的长连接数量,并支持客户端的高并发请求。为了实现该目的,本技术实施例提供的技术方案如下:
4.第一方面,本技术实施例提供了一种长连接的任务执行方法,包括:
5.通过长连接通道接收第一客户端发出的目标请求;所述目标请求携带有目标任务信息;
6.基于所述目标任务信息调用与所述第一客户端对应的目标队列线程,并通过所述目标队列线程基于预存任务信息执行与所述目标请求相应的目标任务;其中,所述预存任务信息采用字典数据结构存储;
7.基于所述目标请求,通过所述长连接通道将所述目标队列线程执行所述目标任务的结果信息反馈至所述第一客户端;
8.其中,所述长连接通道与所述第一客户端基于客户端的身份标识建立有对应关系。
9.在一可行的实施例中,在所述通过长连接通道接收第一客户端发出的目标请求之前,还包括:
10.接收所述第一客户端通过消息队列遥测传输协议发起的连接请求,建立传输控制协议或安全套接层的长连接,以通过与所述第一客户端对应的长连接通道传输信息;所述连接请求携带有连接信息;
11.基于所述连接信息中的第一对象信息与预设密码信息进行校验操作;
12.若所述第一对象信息与预存对象信息匹配,且目标哈希值与所述第一客户端对应的预存哈希值匹配,则确定校验成功并采用字典数据结构以所述第一客户端的身份标识为键值存储所述连接信息;否则,确定校验失败并断开所述长连接;其中,所述目标哈希值是基于所述预设密码信息进行哈希运算确定的。
13.在一可行的实施例中,所述基于所述目标任务信息调用与所述第一客户端对应的目标队列线程,包括:
14.基于所述目标任务信息中所述第一客户端的身份标识以及线程池所包括的队列
数量进行哈希运算,确定与所述第一客户端对应的目标队列标识;
15.基于所述目标队列标识调用相应的目标队列线程,以通过所述目标队列线程串行处理所述目标队列线程中的各项请求。
16.在一可行的实施例中,所述目标任务信息包括第一对象信息和主题信息;所述通过所述目标队列线程基于预存任务信息执行与所述目标请求相应的目标任务,包括:
17.通过所述目标队列线程在预存任务信息中查询与所述第一对象信息对应的主题列表中是否包括所述主题信息;
18.若是,执行与所述目标请求相应的目标任务时输出包括任务响应信息的结果信息;
19.若否,执行与所述目标请求相应的目标任务时输出包括任务执行失败信息的结果信息;
20.其中,所述预存任务信息包括采用至少一段字典数据结构所存储的主题信息与对象信息之间的对应关系;主题信息为遍历键,对象信息为遍历值。
21.在一可行的实施例中,所述目标请求为订阅请求或发布请求;
22.当所述目标请求为订阅请求,且输出任务响应信息时,执行所述目标任务包括:在所述预存任务信息中存储所述第一对象信息与所述主题信息的对应关系;
23.当所述目标请求为发布请求,且输出任务响应信息时,执行所述目标任务包括:获取所述目标任务信息中的发布信息和主题信息;在所述预存任务信息中查询与所述主题信息具有对应关系的第二对象信息;向与所述第二对象信息相应的第二客户端发送所述发布信息。
24.在一可行的实施例中,当接收到的发布信息为所述第一客户端采用高级加密标准算法加密后的加密信息时,所述获取所述目标任务信息中的发布信息,包括:
25.获取所述目标任务信息中的所述加密信息;
26.通过所述高级加密标准算法解密所述加密信息得到所述发布信息。
27.在一可行的实施例中,当接收到的发布信息为所述第一客户端采用压缩算法压缩后的压缩信息时,所述获取所述目标任务信息中的发布信息,包括:
28.获取所述目标任务信息中的所述压缩信息;
29.通过所述压缩算法解压所述压缩信息得到所述发布信息。
30.在一可行的实施例中,该方法还包括:
31.接收所述第一客户端发出的下线请求;所述下线请求携带有断连信息;
32.基于所述断连信息关闭与所述第一客户端对应的长连接通道,并清除与所述第一客户端相关的信息。
33.第二方面,本技术实施例提供了一种服务分配方法,包括:
34.基于负载均衡策略,将所接收的各个客户端连接分别分发至对应的服务器;所述服务器所在的服务器集群中包括至少一个服务器;
35.其中,所述服务器执行第一方面任一实施例所述的长连接的任务执行方法。
36.第三方面,本技术实施例提供了一种长连接的任务执行装置,包括:
37.接收模块,用于通过长连接通道接收第一客户端发出的目标请求;所述目标请求携带有目标任务信息;
38.调用模块,用于基于所述目标任务信息调用与所述第一客户端对应的目标队列线程,并通过所述目标队列线程基于预存任务信息执行与所述目标请求相应的目标任务;其中,所述预存任务信息采用字典数据结构存储;
39.反馈模块,用于基于所述目标请求,通过所述长连接通道将所述目标队列线程执行所述目标任务的结果信息反馈至所述第一客户端;
40.其中,所述长连接通道与所述第一客户端基于客户端的身份标识建立有对应关系。
41.在一可行的实施例中,接收模块用于执行在所述通过长连接通道接收第一客户端发出的目标请求之前,还用于:
42.接收所述第一客户端通过消息队列遥测传输协议发起的连接请求,建立传输控制协议或安全套接层的长连接,以通过与所述第一客户端对应的长连接通道传输信息;所述连接请求携带有连接信息;
43.基于所述连接信息中的第一对象信息与预设密码信息进行校验操作;
44.若所述第一对象信息与预存对象信息匹配,且目标哈希值与所述第一客户端对应的预存哈希值匹配,则确定校验成功并采用字典数据结构以所述第一客户端的身份标识为键值存储所述连接信息;否则,确定校验失败并断开所述长连接;其中,所述目标哈希值是基于所述预设密码信息进行哈希运算确定的。
45.在一可行的实施例中,调用模块在用于执行基于所述目标任务信息调用与所述第一客户端对应的目标队列线程执行与所述目标请求相应的目标任务时,具体用于:
46.基于所述目标任务信息中所述第一客户端的身份标识以及线程池所包括的队列数量进行哈希运算,确定与所述第一客户端对应的目标队列标识;
47.基于所述目标队列标识调用相应的目标队列线程执行与所述目标请求相应的目标任务,以串行处理所述目标队列线程中的各项请求。
48.在一可行的实施例中,所述目标任务信息包括第一对象信息和主题信息;调用模块在用于执行与所述目标请求相应的目标任务时,具体用于:
49.在预存任务信息中查询与所述第一对象信息对应的主题列表中是否包括所述主题信息;
50.若是,执行与所述目标请求相应的目标任务时输出包括任务响应信息的结果信息;
51.若否,执行与所述目标请求相应的目标任务时输出包括任务执行失败信息的结果信息;
52.其中,所述预存任务信息包括采用至少一段字典数据结构所存储的主题信息与对象信息之间的对应关系;主题信息为遍历键,对象信息为遍历值。
53.在一可行的实施例中,所述目标请求为订阅请求或发布请求;
54.当所述目标请求为订阅请求,且输出任务响应信息时,调用模块在用于执行所述目标任务时,具体用于:在所述预存任务信息中存储所述第一对象信息与所述主题信息的对应关系;
55.当所述目标请求为发布请求,且输出任务响应信息时,调用模块在用于执行所述目标任务时,具体用于:获取所述目标任务信息中的发布信息和主题信息;在所述预存任务
信息中查询与所述主题信息具有对应关系的第二对象信息;向与所述第二对象信息相应的第二客户端发送所述发布信息。
56.在一可行的实施例中,当接收到的发布信息为所述第一客户端采用高级加密标准算法加密后的加密信息时,调用模块在用于获取所述目标任务信息中的发布信息时,具体用于:
57.获取所述目标任务信息中的所述加密信息;
58.通过所述高级加密标准算法解密所述加密信息得到所述发布信息。
59.在一可行的实施例中,当接收到的发布信息为所述第一客户端采用压缩算法压缩后的压缩信息时,调用模块在用于获取所述目标任务信息中的发布信息时,具体用于:
60.获取所述目标任务信息中的所述压缩信息;
61.通过所述压缩算法解压所述压缩信息得到所述发布信息。
62.在一可行的实施例中,该装置还包括断连模块,用于:
63.接收所述第一客户端发出的下线请求;所述下线请求携带有断连信息;
64.基于所述断连信息关闭与所述第一客户端对应的长连接通道,并清除与所述第一客户端相关的信息。
65.第四方面,本技术实施例提供了服务分配装置,包括:
66.分发模块,用于基于负载均衡策略,将所接收的各个客户端连接分别分发至对应的服务器;所述服务器所在的服务器集群中包括至少一个服务器;
67.其中,所述服务器执行第一方面任一实施例所述的长连接的任务执行方法。
68.第五方面,本技术还提供了一种电子设备,该电子设备包括存储器和处理器,其中,存储器中存储有计算机程序,处理器在运行该计算机程序时用于执行本技术任一可选实施例中提供的方法。
69.第六方面,本技术还提供了一种计算机可读存储介质,该存储介质中存储有计算机程序,该计算机程序在处理器中运行时,处理器用于执行本技术任一可选实施例中提供的方法。
70.第七方面,本技术提供了一种计算机程序产品,该计算机程序产品或计算机程序包括计算机程序,该计算机程序被处理器执行时实现本技术任一可选实施例中提供的方法。
71.本技术提供的技术方案带来的有益效果是:
72.本技术实施例提供一种长连接的任务执行方法,可以应用于服务器,具体地,在长连接通道与第一客户端基于客户端的身份标识建立有对应关系时,也即第一客户端与服务器之间建立有长连接,可以通过长连接通道接收第一客户端发出的目标请求,该目标请求携带有目标任务信息;继而,基于目标任务信息调用与第一客户端对应的目标队列线程,并通过目标队列线程基于预存任务信息执行与目标请求相应的目标任务;在此基础上,基于目标请求,通过长连接通过将目标队列线程执行目标任务的结果信息反馈至第一客户端。相对于现有技术,本技术的实施将任务执行方法的实施主体从整体架构做调整,首先针对客户端与服务器之间的长连接关系基于客户端的身份标识建立进行建立,继而采用调用队列线程的形式执行客户端所发起的目标请求对应的目标任务,并通过采用字典数据结构存储用于执行目标任务的预存任务信息,以通过提供一种高性能的架构而提高单一服务器所
能支撑长连接的数量,并在此基础上,通过采用字典数据结构存储用于执行目标任务的预存任务信息,降低处理目标任务信息的锁粒度,提升请求处理的每秒查询率,以降低客户端的请求延时,提供高性能通信。
73.本技术实施例还提供一种服务分配方法,可以应用于管理各单一服务器的负载均衡设备,负载均衡设备所管理的服务器集群中包括至少一个服务器;具体地,基于负载均衡策略,将所接收的各个客户端连接分别分发至对应的服务器中,而各服务器可以执行上述实施例所示的长连接的任务执行方法。本技术的实施可以在服务器集群中部署多台服务器,也即对应于多个后端服务节点,并将各后端服务节点挂载在负载均衡设备上,由负载均衡设备根据负载均衡策略进行流量分发,有利于均衡各单一服务器所支撑长连接数的均衡;在该基础上,通过增加或减少服务器集群中所部署的服务器数量,可以实现集群扩容或缩容,有利于提升服务的可扩展性和可用性。
附图说明
74.为了更清楚地说明本技术实施例中的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。
75.图1为本技术实施例提供的一种长连接的任务执行方法流程示意图;
76.图2为本技术实施例提供的一种服务分配方法的流程示意图;
77.图3为本技术实施例提供的一种运行架构的示意图;
78.图4为本技术实施例提供的一种服务器集群部署架构的示意图;
79.图5为本技术实施例提供的一种服务器架构的示意图;
80.图6为本技术实施例提供的一种数据结构的示意图;
81.图7为本技术实施例提供的一种客户端请求流程的示意图;
82.图8为本技术实施例提供的一种长连接的任务执行装置的结构示意图;
83.图9为本技术实施例提供的一种服务分配装置的结构示意图;
84.图10为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
85.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能解释为对本发明的限制。
86.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本技术的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
87.本技术是针对现有基于长连接的服务实现方案中所存在服务器支撑的长连接数量少、在所支撑的长连接数量达到一定阈值后,容易出现客户端请求超时的问题,而提出的
一种长连接的任务执行方法、装置及相关设备,基于该方案的实施,可以实现提高单一服务器所能支撑长连接的数量,并在此基础上降低客户端的请求延时,提供高性能通信。
88.本技术实施例的方案涉及到消息推送、即时通讯服务、物联网通讯服务等场景,基于本技术实施例的方案,能够提供高性能长连接的发布或订阅服务。
89.对本技术实施例进行进一步详细说明之前,对本技术实施例中涉及的名词及术语进行说明,本技术实施例中涉及的名词和术语适用于如下的解释。
90.物联网(internet of things,iot)是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要连接、互动的物体或过程,采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与对象的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网是一个基于互联网、传统电信网等的信息承载体,可以使得所有能够被独立寻址的普通物理对象形成互联互通的网络。
91.云物联(cloud iot)旨在将传统物联网中传感设备感知的信息和接受的指令连入互联网中,真正实现网络化,并通过云计算技术实现海量数据存储和运算,由于物联网的特性是物与物相连接,实时感知各个“物体”当前的运行状态,在这个过程中会产生大量的数据信息,如何将这些信息汇总,如何在海量信息中筛取有用信息为后续发展做决策支持,这些已成为影响物联网发展的关键问题,而基于云计算和云存储技术的物联云也因此成为物联网技术和应用的有力支持。
92.消息队列遥测传输(message queuing telemetry transport,mqtt)协议,是一个基于客户端与服务器的消息发布/订阅传输协议。可以在机器与机器(m2m)通信和物联网(iot)中使用。
93.字典(map)数据结构:map是一种数据类型,将键与值绑定到一起,底层采用用哈希表实现,可以快速地通过键找到对应的值。
94.传输控制协议(transmission control protocol,tcp)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
95.安全套接层(secure socket layer,ssl)是在传输通信协议上实现的一种安全协议。通过使用公开密钥和对称密钥技术以达到信息保密。ssl客户机和服务器之间的所有业务都使用在ssl握手过程中建立的密钥和算法进行加密。
96.每秒查询率(queries-per-second,qps)是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
97.高级加密标准(advanced encryption standard,aes)算法是一种对称加密算法,对称加密算法也就是加密和解密采用相同的密钥。
98.负载均衡(cloud load balancer,clb)提供安全快捷的流量分发服务,访问流量经由clb可以自动分配到云中的多台云服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
99.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
100.图1示出了本技术实施例提供的一种长连接的任务执行方法的流程示意图,该方
法可以由任一电子设备执行,如可以是服务器。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。在该方法中,执行长连接的任务执行的过程中可以接收客户端发起的请求,客户端(client)是指与服务器(又称服务端)相对应,为对象提供本地服务的程序,除了一些只在本地运行的程序之外,客户端一般安装在终端上,与服务端互相配合运行;终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载设备等;客户端可以是网页浏览器、电子邮件客户端、即时通讯的客户端等。
101.具体地,如图1所示,本技术实施例提供的长连接的任务执行方法包括以下步骤s101-步骤s103:
102.步骤s101:通过长连接通道接收第一客户端发出的目标请求;所述目标请求携带有目标任务信息。其中,所述长连接通道与所述第一客户端基于客户端的身份标识建立有对应关系。
103.其中,长连接通道可以提供iot业务协议封装的云端数据下行能力,为客户端提供订阅消息、发布消息的能力和支持请求响应模型。具体地,长连接通道具有对应于连接请求、订阅请求、取消订阅请求、发布消息等接口。在本技术实施例中,客户端与服务端之间通过长连接通道传输数据(如客户端发起的请求,该请求所携带的信息;或,服务端向客户端下发的结果信息、发布信息等)。
104.其中,第一客户端发出的目标请求可以是业务请求、订阅请求、取消订阅请求、发布请求等。目标请求所携带的目标任务信息与请求的内容相关,如目标请求为订阅请求时,目标任务信息可以包括对象信息、客户端的身份标识、主题信息等。将在后续的实施例中针对各项不同的请求情况详细说明目标任务信息所对应的内容。可选地,对象可以为使用客户端的使用者。
105.其中,如图5所示,在服务端中包括客户端管理器(clientmanager),具体地,通过客户端管理器在内存中进行客户端信息的管理,采用字典map数据结构实现数据的存储;在map中,遍历键(key)为客户端身份标识id;遍历值(value)为客户端信息,可以包括客户端id、客户端连接信息、客户端状态等。具体地,长连接通道与第一客户端之间的对应关系可以基于客户端管理器中所存储的当前服务端与客户端之间的对应关系确定;也即,在本技术实施例中,是针对单一服务端与多个客户端之间的长连接进行说明。具体地,在第一客户端与服务端建立长连接后,第一客户端可以通过长连接通道向服务端发出目标请求。
106.步骤s102:基于所述目标任务信息调用与所述第一客户端对应的目标队列线程,并通过目标队列线程基于预存任务信息执行与所述目标请求相应的目标任务;其中,预存任务信息采用字典map数据结构存储。
107.具体地,如图5所示,在服务端的内部线程池(workerpool)由n个队列(queue)组成,其中,n的大小可以根据集群规模配置,本技术对此不作限定;其中,队列中可以存放客户端请求任务,每一个队列可以对应有一个线程进行任务处理。
108.其中,目标任务信息是由第一客户端发起目标请求时,携带于目标请求中同步向服务端发送,服务端可以基于该目标任务信息确定出与第一客户端对应的目标队列(如通
过id区别各个队列),继而将与目标请求对应的目标任务放入该目标队列中,以调用相应的目标队列线程执行目标任务。
109.其中,预存任务信息是在实施时已经预存有的信息,可以是与目标任务相应的信息,如目标请求为发布请求时,预存任务信息可以包括预存储的主题信息与对象信息之间的关联关系。具体地,在本技术实施例中采用字典数据结构进行预存任务信息的存储,基于map数据结构进行信息的存储有利于降低对目标任务信息处理的锁粒度,提高请求处理的qps,减低客户端请求延时。
110.步骤s103:基于所述目标请求,通过所述长连接通道将所述目标队列线程执行所述目标任务的结果信息反馈至所述第一客户端。
111.具体地,由于目标任务的不同(可能是不同的处理任务,也可能是相同的处理任务但针对不同的处理内容;例如同样是订阅任务,但所订阅的主题不同),线程在执行不同的目标任务时所输出的结果信息不同。在线程处理客户端请求任务后,服务端可以通过长连接通道向第一客户端反馈相应的结果信息。
112.本技术实施例是基于长连接的服务实施方案,长连接是指在一个连接上可以连续发送多个数据包。例如,当一个网页打开完成后,客户端和服务器之间用于传输数据的连接不会关闭,客户端再次访问该服务器时,可以基于使用已经建立的连接。
113.为更好地说明本技术各个实施例的具体操作,下面首先结合图3、图5和图6对本技术实施例中服务器的整体架构进行说明。
114.在一实施例中,图3示出了本技术实施例基于长连接的发布/订阅服务的整体架构。第一客户端10与服务器20可以通过tcp协议或tcp ssl协议(在tcp上实现的一种安全协议)建立长连接,并使用mqtt协议进行数据传输。
115.在一实施例中,图5示出了本技术实施例的服务端的整体架构。
116.服务端可以由四个组件构成,分别是:客户端管理器(clientmanager)、服务端内部线程池(workerpool)、主题管理器(topicmanager)和权限校验模块(authchecker)。
117.其中,客户端管理器在内存中进行客户端(client)信息的管理,由map数据结构实现,key为客户端的身份标识(client id),value为客户端信息;客户端信息可以包括client id、客户端连接信息、客户端状态。如图5所示,同一服务端中通过客户端管理器进行客户端信息的管理,可以管理n个客户端信息,有利于提高长连接服务中服务端所支撑的长连接数量。
118.其中,服务端内部线程池(workerpool),由n个长度为预设数值(如4096)的队列(queue)组成,n大小可根据集群规模配置,队列中存放客户端请求任务,每个队列有一个线程进行任务处理。客户端请求可以经过哈希(hash)算法,取模预设数值4096计算出对应的队列,如queue id;具体地,算法可以表达如下公式(1):
119.queueid=hash(clientid)%n
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
......公式(1)
121.服务端根据计算出的queueid放入对应的队列中处理,可以使每一个客户端请求串行处理。
122.其中,主题管理器(topicmanager),由多个map实现,在内存中对客户端发布/订阅主题(topic)信息进行管理,服务端的主题管理器对topic存储结构进行优化,可以使用分段map数据结构存储topic与订阅者(subscribers)(如发起订阅请求的对象),通过该存储
方案,有利于降低服务端处理订阅信息的锁粒度,提升请求处理qps。其中,主题管理器所采用的数据结构如图6所示。可选地,主题管理器具体实现如下:
123.(1)每一个map(如map 0或map1)中的key为topic字符串,value为subscriber(可以对应于对象名,username),保存topic与订阅者关系;如图所示,当前map 0中存储有主题0和订阅者0,以及主题2和订阅者1之间的对应关系。
124.(2)可以由多个map(如1000个,map的数量可以根据实际需求调整,本技术实施例对此不作限定)组成,通过多个map细分分锁粒度,提高主题管理器的处理速度,并提升请求qps。
125.其中,权限校验模块(authchecker),对客户端发起的请求(如连接、订阅、发布等请求)进行权限校验(如图5所示),权限校验模块内部数据结构为map,key为对象信息(如对象名,uesrname),value为该key所对应的哈希值密码、可订阅信息主题列表、可发布信息主题列表等。
126.下面针对本技术实施例中关于客户端发起的连接请求处理的具体过程进行说明。
127.在一可行的实施例中,在步骤s101通过长连接通道接收第一客户端发出的目标请求之前,还包括步骤s001-s003:
128.步骤s001:接收所述第一客户端通过消息队列遥测传输协议发起的连接请求,建立传输控制协议或安全套接层的长连接,以通过与所述第一客户端对应的长连接通道传输信息;所述连接请求携带有连接信息。
129.具体地,第一客户端可以通过mqtt协议,与服务端发起连接请求,以建立tcp/tcp ssl长连接。在建立长连接后,服务端可以调用长连接通道实现与第一客户端之间的信息传输。
130.步骤s002:基于所述连接信息中的第一对象信息与预设密码信息进行校验操作。
131.具体地,服务端可以获取连接信息(如mqtt连接包)中的第一对象信息(如对象名username)和预设密码信息(如密码password),继而服务端可以将password进行sha256哈希算法运算,算出目标哈希值(sha256password);并将第一对象信息与后端数据库中预存对象信息(如对象名dbusername)进行匹配,以及将目标哈希值(dbsha256password)与后端数据库中预存哈希值进行匹配。其中,哈希算法可以表达如下公式(2):
132.sha256password=sha256(password)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
......公式(2)
134.其中,数据库(database),简而言之可视为电子化的文件柜,存储电子文件的处所,可以对文件中的数据进行新增、查询、更新、删除等操作。数据库是以一定方式储存在一起、能与多个使用者共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
135.步骤s003:若所述第一对象信息与预存对象信息匹配,且目标哈希值与第一客户端对应的预存哈希值匹配,则确定校验成功并采用map数据结构以所述第一客户端的身份标识为键值存储所述连接信息;否则,确定校验失败并断开所述长连接;其中,目标哈希值是基于预设密码信息进行哈希运算确定的。
136.具体地,如果数据库中存在第一对象信息(即对象名username),且数据库中对应的预存哈希值密码等于目标哈希值sha256password,则可以确定通过校验(也即权限校验模块可以确定第一客户端具有连接权限),否则校验失败,断开客户端连接(如上述步骤s001所指的tcp/tcp ssl长连接)。其中,连接权限校验通过后,服务端中的客户端管理器
(clientmanager)可以保存客户端的身份标识(client id)和连接信息。
137.下面针对本技术实施例中与服务器的内部线程池相关的具体操作进行说明。
138.在一可行的实施例中,在步骤s102中基于所述目标任务信息调用与所述第一客户端对应的目标队列线程,包括以下步骤a1-a2:
139.步骤a1:基于所述目标任务信息中所述第一客户端的身份标识以及线程池所包括的队列数量进行哈希运算,确定与所述第一客户端对应的目标队列标识。
140.步骤a2:基于所述目标队列标识调用相应的目标队列线程,以通过所述目标队列线程串行处理所述目标队列线程中的各项请求。
141.具体地,如图5所示,可以采用如上述公式(1)所示的哈希算法基于第一客户端的身份标识与内部线程池中所包括的队列数量,确定出相应的目标队列标识。在确定出目标队列标识后,可以将目标任务放入相应的队列中,由对应的目标队列线程以串行处理的方式执行队列所包含的任务。
142.下面针对本技术实施例中与发布或订阅相关的权限校验的具体过程进行说明。
143.在一可行的实施例中,所述目标任务信息包括第一对象信息和主题信息;步骤s102中通过所述目标队列线程基于预存任务信息执行与所述目标请求相应的目标任务,包括步骤b1-b3:
144.步骤b1:通过所述目标队列线程在预存任务信息中查询与所述第一对象信息对应的主题列表中是否包括所述主题信息。
145.步骤b2:若是,执行与所述目标请求相应的目标任务时输出包括任务响应信息的结果信息。
146.步骤b3:若否,执行与所述目标请求相应的目标任务时输出包括任务执行失败信息的结果信息。
147.其中,所述预存任务信息包括采用至少一段map数据结构所存储的主题信息与对象信息之间的对应关系;主题信息为遍历键,对象信息为遍历值。
148.针对上述实施例所执行的步骤b1-b3,下面以目标请求为订阅请求和发布请求,分别说明各项操作步骤的具体实施内容。
149.目标请求为订阅请求:
150.第一客户端与服务端连接成功后(也即服务端可以为第一客户端提供长连接服务)可以将目标任务信息(此时目标任务信息可以为订阅信息)携带于订阅请求中进行发送,订阅信息可以通过mqtt订阅包(subscribepacket)的形式呈现,该订阅包中可以包含第一对象信息、第一客户端的身份标识、消息id、以及第一客户端请求订阅的主题信息等。
151.服务端接收到mqtt订阅包,解析该订阅包,可以获取到第一客户端的身份标识和主题信息。继而,服务端可以从数据库中获取该客户端的对象名username所对应的topic权限信息,如果数据库中该username可订阅的topic列表中包含此次订阅包中的主题信息,则可以确定通过校验,否则校验失败。可选地,校验过程可以在权限校验模块中进行。
152.当校验通过时,执行步骤b2输出包括任务响应信息的结果信息,其中,任务响应信息可以是订阅响应包(subackpacket);此时,通过执行步骤s103可以将任务响应信息传输至第一客户端,让第一客户端感知已成功订阅相关主题。
153.当校验失败时,执行步骤b3输出包括任务执行失败信息的结果信息,其中,任务执
行失败信息可以包括订阅失败错误码;此时,通过执行步骤s103可以将任务执行失败信息传输至第一客户端,让第一客户端感知订阅相关主题失败。
154.目标请求为发布请求:
155.第一客户端可以将目标任务信息(此时目标任务信息可以为与发布请求相关的信息)携带于发布请求中进行发送,目标任务信息可以通过mqtt发布包(publishpacket)的形式呈现,发布包中可以包含发布信息(如消息体内容payload)、消息id、第一客户端的身份标识、第一对象信息、以及第一客户端请求发布的主题信息等。
156.服务端接收到mqtt发布包,解析该发布包,可以获取到第一客户端的身份标识和主题信息。继而,服务端可以从数据库中获取该客户端的对象名username所对应的发布topic权限信息,如果数据库中该username可发布的topic列表中包含此次发布包中的主题信息,则可以确定通过校验,否则校验失败。可选地,校验过程可以在权限校验模块中进行。
157.当校验通过时,执行步骤b2输出包括任务响应信息的结果信息,其中,任务响应信息可以是发布响应包;此时,通过执行步骤s103可以将任务响应信息传输至第一客户端,让第一客户端感知已成功发布相关的发布信息。
158.当校验失败时,执行步骤b3输出包括任务执行失败信息的结果信息,其中,任务执行失败信息可以包括发布失败错误码;此时,通过执行步骤s103可以将任务执行失败信息传输至第一客户端,让第一客户端感知发布信息失败。
159.在一可行的实施例中,所述目标请求为订阅请求或发布请求。
160.当所述目标请求为订阅请求,且输出任务响应信息时,步骤s102中执行所述目标任务包括步骤c1:
161.步骤c1:在所述预存任务信息中存储所述第一对象信息与所述主题信息的对应关系。
162.具体地,在确定第一客户端具有订阅权限时,可以在主题管理器topicmanager中保存当前订阅的主题信息和第一客户端之间的订阅关系。
163.当所述目标请求为发布请求,且输出任务响应信息时,步骤s102中执行所述目标任务包括步骤d1-d3:
164.步骤d1:获取所述目标任务信息中的发布信息和主题信息。
165.具体地,在确定第一客户端具有发布权限时,可以获取目标任务信息中的发布信息(消息体内容payload)和与发布信息相应的主题信息。
166.步骤d2:在所述预存任务信息中查询与所述主题信息具有对应关系的第二对象信息。
167.具体地,由于预存任务信息(该信息由主题管理器进行管理)中存储有各主题信息与各客户端之间的订阅关系,因此,可以在主题管理器topicmanager中查询该topic(发布请求所携带的目标任务信息中的主题信息)的至少一个第二对象信息(订阅者subscribers)。
168.步骤d3:向与所述第二对象信息相应的第二客户端发送所述发布信息。
169.具体地,服务端可以根据第二对象信息获取到相应的第二客户端信息,继而与第二客户端连接后向第二客户端发送发布信息;也即将第一客户端所需发布的发布信息传输至与该发布信息的主题信息具有订阅关系的至少一个第二客户端中,完成消息发布过程的
操作。
170.在一可行的实施例中,本技术实施例还提供数据加密方案,具体地,当接收到的发布信息为所述第一客户端采用高级加密标准aes算法加密后的加密信息时,步骤d1中获取所述目标任务信息中的发布信息,包括步骤d11-d12:
171.步骤d11:获取所述目标任务信息中的所述加密信息。
172.步骤d12:通过所述aes算法解密所述加密信息得到所述发布信息。
173.具体地,服务端与客户端传输信息过程中对mqtt协议中的payload字段内容进行aes加密,可以在获取到加密报文后进行解密,以有效保证数据传输安全性。可选地,加密过程可以发生在第一客户端和服务端,如第一客户端将发布信息加密后传输至服务端,或服务端将发布信息加密后传输至第二客户端;解密过程可以发生在服务端和第二客户端,如服务端解密由第一客户端加密的发布信息,或第二客户端解密由服务端加密的发布信息。另外,服务端还可以不参与加密或解密过程,而是直接将第一客户端加密的发布信息传输至第二客户端,由第二客户端实现对第一客户端加密的发布信息的解密。
174.其中,所涉及的加密算法可以表达如下公式(3)所示:
175.encryptedpayload=aes.encrypt(payload)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
......公式(3)
177.其中,所涉及的解密算法可以表达如下公式(4)所示:
178.decryptedpayload=aes.decrypt(payload)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
......公式(4)
180.在一数据加密的方案中,本技术实施例的服务端支持mqtt ssl连接,也即客户端通过mqtt ssl连接,连接成功后进行安全通信;可以理解的是,采用ssl连接时实现的是全链路加密,可以有效提高数据的安全性。
181.在一可行的实施例中,本技术实施例还提供一种数据压缩方案,具体地,当接收到的发布信息为所述第一客户端采用压缩算法压缩后的压缩信息时,步骤d1中获取所述目标任务信息中的发布信息,包括步骤d13-d14:
182.步骤d13:获取所述目标任务信息中的所述压缩信息。
183.步骤d14:通过所述压缩算法解压所述压缩信息得到所述发布信息。
184.具体地,第一客户端发送发布请求前,对目标任务信息(发布包publishpacket)中的发布信息(payload字段内容)进行压缩,可以采用gzip压缩算法。服务端在接收到第一客户端的目标任务信息后,可以对发布信息进行解压缩。
185.其中,所涉及的压缩算法可以表达如下公式(5)所示:
186.compressedpayload=gzip.encode(payload)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
......公式(5)
188.其中,所涉及的解压缩算法可以表达如下公式(6)所示:
189.payload=gzip.decode(compressedpayload)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
......公式(6)
191.本技术实施例可以有效解决客户端与服务端通信请求频繁的情况下,服务整体占用带宽较高的问题,通过数据压缩方案,可以有效减少了请求体长度,降低带宽占用比例。
192.下面针对本技术实施例中客户端下线请求处理的具体过程进行说明。
193.在一可行的实施例中,长连接的任务执行方法还包括步骤e1-e2:
194.步骤e1:接收所述第一客户端发出的下线请求;所述下线请求携带有断连信息。
195.步骤e2:基于所述断连信息关闭与所述第一客户端对应的长连接通道,并清除与所述第一客户端相关的信息。
196.具体地,第一客户端可以将断连信息(如mqtt断连包disconnectpacket)携带于下线请求中向服务端发送。服务端在接收到第一客户端发送的断连信息时,关闭第一客户端的长连接,同时通知客户端管理器(clientmanager)组件清除与第一客户端相关的信息,并通知主题管理器(topicmanager)组件清除与第一客户端相关的主题信息和订阅信息。
197.如图2所示,本技术实施例还提供一种服务分配方法,可以应用于负载均衡设备,包括步骤s201:
198.步骤s201:基于负载均衡策略,将所接收的各个客户端连接分别分发至对应的服务器;所述服务器所在的服务器集群中包括至少一个服务器。
199.其中,所述服务器执行上述任一实施例所示的长连接的任务执行方法。
200.具体地,如图4所示,在客户端与服务器之间还可以设置一个中转设备,如负载均衡设备clb,客户端连接到clb,再由clb自动进行流量分发,连接到后端服务器。
201.在提供服务的后台服务端可以部署多个后端服务节点hmq_broker(如图4所示的服务器1、服务器2......服务器n),并将所有后端服务节点挂载到clb上,统一由clb进行流量分发,同时clb可根据各后端服务器的连接数进行负载均衡,保证各后台服务器连接数的均衡。
202.可以理解的是,负载均衡设备管理了由n个服务器组成的服务器集群。针对该服务器集群,本技术实施例提供集群扩容、集群缩容的集群部署方案。
203.集群扩容方案:增加后端服务节点部署的数量,并且将新增的服务节点挂载到clb,以实现集群扩容。
204.集群缩容方案:减少后端服务节点部署的数量,clb可自动识别已下线的服务节点,以实现集群缩容。
205.在本技术实施例中,提供的上述集群部署方案支持服务端横向扩容或缩容,有利于提升服务的可扩展性和可用性。
206.在一可行的实施例中,如图7所示,在本技术实施例中,客户端一次消息传递(也即在一次长连接中)可以包括四个过程:发起连接、发起订阅请求、发起发布请求、以及断开连接;服务端针对上述四个过程的处理可以参考上述对应实施例的具体说明。
207.在一可行的实施例中,本技术实施例中所指的客户端的身份标识可以是基于客户端地址确定的,也可以是基于其他与客户端相关的信息确定的;如图5所示,当客户端管理器在通过map保存客户端信息时,可以赋予各客户端对应的身份标识,如可以针对客户端a记录其身份标识为client 1,针对客户端b记录其身份标识为client 2等,可以理解的是,每一客户端具有各自独立的身份标识。在此基础上,服务端中所存储或所能获取到的与客户端相关的信息均可以与客户端的身份标识建立关联关系;如基于获取到的客户段的身份标识可以确定对应的对象信息(如对象名username)等。
208.可选的,本技术提供的方法中所涉及的数据(比如目标任务信息、客户端身份标识、用户信息、连接信息、密码信息、主题信息等)可以保存于区块链中。本技术所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一定量的处理数据,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
209.本技术实施例的操作过程中,还涉及云技术(cloud technology),云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术(cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
210.可以理解的是,上述实施例所进行的计算(如权限校验过程、数据加密过程、数据压缩过程等所涉及的计算),可以采用云计算实现。云计算(cloud computing)指it基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是it和软件、互联网相关,也可是其他服务。云计算是网格计算(grid computing)、分布式计算(distributedcomputing)、并行计算(parallel computing)、效用计算(utility computing)、网络存储(network storage technologies)、虚拟化(virtualization)、负载均衡(load balance)等传统计算机和网络技术发展融合的产物。随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
211.另外,上述实施例中服务端对信息(如客户端信息、订阅关系等)的存储可以采用云存储实现。云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(id,id entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(raid,redundant array of independent disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
212.需要说明的是,在本技术的可选实施例中,所涉及到的对象信息等相关的数据,当本技术以上实施例运用到具体产品或技术中时,需要获得对象许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。也就是说,本技术实
施例中如果涉及到与对象有关的数据,这些数据需要经由对象授权同意、且符合国家和地区的相关法律法规和标准的情况下获取的。
213.基于上述长连接的任务执行方法实施例相同的原理,本技术实施例还提供了一种长连接的任务执行装置,如图8中所示,该长连接的任务执行装置100可以包括接收模块101、调用模块102和反馈模块103。
214.其中,接收模块101,用于通过长连接通道接收第一客户端发出的目标请求;所述目标请求携带有目标任务信息;调用模块102,用于基于所述目标任务信息调用与所述第一客户端对应的目标队列线程,并通过所述目标队列线程基于预存任务信息执行与所述目标请求相应的目标任务;其中,所述预存任务信息采用字典数据结构存储;反馈模块103,用于基于所述目标请求,通过所述长连接通道将所述目标队列线程执行所述目标任务的结果信息反馈至所述第一客户端;其中,所述长连接通道与所述第一客户端基于客户端的身份标识建立有对应关系。
215.在一可行的实施例中,接收模块101用于执行在所述通过长连接通道接收第一客户端发出的目标请求之前,还用于:
216.接收所述第一客户端通过消息队列遥测传输协议发起的连接请求,建立传输控制协议或安全套接层的长连接,以通过与所述第一客户端对应的长连接通道传输信息;所述连接请求携带有连接信息;
217.基于所述连接信息中的第一对象信息与预设密码信息进行校验操作;
218.若所述第一对象信息与预存对象信息匹配,且目标哈希值与对应的预存哈希值匹配,则确定校验成功并采用字典数据结构以所述第一客户端的身份标识为键值存储所述连接信息;否则,确定校验失败并断开所述长连接;其中,所述目标哈希值是基于所述预设密码信息进行哈希运算确定的。
219.在一可行的实施例中,调用模块102在用于执行基于所述目标任务信息调用与所述第一客户端对应的目标队列线程时,具体用于:
220.基于所述目标任务信息中所述第一客户端的身份标识以及线程池所包括的队列数量进行哈希运算,确定与所述第一客户端对应的目标队列标识;
221.基于所述目标队列标识调用相应的目标队列线程,以通过所述目标队列线程串行处理所述目标队列线程中的各项请求。
222.在一可行的实施例中,所述目标任务信息包括第一对象信息和主题信息;调用模块102在用于通过所述目标队列线程基于预存任务信息执行与所述目标请求相应的目标任务时,具体用于:
223.通过所述目标队列线程在预存任务信息中查询与所述第一对象信息对应的主题列表中是否包括所述主题信息;
224.若是,执行与所述目标请求相应的目标任务时输出包括任务响应信息的结果信息;
225.若否,执行与所述目标请求相应的目标任务时输出包括任务执行失败信息的结果信息;
226.其中,所述预存任务信息包括采用至少一段字典数据结构所存储的主题信息与对象信息之间的对应关系;主题信息为遍历键,对象信息为遍历值。
227.在一可行的实施例中,所述目标请求为订阅请求或发布请求;
228.当所述目标请求为订阅请求,且输出任务响应信息时,调用模块102在用于执行所述目标任务时,具体用于:在所述预存任务信息中存储所述第一对象信息与所述主题信息的对应关系;
229.当所述目标请求为发布请求,且输出任务响应信息时,调用模块102在用于执行所述目标任务时,具体用于:获取所述目标任务信息中的发布信息和主题信息;在所述预存任务信息中查询与所述主题信息具有对应关系的第二对象信息;向与所述第二对象信息相应的第二客户端发送所述发布信息。
230.在一可行的实施例中,当接收到的发布信息为所述第一客户端采用高级加密标准aes算法加密后的加密信息时,调用模块102在用于获取所述目标任务信息中的发布信息时,具体用于:
231.获取所述目标任务信息中的所述加密信息;
232.通过所述高级加密标准算法解密所述加密信息得到所述发布信息。
233.在一可行的实施例中,当接收到的发布信息为所述第一客户端采用压缩算法压缩后的压缩信息时,调用模块102在用于获取所述目标任务信息中的发布信息时,具体用于:
234.获取所述目标任务信息中的所述压缩信息;
235.通过所述压缩算法解压所述压缩信息得到所述发布信息。
236.在一可行的实施例中,该装置还包括断连模块,用于:
237.接收所述第一客户端发出的下线请求;所述下线请求携带有断连信息;
238.基于所述断连信息关闭与所述第一客户端对应的长连接通道,并清除与所述第一客户端相关的信息。
239.基于上述服务分配方法实施例相同的原理,本技术实施例还提供了一种服务分配装置,如图9中所示,该服务分配装置200可以包括分发模块201。
240.其中,分发模块201,用于基于负载均衡策略,将所接收的各个客户端连接分别分发至对应的服务器;所述服务器所在的服务器集群中包括至少一个服务器;其中,所述服务器执行上述实施例中的长连接的任务执行方法。
241.本技术实施例的装置可执行本技术实施例所提供的方法,其实现原理相类似,本技术各实施例的装置中的各模块所执行的动作是与本技术各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
242.本技术实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现长连接的任务执行方法的步骤,与相关技术相比:
243.一方面:本技术实施例提供一种长连接的任务执行方法,可以应用于服务器,具体地,在长连接通道与第一客户端基于客户端的身份标识建立有对应关系时,也即第一客户端与服务器之间建立有长连接,可以通过长连接通道接收第一客户端发出的目标请求,该目标请求携带有目标任务信息;继而,基于目标任务信息调用与第一客户端对应的目标队列线程执行与目标请求相应的目标任务;在此基础上,基于目标请求,通过长连接通过将目标队列线程,并通过目标队列线程基于预存任务信息执行目标任务的结果信息反馈至第一
客户端。相对于现有技术,本技术的实施将任务执行方法的实施主体从整体架构做调整,首先针对客户端与服务器之间的长连接关系基于客户端的身份标识建立进行建立,继而采用调用队列线程的形式执行客户端所发起的目标请求对应的目标任务,并通过采用字典数据结构存储用于执行目标任务的预存任务信息,以通过提供一种高性能的架构而提高单一服务器所能支撑长连接的数量,并在此基础上,通过采用字典数据结构存储用于执行目标任务的预存任务信息,降低处理目标任务信息的锁粒度,提升请求处理的每秒查询率,以降低客户端的请求延时,提供高性能通信。
244.另一方面:本技术实施例还提供一种服务分配方法,可以应用于管理各单一服务器的负载均衡设备,负载均衡设备所管理的服务器集群中包括至少一个服务器;具体地,基于负载均衡策略,将所接收的各个客户端连接分别分发至对应的服务器中,而各服务器可以执行上述实施例所示的长连接的任务执行方法。本技术的实施可以在服务器集群中部署多台服务器,也即对应于多个后端服务节点,并将各后端服务节点挂载在负载均衡设备上,由负载均衡设备根据负载均衡策略进行流量分发,有利于均衡各单一服务器所支撑长连接数的均衡;在该基础上,通过增加或减少服务器集群中所部署的服务器数量,可以实现集群扩容或缩容,有利于提升服务的可扩展性和可用性。
245.在一个可选实施例中提供了一种电子设备,如图10所示,图10所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本技术实施例的限定。
246.处理器4001可以是cpu(central processing unit,中央处理器),通用处理器,dsp(digital signal processor,数据信号处理器),asic(application specific integrated circuit,专用集成电路),fpga(field programmable gate array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
247.总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
248.存储器4003可以是rom(read only memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(random access memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electrically erasable programmable read only memory,电可擦可编程只读存储器)、cd-rom(compact disc read only memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
249.存储器4003用于存储执行本技术实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
250.其中,电子设备包括但不限于:服务器、终端、车载设备。
251.本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
252.本技术实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
253.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除图示或文字描述以外的顺序实施。
254.应该理解的是,虽然本技术实施例的流程图中通过箭头指令各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指令的顺序。除非本文中有明确的说明,否则在本技术实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本技术实施例对此不限制。
255.以上所述仅是本技术部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术的方案技术构思的前提下,采用基于本技术技术思想的其他类似实施手段,同样属于本技术实施例的保护范畴。
技术特征:
1.一种长连接的任务执行方法,其特征在于,包括:通过长连接通道接收第一客户端发出的目标请求;所述目标请求携带有目标任务信息;基于所述目标任务信息调用与所述第一客户端对应的目标队列线程,并通过所述目标队列线程基于预存任务信息执行与所述目标请求相应的目标任务;其中,所述预存任务信息采用字典数据结构存储;基于所述目标请求,通过所述长连接通道将所述目标队列线程执行所述目标任务的结果信息反馈至所述第一客户端;其中,所述长连接通道与所述第一客户端基于客户端的身份标识建立有对应关系。2.根据权利要求1所述的方法,其特征在于,在所述通过长连接通道接收第一客户端发出的目标请求之前,还包括:接收所述第一客户端通过消息队列遥测传输协议发起的连接请求,建立传输控制协议或安全套接层的长连接,以通过与所述第一客户端对应的长连接通道传输信息;所述连接请求携带有连接信息;基于所述连接信息中的第一对象信息与预设密码信息进行校验操作;若所述第一对象信息与预存对象信息匹配,且目标哈希值与所述第一客户端对应的预存哈希值匹配,则确定校验成功并采用字典数据结构以所述第一客户端的身份标识为键值存储所述连接信息;否则,确定校验失败并断开所述长连接;其中,所述目标哈希值是基于所述预设密码信息进行哈希运算确定的。3.根据权利要求1所述的方法,其特征在于,所述基于所述目标任务信息调用与所述第一客户端对应的目标队列线程,包括:基于所述目标任务信息中所述第一客户端的身份标识以及线程池所包括的队列数量进行哈希运算,确定与所述第一客户端对应的目标队列标识;基于所述目标队列标识调用相应的目标队列线程,以通过所述目标队列线程串行处理所述目标队列线程中的各项请求。4.根据权利要求1所述的方法,其特征在于,所述目标任务信息包括第一对象信息和主题信息;所述通过所述目标队列线程基于预存任务信息执行与所述目标请求相应的目标任务,包括:通过所述目标队列线程在预存任务信息中查询与所述第一对象信息对应的主题列表中是否包括所述主题信息;若是,执行与所述目标请求相应的目标任务时输出包括任务响应信息的结果信息;若否,执行与所述目标请求相应的目标任务时输出包括任务执行失败信息的结果信息;其中,所述预存任务信息包括采用至少一段字典数据结构所存储的主题信息与对象信息之间的对应关系;主题信息为遍历键,对象信息为遍历值。5.根据权利要求4所述的方法,其特征在于,所述目标请求为订阅请求或发布请求;当所述目标请求为订阅请求,且输出任务响应信息时,执行所述目标任务包括:在所述预存任务信息中存储所述第一对象信息与所述主题信息的对应关系;当所述目标请求为发布请求,且输出任务响应信息时,执行所述目标任务包括:获取所
述目标任务信息中的发布信息和主题信息;在所述预存任务信息中查询与所述主题信息具有对应关系的第二对象信息;向与所述第二对象信息相应的第二客户端发送所述发布信息。6.根据权利要求5所述的方法,其特征在于,当接收到的发布信息为所述第一客户端采用高级加密标准算法加密后的加密信息时,所述获取所述目标任务信息中的发布信息,包括:获取所述目标任务信息中的所述加密信息;通过所述高级加密标准算法解密所述加密信息得到所述发布信息。7.根据权利要求5所述的方法,其特征在于,当接收到的发布信息为所述第一客户端采用压缩算法压缩后的压缩信息时,所述获取所述目标任务信息中的发布信息,包括:获取所述目标任务信息中的所述压缩信息;通过所述压缩算法解压所述压缩信息得到所述发布信息。8.根据权利要求1所述的方法,其特征在于,该方法还包括:接收所述第一客户端发出的下线请求;所述下线请求携带有断连信息;基于所述断连信息关闭与所述第一客户端对应的长连接通道,并清除与所述第一客户端相关的信息。9.一种长连接的任务执行装置,其特征在于,包括:接收模块,用于通过长连接通道接收第一客户端发出的目标请求;所述目标请求携带有目标任务信息;调用模块,用于基于所述目标任务信息调用与所述第一客户端对应的目标队列线程,并通过所述目标队列线程基于预存任务信息执行与所述目标请求相应的目标任务;其中,所述预存任务信息采用字典数据结构存储;反馈模块,用于基于所述目标请求,通过所述长连接通道将所述目标队列线程执行所述目标任务的结果信息反馈至所述第一客户端;其中,所述长连接通道与所述第一客户端基于客户端的身份标识建立有对应关系。10.一种电子设备,其特征在于,包括存储器和处理器,其中,所述存储器中存储有计算机程序,所述处理器在运行所述计算机程序时用于执行权利要求1至8中任一项所述的方法。11.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序,所述计算机程序在处理器中运行时,所述处理器用于执行权利要求1至8中任一项所述的方法。12.一种计算机程序产品,其特征在于,所述计算机产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法。
技术总结
本申请实施例提供了一种长连接的任务执行方法、装置及相关设备,涉及物联网技术领域;可应用于消息推送、即时通讯服务、物联网通讯服务等场景。长连接的任务执行方法包括:通过长连接通道接收第一客户端发出的目标请求;目标请求携带有目标任务信息;基于目标任务信息调用与第一客户端对应的目标队列线程,并通过目标队列线程基于采用字典数据结构存储的预存任务信息执行与目标请求相应的目标任务;基于目标请求,通过长连接通道将目标队列线程执行目标任务的结果信息反馈至第一客户端;其中,长连接通道与第一客户端基于客户端的身份标识建立有对应关系。本申请的实施可以支持客户端高并发请求。户端高并发请求。户端高并发请求。
技术研发人员:张伟 李万勇
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.03.09
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/