CN116800473A - 一种客户端与云服务通信方法、装置、存储介质以及系统 - Google Patents
一种客户端与云服务通信方法、装置、存储介质以及系统 Download PDFInfo
- Publication number
- CN116800473A CN116800473A CN202310521443.4A CN202310521443A CN116800473A CN 116800473 A CN116800473 A CN 116800473A CN 202310521443 A CN202310521443 A CN 202310521443A CN 116800473 A CN116800473 A CN 116800473A
- Authority
- CN
- China
- Prior art keywords
- server
- connection
- available
- mqtt
- communication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004891 communication Methods 0.000 title claims abstract description 134
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000004590 computer program Methods 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 18
- 239000000853 adhesive Substances 0.000 claims description 5
- 230000001070 adhesive effect Effects 0.000 claims description 5
- 238000011084 recovery Methods 0.000 claims description 5
- 230000006872 improvement Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/108—Network architectures or network communication protocols for network security for controlling access to devices or network resources when the policy decisions are valid for a limited amount of time
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种客户端与云服务通信方法、装置、存储介质以及系统。通过获取可用MQTT服务端地址列表,计算各个可用MQTT服务端的连接权重值进行本地保存,从中选择连接权重值最高的可用MQTT服务端作为待连接服务端进行通信连接,并根据通信连接情况对可用MQTT服务端地址列表待连接服务端的连接权重值进行更新,以确保客户端弱网环境及复杂网络环境下,所调度连接的始终是MQTT集群中连接权重值最高的可用MQTT服务端,该通信方法、装置、存储介质以及系统提升了在弱网环境及复杂网络环境下的客户端与云服务的通信连接稳定性。
Description
技术领域
本发明涉及客户端与云服务通信技术领域,尤其涉及一种客户端与云服务通信方法、装置、计算机可读存储介质及系统。
背景技术
MQTT是一种轻量级的通信协议,被广泛应用在物联网设备的通信中。在我们的iot产品,app产品,SDK产品中应用场景广泛。然而,随着客户物联网设备数量的增加,服务端MQTT broker连接数也随之增加,导致单机连接数有突破200万的风险。而在SDK类产品上,由于集成SDK的互联网APP的装机量可以达到上亿,更加有必要搭建MQTT集群。
在现有技术中,通常采用MQTT集群以将单机MQTT连接数的压力分散到多个节点上,从而提高MQTT服务的可用性和稳定性。在MQTT集群中,多个MQTT Broker节点可以协同工作,共同处理物联网设备的通信请求。当一个节点出现故障时,其他节点可以接替其工作,保证MQTT服务的连续性和可靠性。但由服务端做出的负载调度很可能对于弱网环境场景或设备处于移动状态的复杂网络场景应对不足。基于此,在基于MQTT实现的端侧SDK做出优化设计是必须的,而服务层也需要进行相应的支持。
但是,现有技术仍存在如下缺陷:1、单纯的MQTT客户端+MQTT broker的实现方案无法满足大量物联网设备或手机同时连接的需求;2、服务端做MQTT集群可以满足大批量设备同时登陆的需求,但同时有可能由于入口服务的阻塞或设备处于复杂的网络状态导致无法连接;3、客户端没有自主调度能力,造成客户端可能长期断连,且无法诊断网络状态的问题。
因此,当前需要一种客户端与云服务通信方法、装置、计算机可读存储介质以及系统,从而克服现有技术中存在的上述缺陷。
发明内容
本发明实施例提供一种客户端与云服务通信方法、装置、计算机可读存储介质以及系统,从而提升在弱网环境及复杂网络环境下的客户端与云服务的通信连接稳定性。
本发明一实施例提供一种客户端与云服务通信方法,所述通信方法包括:获取当前负载信息以及可用MQTT服务端地址列表,并根据各个可用MQTT服务端的连接权重值,确定待连接服务端的服务端地址;所述可用MQTT服务端地址列表包括若干个可用MQTT服务端的地址以及连接权重值;与所述待连接服务端进行通信连接,判断通信连接是否成功,并根据所述服务端地址以及预设的权重更新方法,更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值;若通信连接不成功,则重复上述步骤,直至与所述待连接服务端通信连接成功。
作为上述方案的改进,在根据各个可用MQTT服务端的连接权重值,确定待连接服务端的服务端地址之前,所述通信方法还包括:通过预设的权重计算方法,根据所述当前负载信息以及所述可用MQTT服务端地址列表,计算各个可用MQTT服务端的连接权重值。
作为上述方案的改进,根据各个可用MQTT服务端的连接权重值,确定待连接服务端的服务端地址,具体包括:将连接权重值最高的可用MQTT服务端作为待连接服务端,并获取所述待连接服务端的服务端地址。
作为上述方案的改进,根据所述服务端地址以及预设的权重更新方法,更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值,具体包括:根据所述服务端地址,与所述待连接服务端进行通信连接,实时获取与所述待连接服务端之间的连接情况;根据所述连接情况,重新计算并更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值。
作为上述方案的改进,根据所述当前负载信息以及所述可用MQTT服务端地址列表,计算各个可用MQTT服务端的连接权重值,具体包括:获取可用MQTT服务端的粘性会话指向地址,并根据所述当前负载信息获取ping值平均时间以及最新连接时间;根据所述粘性会话指向地址、所述ping值平均时间以及所述最新连接时间,对可用MQTT服务端进行ping值评分以对应获得ping值得分,对可用MQTT服务端进行连接时间评分以对应获得连接时间得分,对可用MQTT服务端进行粘性会话评分以对应获得粘性会话得分;根据预设的加权计算公式、所述ping值得分、连接时间得分以及粘性会话得分,计算获得可用MQTT服务端的连接权重值。
作为上述方案的改进,根据所述连接情况,重新计算并更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值,具体包括:根据所述连接情况获取当前通信耗时,并判断是否与所述待连接服务端通信连接成功;若与所述待连接服务端通信连接成功,则根据所述当前通信耗时,更新所述待连接服务端的最新连接时间,根据更新后的最新连接时间,重新计算并更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值;若与所述待连接服务端通信连接不成功,则将所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值设置为预设值。
作为上述方案的改进,在将所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值设置为预设值之后,所述通信方法还包括:在预设时间段内不再选择所述待连接服务端进行连接,并在所述预设时间段后,根据预设的权重计算方法,重新计算并更新所述待连接服务端的连接权重值。
作为上述方案的改进,所述可用MQTT服务端地址列表以预设的频率更新。
本发明另一实施例对应提供了一种客户端与云服务通信装置,所述通信装置包括通信选择单元、权重更新单元以及重新连接单元,其中,所述通信选择单元用于获取当前负载信息以及可用MQTT服务端地址列表,并根据各个可用MQTT服务端的连接权重值,确定待连接服务端的服务端地址;所述可用MQTT服务端地址列表包括若干个可用MQTT服务端的地址以及连接权重值;所述权重更新单元用于与所述待连接服务端进行通信连接,判断通信连接是否成功,并根据所述服务端地址以及预设的权重更新方法,更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值;所述重新连接单元用于若通信连接不成功,则重复上述步骤,直至与所述待连接服务端通信连接成功。
作为上述方案的改进,所述通信装置还包括权重计算单元,所述权重计算单元用于通过预设的权重计算方法,根据所述当前负载信息以及所述可用MQTT服务端地址列表,计算各个可用MQTT服务端的连接权重值。
作为上述方案的改进,所述通信选择单元还用于:将连接权重值最高的可用MQTT服务端作为待连接服务端,并获取所述待连接服务端的服务端地址。
作为上述方案的改进,所述权重更新单元还用于:根据所述服务端地址,与所述待连接服务端进行通信连接,实时获取与所述待连接服务端之间的连接情况;根据所述连接情况,重新计算并更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值。
作为上述方案的改进,所述权重计算单元还用于:获取可用MQTT服务端的粘性会话指向地址,并根据所述当前负载信息获取ping值平均时间以及最新连接时间;根据所述粘性会话指向地址、所述ping值平均时间以及所述最新连接时间,对可用MQTT服务端进行ping值评分以对应获得ping值得分,对可用MQTT服务端进行连接时间评分以对应获得连接时间得分,对可用MQTT服务端进行粘性会话评分以对应获得粘性会话得分;根据预设的加权计算公式、所述ping值得分、连接时间得分以及粘性会话得分,计算获得可用MQTT服务端的连接权重值。
作为上述方案的改进,所述权重更新单元还用于:根据所述连接情况获取当前通信耗时,并判断是否与所述待连接服务端通信连接成功;若与所述待连接服务端通信连接成功,则根据所述当前通信耗时,更新所述待连接服务端的最新连接时间,根据更新后的最新连接时间,重新计算并更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值;若与所述待连接服务端通信连接不成功,则将所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值设置为预设值。
作为上述方案的改进,所述权重更新单元还用于:在预设时间段内不再选择所述待连接服务端进行连接,并在所述预设时间段后,根据预设的权重计算方法,重新计算并更新所述待连接服务端的连接权重值。
本发明另一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如前所述的客户端与云服务通信方法。
本发明另一实施例提供了一种客户端与云服务通信系统,所述通信系统包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如前所述的客户端与云服务通信方法。
作为上述方案的改进,所述通信系统还包括MQTT集群,所述MQTT集群包括多个标准MQTT服务端,以及一套负载均衡服务,所述负载均衡服务用于重连后的消息恢复以及粘性会话支持。
与现有技术相比,本技术方案存在如下有益效果:
本发明提供了一种客户端与云服务通信方法、装置、计算机可读存储介质以及系统,通过获取可用MQTT服务端地址列表,计算各个可用MQTT服务端的连接权重值进行本地保存,从中选择连接权重值最高的可用MQTT服务端作为待连接服务端进行通信连接,并根据通信连接情况对可用MQTT服务端地址列表待连接服务端的连接权重值进行更新,以确保客户端弱网环境及复杂网络环境下,所调度连接的始终是MQTT集群中连接权重值最高的可用MQTT服务端,该通信方法、装置、计算机可读存储介质以及系统提升了在弱网环境及复杂网络环境下的客户端与云服务的通信连接稳定性。
附图说明
图1是本发明一实施例提供的一种客户端与云服务通信方法的流程示意图;
图2是本发明一实施例提供的一种连接权重值计算规则流程图;
图3是本发明一实施例提供的一种客户端与云服务通信装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为明确本方案中的技术细节以及真实含义,此处首先对相关名词进行解释定义。
会话存储:每个MQTT客户端与MQTT服务端连接后,就会产生会话。通过订阅topic的方式,服务端可以向客户端发送信息。而当客户端断线后,需要通过该topic发送给客户端的内容消息会被缓存,等待下次用户上线。而如果下次上线后用户连接的并不是同一个MQTT服务,则该会话会丢失。因此服务端做全局的会话存储,已备在MQTT客户端更换了服务地址后,能够将会话迁移到新的MQTT服务并发送给客户端。
粘性会话:假设我们记录下MQTT客户端的特征(比如id),利用一个哈希表记录下当前客户端会话对应的服务地址,则下次客户端连接的时候优先分配该服务端,那么该客户端的会话就可以继续,而无需其他会话迁移操作。可以降低服务端压力。
具体实施例一
本发明实施例首先描述了一种客户端与云服务通信方法。图1是本发明一实施例提供的一种客户端与云服务通信方法的流程示意图。
如图1所示,所述通信方法包括:
S1:获取当前负载信息以及可用MQTT服务端地址列表,并根据各个可用MQTT服务端的连接权重值,确定待连接服务端的服务端地址。
所述可用MQTT服务端地址列表包括若干个可用MQTT服务端的地址以及连接权重值。
在一个实施例中,在根据各个可用MQTT服务端的连接权重值,确定待连接服务端的服务端地址之前,所述通信方法还包括:通过预设的权重计算方法,根据所述当前负载信息以及所述可用MQTT服务端地址列表,计算各个可用MQTT服务端的连接权重值。
在一个实施例中,根据各个可用MQTT服务端的连接权重值,确定待连接服务端的服务端地址,具体包括:将连接权重值最高的可用MQTT服务端作为待连接服务端,并获取所述待连接服务端的服务端地址。
在一个实施例中,根据所述当前负载信息以及所述可用MQTT服务端地址列表,计算各个可用MQTT服务端的连接权重值,具体包括:获取可用MQTT服务端的粘性会话指向地址,并根据所述当前负载信息获取ping值平均时间以及最新连接时间;根据所述粘性会话指向地址、所述ping值平均时间以及所述最新连接时间,对可用MQTT服务端进行ping值评分以对应获得ping值得分,对可用MQTT服务端进行连接时间评分以对应获得连接时间得分,对可用MQTT服务端进行粘性会话评分以对应获得粘性会话得分;根据预设的加权计算公式、所述ping值得分、连接时间得分以及粘性会话得分,计算获得可用MQTT服务端的连接权重值。
在实际应用中,每个服务端地址的权重由3个部分组成:ping平均时间,最近一次连接服务耗时(本文描述为“最新连接时间”),粘性会话指向地址。默认三者权重分别是5:5:3。为进一步描述权重计算过程,图2示出了本发明一实施例提供的一种连接权重值计算规则流程图。
其中,ping值评分具体为:在获取到候选列表后,SDK开启多线程对各个服务发起300ms的ping操作,对ping不成功(即超过300ms未返回)赋值0分,其他数值按照平均时间正序排序(数值小在前)。最低的得5分,其他的每位递减1分,低于1分的计1分。
连接时间评分具体为:拥有最近一次连接时间服务地址,连接建立时间在300ms以内的赋值5分,每低300ms降低1分,不低于0分。对未曾建立过连接的服务地址,赋值3分,对最近一次是失败的赋值0分。
粘性会话评分具体为:对于服务地址具备粘性会话能力的地址,此项直接赋值3分,对于其他地址则赋值0分。
在一个实施例中,预设的加权计算公式为:连接权重值=ping值得分+连接时间得分+粘性会话得分。
在一个实施例中,所述可用MQTT服务端地址列表以预设的频率更新。在实际应用中,可以定时(默认30分钟)从负载服务更新可用的服务列表。
S2:与所述待连接服务端进行通信连接,判断通信连接是否成功,并根据所述服务端地址以及预设的权重更新方法,更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值。
在一个实施例中,根据所述服务端地址以及预设的权重更新方法,更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值,具体包括:根据所述服务端地址,与所述待连接服务端进行通信连接,实时获取与所述待连接服务端之间的连接情况;根据所述连接情况,重新计算并更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值。
在一个实施例中,根据所述连接情况,重新计算并更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值,具体包括:根据所述连接情况获取当前通信耗时,并判断是否与所述待连接服务端通信连接成功;若与所述待连接服务端通信连接成功,则根据所述当前通信耗时,更新所述待连接服务端的最新连接时间,根据更新后的最新连接时间,重新计算并更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值;若与所述待连接服务端通信连接不成功,则将所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值设置为预设值。
在一个实施例中,在将所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值设置为预设值之后,所述通信方法还包括:在预设时间段内不再选择所述待连接服务端进行连接,并在所述预设时间段后,根据预设的权重计算方法,重新计算并更新所述待连接服务端的连接权重值。
S3:若通信连接不成功,则重复上述步骤,直至与所述待连接服务端通信连接成功。
下面将以一个示例,说明但不限定性地进一步描述本方案,参考图3,图3为在实际应用中SDK连接MQTT集群中的一个时的运行逻辑图。
在实际应用中,每次SDK重启后,它都会向负载均衡服务获取当前可用的MQTT服务端地址列表。同步过来的信息还包括当前客户端的粘性会话指向地址。SDK更新可用地址后,根据负载信息计算各个服务地址的权重信息,并保存到本地。选取权值最高的服务地址之后进入连接环节(参考图3)。
当SDK选定地址开始连接或因意外断线进行重连:当连接成功时,根据记录下的连接耗时计算该连接地址的权重。并更新本地服务列表;若连接失败:对将该待连接服务端的连接权重值降为预设值(例如,降为-1),并在预设时间段内(例如,5分钟)SDK不会选择该地址进行连接,与此同时,更新本地服务列表并从中选择最高权值的服务地址以重新开始连接,5分钟后将被设置为-1的服务重新赋值(参考权重计算部分)并更新本地列表。
本发明实施例描述了一种客户端与云服务通信方法,通过获取可用MQTT服务端地址列表,计算各个可用MQTT服务端的连接权重值进行本地保存,从中选择连接权重值最高的可用MQTT服务端作为待连接服务端进行通信连接,并根据通信连接情况对可用MQTT服务端地址列表待连接服务端的连接权重值进行更新,以确保客户端弱网环境及复杂网络环境下,所调度连接的始终是MQTT集群中连接权重值最高的可用MQTT服务端,该通信方法提升了在弱网环境及复杂网络环境下的客户端与云服务的通信连接稳定性。
具体实施例二
除上述方法外,本发明实施例还公开了一种客户端与云服务通信装置。图3是本发明一实施例提供的一种客户端与云服务通信装置的结构示意图。
如图3所示,所述通信装置包括通信选择单元11、权重更新单元12以及重新连接单元13。
其中,通信选择单元11用于获取当前负载信息以及可用MQTT服务端地址列表,并根据各个可用MQTT服务端的连接权重值,确定待连接服务端的服务端地址;所述可用MQTT服务端地址列表包括若干个可用MQTT服务端的地址以及连接权重值。
在一个实施例中,通信选择单元11还用于:将连接权重值最高的可用MQTT服务端作为待连接服务端,并获取所述待连接服务端的服务端地址。
权重更新单元12用于与所述待连接服务端进行通信连接,判断通信连接是否成功,并根据所述服务端地址以及预设的权重更新方法,更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值。
在一个实施例中,权重更新单元12还用于:根据所述服务端地址,与所述待连接服务端进行通信连接,实时获取与所述待连接服务端之间的连接情况;根据所述连接情况,重新计算并更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值。
在一个实施例中,权重更新单元12还用于:根据所述连接情况获取当前通信耗时,并判断是否与所述待连接服务端通信连接成功;若与所述待连接服务端通信连接成功,则根据所述当前通信耗时,更新所述待连接服务端的最新连接时间,根据更新后的最新连接时间,重新计算并更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值;若与所述待连接服务端通信连接不成功,则将所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值设置为预设值。
在一个实施例中,权重更新单元12还用于:在预设时间段内不再选择所述待连接服务端进行连接,并在所述预设时间段后,根据预设的权重计算方法,重新计算并更新所述待连接服务端的连接权重值。
重新连接单元13用于若通信连接不成功,则重复上述步骤,直至与所述待连接服务端通信连接成功。
在一个实施例中,通信装置还包括权重计算单元,所述权重计算单元用于通过预设的权重计算方法,根据所述当前负载信息以及所述可用MQTT服务端地址列表,计算各个可用MQTT服务端的连接权重值。
在一个实施例中,权重计算单元还用于:获取可用MQTT服务端的粘性会话指向地址,并根据所述当前负载信息获取ping值平均时间以及最新连接时间;根据所述粘性会话指向地址、所述ping值平均时间以及所述最新连接时间,对可用MQTT服务端进行ping值评分以对应获得ping值得分,对可用MQTT服务端进行连接时间评分以对应获得连接时间得分,对可用MQTT服务端进行粘性会话评分以对应获得粘性会话得分;根据预设的加权计算公式、所述ping值得分、连接时间得分以及粘性会话得分,计算获得可用MQTT服务端的连接权重值。
其中,所述通信装置集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。本发明另一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如前所述的客户端与云服务通信方法。
其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,单元之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例描述了一种客户端与云服务通信装置及计算机可读存储介质,通过获取可用MQTT服务端地址列表,计算各个可用MQTT服务端的连接权重值进行本地保存,从中选择连接权重值最高的可用MQTT服务端作为待连接服务端进行通信连接,并根据通信连接情况对可用MQTT服务端地址列表待连接服务端的连接权重值进行更新,以确保客户端弱网环境及复杂网络环境下,所调度连接的始终是MQTT集群中连接权重值最高的可用MQTT服务端,该通信装置及计算机可读存储介质提升了在弱网环境及复杂网络环境下的客户端与云服务的通信连接稳定性。
具体实施例三
除上述方法和装置外,本发明实施例还描述了一种客户端与云服务通信系统。
所述通信系统包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如前所述的客户端与云服务通信方法。
在一个实施例中,所述通信系统还包括MQTT集群,所述MQTT集群包括多个标准MQTT服务端以及一套负载均衡服务,所述负载均衡服务用于重连后的消息恢复以及粘性会话支持。
为进一步描述本技术方案,此处以在实际应用中的可能实施方案为例,示例但不限制性地进行说明。
在实际应用中,所述通信系统包括客户端、MQTT集群、客户端业务模块以及服务端业务模块。
其中,客户端除了包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序之外,还包含标准的MQTT协议实现(MQTT client)。以及定期刷新网络状态的定时任务,为各个MQTT节点计算权值并决定最终连接地址的调度服务。
MQTT集群包含多个标准的MQTT服务端,以及一套负载均衡服务,其中负载均衡服务保存了当前多个会话的上下文存储(用于重连后的消息恢复),粘性会话支持(用于存储客户端会话最近一次连接的服务地址.有利于会话恢复)。
客户端业务模块指的是iot设备或在手机APP中与SDK产生联系的业务模块,不属于本系统设计,标明外部业务与本SDK的解耦关系。
服务端业务模块指与MQTT服务端产生联系的业务服务群,他们通过连接MQTT服务端集群,从集群中收发消息,从而和MQTT客户端产生联系。这里标明外部业务与服务端集群的解耦关系。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述装置的控制中心,利用各种接口和线路连接整个装置的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
通过上述方案设计的通信系统,实现了以下发明目的:1、满足大量设备的连接服务需求;2、在弱网环境及复杂网络环境下具备端侧动态调整的能力,减小设备断连的风险;3、降低服务端入口服务调度阻塞风险;4、客户端具备网络自检能力,根据特定的算法具备自主调整连接的能力。
本发明实施例描述了一种客户端与云服务通信系统,通过获取可用MQTT服务端地址列表,计算各个可用MQTT服务端的连接权重值进行本地保存,从中选择连接权重值最高的可用MQTT服务端作为待连接服务端进行通信连接,并根据通信连接情况对可用MQTT服务端地址列表待连接服务端的连接权重值进行更新,以确保客户端弱网环境及复杂网络环境下,所调度连接的始终是MQTT集群中连接权重值最高的可用MQTT服务端,该通信系统提升了在弱网环境及复杂网络环境下的客户端与云服务的通信连接稳定性。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (11)
1.一种客户端与云服务通信方法,其特征在于,所述通信方法包括:
获取当前负载信息以及可用MQTT服务端地址列表,并根据各个可用MQTT服务端的连接权重值,确定待连接服务端的服务端地址;所述可用MQTT服务端地址列表包括若干个可用MQTT服务端的地址以及连接权重值;
与所述待连接服务端进行通信连接,判断通信连接是否成功,并根据所述服务端地址以及预设的权重更新方法,更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值;
若通信连接不成功,则重复上述步骤,直至与所述待连接服务端通信连接成功。
2.根据权利要求1所述的客户端与云服务通信方法,其特征在于,在根据各个可用MQTT服务端的连接权重值,确定待连接服务端的服务端地址之前,所述通信方法还包括:
通过预设的权重计算方法,根据所述当前负载信息以及所述可用MQTT服务端地址列表,计算各个可用MQTT服务端的连接权重值。
3.根据权利要求1所述的客户端与云服务通信方法,其特征在于,根据各个可用MQTT服务端的连接权重值,确定待连接服务端的服务端地址,具体包括:
将连接权重值最高的可用MQTT服务端作为待连接服务端,并获取所述待连接服务端的服务端地址。
4.根据权利要求1所述的客户端与云服务通信方法,其特征在于,根据所述服务端地址以及预设的权重更新方法,更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值,具体包括:
根据所述服务端地址,与所述待连接服务端进行通信连接,实时获取与所述待连接服务端之间的连接情况;
根据所述连接情况,重新计算并更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值。
5.根据权利要求2所述的客户端与云服务通信方法,其特征在于,根据所述当前负载信息以及所述可用MQTT服务端地址列表,计算各个可用MQTT服务端的连接权重值,具体包括:
获取可用MQTT服务端的粘性会话指向地址,并根据所述当前负载信息获取ping值平均时间以及最新连接时间;
根据所述粘性会话指向地址、所述ping值平均时间以及所述最新连接时间,对可用MQTT服务端进行ping值评分以对应获得ping值得分,对可用MQTT服务端进行连接时间评分以对应获得连接时间得分,对可用MQTT服务端进行粘性会话评分以对应获得粘性会话得分;
根据预设的加权计算公式、所述ping值得分、连接时间得分以及粘性会话得分,计算获得可用MQTT服务端的连接权重值。
6.根据权利要求4所述的客户端与云服务通信方法,其特征在于,根据所述连接情况,重新计算并更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值,具体包括:
根据所述连接情况获取当前通信耗时,并判断是否与所述待连接服务端通信连接成功;
若与所述待连接服务端通信连接成功,则根据所述当前通信耗时,更新所述待连接服务端的最新连接时间,根据更新后的最新连接时间,重新计算并更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值;
若与所述待连接服务端通信连接不成功,则将所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值设置为预设值。
7.根据权利要求6所述的客户端与云服务通信方法,其特征在于,在将所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值设置为预设值之后,所述通信方法还包括:
在预设时间段内不再选择所述待连接服务端进行连接,并在所述预设时间段后,根据预设的权重计算方法,重新计算并更新所述待连接服务端的连接权重值。
8.一种客户端与云服务通信装置,其特征在于,所述通信装置包括通信选择单元、权重更新单元以及重新连接单元,其中,
所述通信选择单元用于获取当前负载信息以及可用MQTT服务端地址列表,并根据各个可用MQTT服务端的连接权重值,确定待连接服务端的服务端地址;所述可用MQTT服务端地址列表包括若干个可用MQTT服务端的地址以及连接权重值;
所述权重更新单元用于与所述待连接服务端进行通信连接,判断通信连接是否成功,并根据所述服务端地址以及预设的权重更新方法,更新所述可用MQTT服务端地址列表中所述待连接服务端的连接权重值;
所述重新连接单元用于若通信连接不成功,则重复上述步骤,直至与所述待连接服务端通信连接成功。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至7中任意一项所述的客户端与云服务通信方法。
10.一种客户端与云服务通信系统,其特征在于,所述通信系统包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任意一项所述的客户端与云服务通信方法。
11.根据权利要求10所述的客户端与云服务通信系统,其特征在于,所述通信系统还包括MQTT集群,所述MQTT集群包括多个标准MQTT服务端,以及一套负载均衡服务,所述负载均衡服务用于重连后的消息恢复以及粘性会话支持。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310521443.4A CN116800473A (zh) | 2023-05-10 | 2023-05-10 | 一种客户端与云服务通信方法、装置、存储介质以及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310521443.4A CN116800473A (zh) | 2023-05-10 | 2023-05-10 | 一种客户端与云服务通信方法、装置、存储介质以及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116800473A true CN116800473A (zh) | 2023-09-22 |
Family
ID=88045945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310521443.4A Pending CN116800473A (zh) | 2023-05-10 | 2023-05-10 | 一种客户端与云服务通信方法、装置、存储介质以及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116800473A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101577676A (zh) * | 2009-06-10 | 2009-11-11 | 杭州华三通信技术有限公司 | 一种实现粘性访问的方法和装置 |
CN102123056A (zh) * | 2010-11-29 | 2011-07-13 | 东北大学 | 端到端Web服务质量监测系统及方法 |
CN104768156A (zh) * | 2015-04-30 | 2015-07-08 | 北京奇虎科技有限公司 | WiFi连接的方法及装置 |
US20180013822A1 (en) * | 2015-03-31 | 2018-01-11 | Huawei Technologies Co., Ltd. | Service request processing method, related apparatus, and system |
CN109688229A (zh) * | 2019-01-24 | 2019-04-26 | 江苏中云科技有限公司 | 一种负载均衡集群下会话保持系统 |
CN109936639A (zh) * | 2017-12-15 | 2019-06-25 | 中兴通讯股份有限公司 | 一种服务调用方法及服务器 |
CN111131326A (zh) * | 2020-01-06 | 2020-05-08 | 深圳维格智数科技有限公司 | 一种粘性实时数据协同通信系统及方法 |
CN112543150A (zh) * | 2020-10-29 | 2021-03-23 | 贵州新致普惠信息技术有限公司 | 基于服务端控制的动态负载均衡方法 |
CN114900524A (zh) * | 2022-05-11 | 2022-08-12 | 福建科融世纪信息科技有限公司 | 一种mqtt服务的负载均衡和节点降低延时方法 |
-
2023
- 2023-05-10 CN CN202310521443.4A patent/CN116800473A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101577676A (zh) * | 2009-06-10 | 2009-11-11 | 杭州华三通信技术有限公司 | 一种实现粘性访问的方法和装置 |
CN102123056A (zh) * | 2010-11-29 | 2011-07-13 | 东北大学 | 端到端Web服务质量监测系统及方法 |
US20180013822A1 (en) * | 2015-03-31 | 2018-01-11 | Huawei Technologies Co., Ltd. | Service request processing method, related apparatus, and system |
CN104768156A (zh) * | 2015-04-30 | 2015-07-08 | 北京奇虎科技有限公司 | WiFi连接的方法及装置 |
CN109936639A (zh) * | 2017-12-15 | 2019-06-25 | 中兴通讯股份有限公司 | 一种服务调用方法及服务器 |
CN109688229A (zh) * | 2019-01-24 | 2019-04-26 | 江苏中云科技有限公司 | 一种负载均衡集群下会话保持系统 |
CN111131326A (zh) * | 2020-01-06 | 2020-05-08 | 深圳维格智数科技有限公司 | 一种粘性实时数据协同通信系统及方法 |
CN112543150A (zh) * | 2020-10-29 | 2021-03-23 | 贵州新致普惠信息技术有限公司 | 基于服务端控制的动态负载均衡方法 |
CN114900524A (zh) * | 2022-05-11 | 2022-08-12 | 福建科融世纪信息科技有限公司 | 一种mqtt服务的负载均衡和节点降低延时方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107295080B (zh) | 应用于分布式服务器集群的数据存储方法和服务器 | |
CN111935315A (zh) | 区块同步方法及装置 | |
KR101871383B1 (ko) | 계층적 데이터 구조의 노드 상에서 재귀적 이벤트 리스너를 사용하기 위한 방법 및 시스템 | |
CN109714757B (zh) | 一种共用准备eSIM卡的方法及装置 | |
US10802896B2 (en) | Rest gateway for messaging | |
CN110581784B (zh) | 一种节点健康检查方法、装置及设备 | |
CN111083204B (zh) | 文件传输方法、装置及存储介质 | |
CN111092934B (zh) | 更新客户端路由的方法、存储介质 | |
CN112003943A (zh) | 语音数据同步方法和装置 | |
JP5039975B2 (ja) | ゲートウェイ装置 | |
CN112492030B (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
CN110278109B (zh) | 一种容灾方法及系统 | |
CN116800473A (zh) | 一种客户端与云服务通信方法、装置、存储介质以及系统 | |
CN114697339A (zh) | 集中式架构下的负载均衡方法及装置 | |
CN109347994B (zh) | 互联网协议ip地址获取方法、装置、存储介质及电子设备 | |
US8949445B2 (en) | Optimizing electronic communication channels | |
CN111416852A (zh) | 在多个负载均衡器之间进行会话同步的方法和负载均衡器 | |
CN115150363B (zh) | Ip地址更新方法、网关设备、网关下挂设备和存储介质 | |
CN112104506B (zh) | 组网方法、装置、服务器及可读存储介质 | |
CN112486699B (zh) | 一种基于国产数据库的session管理中间件、系统及运行方法 | |
CN113660339B (zh) | 用于去中心化集群的方法和装置 | |
CN115643237B (zh) | 一种用于会议的数据处理系统 | |
CN107635246B (zh) | 网络配置方法及系统 | |
CN111565209B (zh) | 客户端即时通信方法、装置、设备及介质 | |
CN116866279A (zh) | 一种基于Shovel的RabbitMQ队列水平扩展方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |