CN116319964A - 客户端的通信方法、装置、电子设备和存储介质 - Google Patents

客户端的通信方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN116319964A
CN116319964A CN202310144184.8A CN202310144184A CN116319964A CN 116319964 A CN116319964 A CN 116319964A CN 202310144184 A CN202310144184 A CN 202310144184A CN 116319964 A CN116319964 A CN 116319964A
Authority
CN
China
Prior art keywords
micro service
micro
client
message channel
message
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
Application number
CN202310144184.8A
Other languages
English (en)
Inventor
陈俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202310144184.8A priority Critical patent/CN116319964A/zh
Publication of CN116319964A publication Critical patent/CN116319964A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供了一种客户端的通信方法、装置、电子设备和存储介质;该方式中,微服务架构中的任意一个服务端均可以响应任意一个微服务客户端对另一个微服务客户端的通信指令,根据预先定义的远程调用协议,构建微服务架构中的第一微服务消息通道和第二微服务消息通道,用于一个微服务客户端发送消息至另一个微服务客户端,以及接收另一个微服务客户端发送的消息,通过微服务架构中的任意一个服务端对第一微服务消息通道和第二微服务消息通道进行监听,即可实现两个微服务客户端之间的消息同步,使得微服务客户端之间的通信只需定义协议和构建消息通道,通信难度得以降低。

Description

客户端的通信方法、装置、电子设备和存储介质
技术领域
本发明涉及通信技术领域,尤其是涉及一种客户端的通信方法、装置、电子设备和存储介质。
背景技术
微服务架构是面向服务架构(Service-Oriented Architecture,SOA)的一种变体,它将单一应用程序划分成一组服务,服务之间互相协调、互相配合,其中单个应用程序由许多松散耦合且可独立部署的组件或服务组成。
对于大型的微服务架构项目而言,通常具有负载均衡的优化逻辑,导致每个访问微服务的客户端无法预计所连接的是微服务架构中的哪个服务端,使得微服务架构中客户端之间的通信存在技术壁垒。
现有技术在实现微服务的客户端通信时,通常需要引入额外的技术栈,导致客户端通信的实现难度增加。
发明内容
有鉴于此,本发明的目的在于提供一种客户端的通信方法、装置、电子设备和存储介质,以降低微服务客户端通信的实现难度。
第一方面,本发明实施例提供了一种客户端的通信方法,应用于微服务架构,所述微服务架构包括至少一个服务端和至少两个微服务客户端,所述方法包括:所述微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,基于预设的远程调用协议构建所述微服务架构中所述第一微服务客户端和所述第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,所述第一微服务消息通道用于接收所述第一微服务客户端发送至所述第二微服务客户端的消息,所述第二微服务消息通道用于接收所述第二微服务客户端发送至所述第一微服务客户端的消息;对所述第一微服务消息通道和所述第二微服务消息通道进行监听,当所述第一微服务消息通道监听到消息时,向所述第二微服务客户端发送监听到的消息;当所述第二微服务消息通道监听到消息时,向所述第一微服务客户端发送监听到的消息。
第二方面,本发明实施例提供了一种客户端的通信装置,装置包括:应用于微服务架构,所述微服务架构包括至少一个服务端和至少两个微服务客户端,所述装置包括:响应模块,用于微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,基于预设的远程调用协议构建所述微服务架构中所述第一微服务客户端和所述第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,所述第一微服务消息通道用于接收所述第一微服务客户端发送至所述第二微服务客户端的消息,所述第二微服务消息通道用于接收所述第二微服务客户端发送至所述第一微服务客户端的消息;监听模块,用于对所述第一微服务消息通道和所述第二微服务消息通道进行监听,当所述第一微服务消息通道监听到消息时,向所述第二微服务客户端发送监听到的消息;发送模块,用于当所述第二微服务消息通道监听到消息时,向所述第一微服务客户端发送监听到的消息。
第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述客户端的通信方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述客户端的通信方法。
本发明实施例带来了以下有益效果:
上述客户端的通信方法、装置、电子设备和存储介质,应用于微服务架构,所述微服务架构包括至少一个服务端和至少两个微服务客户端,其特征在于,包括:所述微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,基于预设的远程调用协议构建所述微服务架构中所述第一微服务客户端和所述第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,所述第一微服务消息通道用于接收所述第一微服务客户端发送至所述第二微服务客户端的消息,所述第二微服务消息通道用于接收所述第二微服务客户端发送至所述第一微服务客户端的消息;对所述第一微服务消息通道和所述第二微服务消息通道进行监听,当所述第一微服务消息通道监听到消息时,向所述第二微服务客户端发送监听到的消息;当所述第二微服务消息通道监听到消息时,向所述第一微服务客户端发送监听到的消息。该方式中,微服务架构中的任意一个服务端均可以响应任意一个微服务客户端对另一个微服务客户端的通信指令,根据预先定义的远程调用协议,构建微服务架构中的第一微服务消息通道和第二微服务消息通道,用于一个微服务客户端发送消息至另一个微服务客户端,以及接收另一个微服务客户端发送的消息,通过微服务架构中的任意一个服务端对第一微服务消息通道和第二微服务消息通道进行监听,即可实现两个微服务客户端之间的消息同步,使得微服务客户端之间的通信只需定义协议和构建消息通道,通信难度得以降低。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中客户端的通信方法的一个实施例流程图;
图2为本发明实施例中客户端的通信方法的另一个实施例流程图;
图3为本发明实施例提供的一种客户端的通信装置的示意图;
图4为本发明实施例提供的一种电子设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,本发明实施例中客户端的通信方法应用于微服务架构,所述微服务架构包括至少一个服务端和至少两个微服务客户端。需要说明的是,微服务(Microservices)架构与单体式应用程序架构(Monolithicapplication)存在根本性的架构设计差异,单体式应用程序的所有功能服务均在一个应用程序中,各个功能服务模块具有很强的耦合性,难以拆分和扩容;而微服务架构则将一个应用程序划分为几个服务,不同的服务之间协同工作、小而自治,不同的服务之间具有技术异构性、隔离性、可扩展性、简化部署性以及易于优化性。可以理解的是,微服务架构可以用于向微服务客户端提供一个应用程序对应的多个服务,也可以用于向微服务客户端提供多个应用程序分别对应的多个服务,微服务客户端通过目标应用程序向微服务架构请求服务,微服务架构中包含目标应用程序的至少一个服务端和至少两个微服务客户端,每个微服务客户端可以向一个服务端请求服务,也可以向多个服务端请求服务,一个服务端可以包含一个服务,也可以包含多个服务,不同的服务端提供的服务可以相同,也可以不同,具体此处不做限定。
请参阅图1,本发明实施例中客户端的通信方法的一个实施例包括:
步骤S10、微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,第一微服务消息通道用于接收第一微服务客户端发送至第二微服务客户端的消息,第二微服务消息通道用于接收第二微服务客户端发送至第一微服务客户端的消息;
可以理解的是,由于微服务架构通常应用于大型应用程序,而为了提高应用程序的整体性能,微服务架构还包括负载均衡算法,其中,负载均衡算法用于确定微服务架构中用于响应第一微服务客户端对第二微服务客户端的通信指令的目标服务端,也就是说,微服务架构中的微服务客户端在发出通信指令时,并未确定与其连接并为其提供服务的客户端,因此,微服务客户端也难以直接与微服务架构中的另一个指定微服务客户端通信。基于此,本发明实施例重新构思一种应用于负载均衡的微服务架构,微服务客户端之间的通信方法。本步骤通过微服务架构中的任意一个服务端响应微服务架构中任一微服务客户端对另一微服务客户端的通信指令,即第一微服务客户端对第二微服务客户端的通信指令,再基于预设的远程调用协议(Remote Procedure Call,RPC)构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道。需要说明的是,第一微服务客户端和第二微服务客户端可以是微服务架构中的任意微服务客户端,例如微服务架构中的微服务客户端A对微服务客户端B的通信指令、微服务架构中的微服务客户端B对微服务客户端A的通信指令、或者微服务架构中的微服务客户端A对微服务客户端C的通信指令等,具体此处不做限定。
可以理解的是,第一微服务消息通道用于接收第一微服务客户端发送至第二微服务客户端的消息,第二微服务消息通道用于接收第二微服务客户端发送至第一微服务客户端的消息。也就是说,第一微服务客户端和第二微服务客户端通过两条专属消息通道实现通信,其中一条消息通道用于其中一个微服务客户端发送消息,另一条消息通道用于另一个微服务客户端发送消息,例如,微服务客户端A发送消息到消息通道A1,微服务客户端B发送消息到消息通道B1。后续通过监听两条消息通道的消息,并将监听到的消息同步至各自的微服务客户端,从而实现两个微服务客户端之间的通信。
需要说明的是,微服务架构中的任一微服务客户端通过其安装的目标应用程序发送对第二微服务客户端的通信指令,其中,微服务架构中的任一微服务客户端通过其安装的目标应用程序中的任意服务模块发送对第二微服务客户端的通信指令。例如,目标应用程序中的评论服务模块、留言服务模块、实时消息服务模块等,均能够通过任意两个微服务客户端之间的通信服务,具体此处不做限定。
在一种实施方式中,预设的远程调用协议为流式远程调用协议gRPC,包括双向流式RPC,基于双向流式RPC构建的微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,其中,第一微服务消息通道和第二微服务消息通道均为双向流式RPC通道,即微服务客户端和服务端都可以分别通过该读写数据流(即双向流式RPC通道)发送一系列消息。这两个数据流操作是相互独立的,所以微服务客户端和服务端能按其希望的任意顺序读写,例如:服务端可以在写应答前等待所有的微服务客户端消息,或者服务端可以先读一个消息再写一个消息,或者是读写相结合的其他方式。每个数据流里消息的顺序会被保持。
在一种实施方式中,微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,获取第一微服务客户端和第二微服务客户端的标识信息,得到第一微服务客户端对应的第一标识信息和第二微服务客户端对应的第二标识信息;基于预设的远程调用协议,根据第一标识信息和第二标识信息构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道。其中,第一微服务客户端和第二微服务客户端的标识信息可以是客户端设备的标识信息、客户端应用的标识信息、客户端用户的标识信息等可以用于标识微服务客户端唯一性的信息,具体此处不做限定。
需要说明的是,第一微服务消息通道和第二微服务消息通道可以在不同时机下由不同的服务端构建,例如,第一微服务消息通道可以在第一微服务客户端向第二微服务客户端发送消息时构建,第二微服务消息通道可以在第二微服务客户端向第一微服务客户端发送消息时构建。具体的,在一种实施方式中,步骤S10包括:微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的消息发送指令,基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道,其中,第一微服务消息通道用于接收第一微服务客户端发送至第二微服务客户端的消息;微服务架构中任一服务端响应于第二微服务客户端对第一微服务客户端的消息发送指令,基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第二微服务消息通道,其中,第二微服务消息通道用于接收第二微服务客户端发送至第一微服务客户端的消息。其中,用于响应于第一微服务客户端对第二微服务客户端的消息发送指令的服务端和用于响应于第二微服务客户端对第一微服务客户端的消息发送指令的服务端根据微服务架构中的负载均衡算法确定,二者可以为同一个服务端,也可以为不同的服务端,具体此处不做限定。
步骤S20、对第一微服务消息通道和第二微服务消息通道进行监听,当第一微服务消息通道监听到消息时,向第二微服务客户端发送监听到的消息;
需要说明的是,由于第一微服务消息通道和第二微服务消息通道可以在不同时机下由不同的服务端构建,因此,在步骤S10之后,还包括:将第一微服务消息通道和第二微服务消息通道的通道标识信息存储至目标数据库中,在执行步骤S20时,通过微服务架构中的任一服务端从目标数据库中读取第一微服务消息通道和第二微服务消息通道的通道标识信息,并通过通道标识信息对第一微服务消息通道和第二微服务消息通道进行监听,当第一微服务消息通道监听到消息时,根据第一微服务消息通道的通道标识信息将监听到的消息发送至第二微服务客户端;而当第二微服务消息通道监听到消息时,根据第二微服务消息通道的通道标识信息将监听到的消息发送至第一微服务客户端,即下述步骤S30的具体执行过程。本实施方式通过数据库存储通道标识信息,使得消息通道的监听无需依赖于构建消息通道的服务端,而是微服务架构中的任一服务端均可以监听并发送监听到的消息至微服务客户端,打破负载均衡算法指定服务端的不确定性,使得微服务客户端之间通信的稳定性提高。
在一种实施方式中,为了确定监听到消息的先后时间顺序,当第一微服务消息通道监听到消息时,记录当前时间戳,并向第一微服务客户端发送监听到的消息和当前时间戳,以使得第一微服务客户端根据消息对应的时间戳进行消息的时间排序,提高通信的准确性。
步骤S30、当第二微服务消息通道监听到消息时,向第一微服务客户端发送监听到的消息。
在一种实施方式中,为了确定监听到消息的先后时间顺序,当第二微服务消息通道监听到消息时,记录当前时间戳,并向第二微服务客户端发送监听到的消息和当前时间戳,以使得第二微服务客户端根据消息对应的时间戳进行消息的时间排序,提高通信的准确性。
上述实施方式提供的客户端的通信方法,微服务架构中的任意一个服务端均可以响应任意一个微服务客户端对另一个微服务客户端的通信指令,根据预先定义的远程调用协议,构建微服务架构中的第一微服务消息通道和第二微服务消息通道,用于一个微服务客户端发送消息至另一个微服务客户端,以及接收另一个微服务客户端发送的消息,通过微服务架构中的任意一个服务端对第一微服务消息通道和第二微服务消息通道进行监听,即可实现两个微服务客户端之间的消息同步,使得微服务客户端之间的通信只需定义协议和构建消息通道,通信难度得以降低。
请参阅图2,本发明实施例中客户端的通信方法的另一个实施例包括:
步骤S201、微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,确定第一微服务客户端的第一标识符、第二微服务客户端的第二标识符、以及微服务标识符,微服务标识符用于指示第一微服务客户端和第二微服务客户端之间的可通信微服务;
本实施方式中,为了简化微服务架构中微服务客户端的通信机制,在本步骤中任一服务端响应任一微服务客户端对另一微服务客户端的通信指令时,通过预设的远程调用协议获取第一微服务客户端的第一标识符、第二微服务客户端的第二标识符、以及微服务标识符,其中,微服务标识符用于指示第一微服务客户端和第二微服务客户端之间是否可调用同一微服务,也就是第一微服务客户端和第二微服务客户端之间的可通信微服务。例如,假设第一标识符为第一微服务客户端中目标应用程序的用户ID,第二标识符为第二微服务客户端中目标应用程序的用户ID,那么,微服务标识符则可以是目标应用程序的标识符,用于指示第一微服务客户端和第二微服务客户端是否为同一应用程序中的用户,具体此处不做限定。
步骤S202、通过第一标识符、第二标识符和微服务标识符判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听;
本实施方式中,为了避免重复监听导致的资源浪费和数据混乱,根据第一标识符、第二标识符和微服务标识符,判断第一微服务客户端和第二微服务客户端之间的消息通道是否已存在,已存在则代表已监听,不存在则代表未监听。在一种实施方式中,通过预设数据库查询第一标识符、第二标识符和微服务标识符,得到查询结果,并根据查询结果判断预设数据库查询中是否已存在第一微服务客户端和第二微服务客户端之间消息通道的监听信息,如果存在,则确定第一微服务客户端和第二微服务客户端之间的消息通道已被监听,否则确定第一微服务客户端和第二微服务客户端之间的消息通道未被监听。
在一种实施方式中,步骤S202包括:根据第一标识符、第二标识符和微服务标识符,生成第一微服务客户端的第一监听标识符和第二微服务客户端的第二监听标识符;在预设数据库中查询第一监听标识符和第二监听标识符,得到查询结果;根据查询结果,判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听。
本实施方式中,可以将第一标识符、第二标识符和微服务标识符组合成有序的字符串,作为微服务客户端的监听标识符。通过在预设数据库中查询第一监听标识符和第二监听标识符,得到的查询结果可以用于指示预设数据库中是否存在第一监听标识符和/或第二监听标识符,也可以用于指示预设数据库中第一监听标识符和第二监听标识符分别对应的查询值,不同的查询值指示不同的监听状态。例如,假设第一标识符为A,第二标识符为B,微服务标识符为app1,那么,第一微服务客户端的第一监听标识符可以为“app1-A-B”,第二微服务客户端的第二监听标识符可以为“app1-B-A”,具体此处不做限定。在一种实施方式中,监听标识符(包括第一监听标识符和第二监听标识符)以键值对(key-value)的形式存储于预设数据库中,监听标识符还可以用于指示微服务消息通道(包括第一微服务消息通道和第二微服务消息通道)的监听状态,其中,监听状态包括已监听和未监听。例如,假设第一监听标识符为“app1-A-B”,那么,“app1-A-B:1”可以表示目标应用程序app1的第一微服务客户端A和第二微服务客户端B之间的第一微服务消息通道已被监听,“app1-A-B:0”可以表示目标应用程序app1的第一微服务客户端A和第二微服务客户端B之间的第一微服务消息通道未被监听,监听此处不做限定。
进一步的,在一种实施方式中,查询结果用于指示预设数据库中是否存在第一监听标识符和/或第二监听标识符;根据查询结果,判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听,包括:若查询结果指示预设数据库中不存在第一监听标识符和第二监听标识符,则确定第一微服务客户端和第二微服务客户端之间的消息通道未被监听;若查询结果指示预设数据库中不存在第一监听标识符、且存在第二监听标识符,则确定第一微服务客户端和第二微服务客户端之间的第一微服务消息通道未被监听,且第二微服务消息通道已被监听;若查询结果指示预设数据库中存在第一监听标识符、且不存在第二监听标识符,则确定第一微服务客户端和第二微服务客户端之间的第一微服务消息通道已被监听,且第二微服务消息通道未被监听。
本实施方式中,由于第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道可以在不同的时机由不同的服务端构建和监听,因此,在判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听时,可以分别判断第一微服务消息通道是否已被监听,以及第二微服务消息通道是否已被监听。具体的,本实施方式中,查询结果用于指示预设数据库中是否存在第一监听标识符和/或第二监听标识符,如果预设数据库中不存在第一监听标识符和第二监听标识符,则说明第一微服务客户端和第二微服务客户端之间的消息通道均没有被监听;如果预设数据库中不存在第一监听标识符,而存在第二监听标识符,则说明第一微服务消息通道还没有被监听,并且,第二微服务消息通道已经被监听;而如果预设数据库中存在第一监听标识符,而不存在第二监听标识符,则说明第一微服务消息通道已经被监听,并且,第二微服务消息通道还没有被监听;而如果预设数据库中存在第一监听标识符和第二监听标识符,则说明第一微服务客户端和第二微服务客户端之间的消息通道均已经被监听,则无需执行步骤S203以及步骤S204中的“对第一微服务消息通道和第二微服务消息通道进行监听”,即可完成后续步骤。
步骤S203、若第一微服务客户端和第二微服务客户端之间的消息通道未被监听,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,第一微服务消息通道用于接收第一微服务客户端发送至第二微服务客户端的消息,第二微服务消息通道用于接收第二微服务客户端发送至第一微服务客户端的消息;
本步骤中,如果第一微服务客户端和第二微服务客户端之间的消息通道均没有被监听,也就是上述查询结果指示预设数据库中存在第一监听标识符和第二监听标识符,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道。
在一种实施方式中,若第一微服务客户端和第二微服务客户端之间的第一微服务消息通道未被监听,且第二微服务消息通道已被监听,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道;若第一微服务客户端和第二微服务客户端之间的第一微服务消息通道已被监听,且第二微服务消息通道未被监听,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第二微服务消息通道。
本实施方式中,如果第一微服务客户端和第二微服务客户端之间的第一微服务消息通道未被监听,并且第二微服务消息通道已被监听,也就是上述查询结果指示预设数据库中不存在第一监听标识符,而存在第二监听标识符,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道即可,具体的是生成第一监听标识符,并将第一监听标识符存储至预设数据库中;而如果第一微服务客户端和第二微服务客户端之间的第一微服务消息通道已被监听,且第二微服务消息通道未被监听,也就是查询结果指示预设数据库中存在第一监听标识符,而不存在第二监听标识符,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第二微服务消息通道即可,具体的是生成第二监听标识符,并将第二监听标识符存储至预设数据库中。
步骤S204、对第一微服务消息通道和第二微服务消息通道进行监听,当第一微服务消息通道监听到消息时,向第二微服务客户端发送监听到的消息;
在一种实施方式中,对第一微服务消息通道和第二微服务消息通道进行监听之后,还可以配置第一微服务消息通道和第二微服务消息通道分别对应的监听锁,用于避免重复监听。
在一种实施方式中,第一微服务消息通道和第二微服务消息通道用于指示消息队列,对第一微服务消息通道和第二微服务消息通道进行监听,当第一微服务消息通道监听到消息时,向第二微服务客户端发送监听到的消息,包括:通过预设的第一阻塞监听指令对第一微服务消息通道进行阻塞消息拉取,并通过预设的第二阻塞监听指令对第二微服务消息通道进行阻塞消息拉取,第一阻塞监听指令和第二阻塞监听指令包括监听超时时长;当在监听超时时长内对第一微服务消息通道拉取到消息时,将对第一微服务消息通道拉取到的消息发送至第二微服务客户端;
本实施方式中,预设数据库为redis关系型数据库,第一微服务消息通道和第二微服务消息通道均为redis的消息队列,该消息队列为阻塞队列,在执行步骤S204时,通过redis的“阻塞式”的消息拉取命令(包括第一阻塞监听指令和第二阻塞监听指令,如BRPOP/BLPOP)对第一微服务消息通道进行阻塞消息拉取,并对第二微服务消息通道进行阻塞消息拉取。阻塞队列如果为空,在拉取消息时则阻塞等待,一旦有新消息进入阻塞队列,就立即将新消息发送给对应的微服务客户端,也就是第一微服务消息通道一旦有新消息,则立即将新消息发送给第二微服务客户端,而第二微服务消息通道一旦有新消息,则立即将新消息发送给第一微服务客户端,如果没有新消息,则按照消息拉取命令(包括第一阻塞监听指令和第二阻塞监听指令)中的监听超时时长,阻塞等待新消息。其中,第一阻塞监听指令和第二阻塞监听指令中的监听超时时长可以相同,也可以不同,监听此处不做限定。
步骤S205、当第二微服务消息通道监听到消息时,向第一微服务客户端发送监听到的消息。
在一种实施方式中,上述步骤S205包括:当在监听超时时长内对第二微服务消息通道拉取到消息时,将对第二微服务消息通道拉取到的消息发送至第一微服务客户端。本实施方式中,如果通过预设的第二阻塞监听指令对第二微服务消息通道进行阻塞消息拉取时,在第二阻塞监听指令对应的监听超时时长内拉取到第二微服务消息通道的新消息,则立即将拉取到新消息发送至第一微服务客户端。
在一种实施方式中,若在监听超时时长内未拉取到第一微服务消息通道的消息,则释放第一微服务消息通道的监听锁;若在监听超时时长内未拉取到第二微服务消息通道的消息,则释放第二微服务消息通道的监听锁。本实施方式中,如果在监听超时时长内没有拉取到第一微服务消息通道的新消息,为了降低资源占有率,将第一微服务消息通道的监听锁释放,使得第一微服务消息通道处于未被监听的状态;同理,如果在监听超时时长内未拉取到第二微服务消息通道的新消息,则释放第二微服务消息通道的监听锁,使得第二微服务消息通道处于未被监听的状态。从而减少资源的占用。
在一种实施方式中,上述若在监听超时时长内未拉取到第一微服务消息通道的消息,则释放第一微服务消息通道的监听锁,包括:若在监听超时时长内未拉取到第一微服务消息通道的消息,则删除预设数据库中第一微服务客户端的第一监听标识符,第一监听标识符用于指示第二微服务消息通道是否被监听;若在监听超时时长内未拉取到第二微服务消息通道的消息,则释放第二微服务消息通道的监听锁,包括:若在监听超时时长内未拉取到第二微服务消息通道的消息,则删除预设数据库中第二微服务客户端的第二监听标识符,第二监听标识符用于指示第一微服务消息通道是否被监听。
本实施方式中,监听标识符(包括第一监听标识符和第二监听标识符)可以用于指示监听锁,具体的,第一监听标识符用于指示第一微服务消息通道的监听锁,第二监听标识符用于指示第二微服务消息通道的监听锁,如果在监听超时时长内没有拉取到第一微服务消息通道的新消息,那么,则可以通过删除预设数据库中的第一监听标识符来释放第一微服务消息通道的监听锁,而如果在监听超时时长内没有拉取到第二微服务消息通道的新消息,则可以通过删除预设数据库中的第二监听标识符来释放第二微服务消息通道的监听锁,使得微服务消息通道的监听状态更简便、更可控。
上述实施方式提供的客户端的通信方法,微服务架构中的任意一个服务端均可以响应任意一个微服务客户端对另一个微服务客户端的通信指令,根据预先定义的远程调用协议,构建微服务架构中的第一微服务消息通道和第二微服务消息通道,用于一个微服务客户端发送消息至另一个微服务客户端,以及接收另一个微服务客户端发送的消息,通过微服务架构中的任意一个服务端对第一微服务消息通道和第二微服务消息通道进行监听,即可实现两个微服务客户端之间的消息同步,使得微服务客户端之间的通信只需定义协议和构建消息通道,通信难度得以降低。
对应于上述方法实施例,参见图3所示的一种客户端的通信装置的示意图,应用于微服务架构,微服务架构包括至少一个服务端和至少两个微服务客户端,装置包括:响应模块30,用于微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,第一微服务消息通道用于接收第一微服务客户端发送至第二微服务客户端的消息,第二微服务消息通道用于接收第二微服务客户端发送至第一微服务客户端的消息;监听模块32,用于对第一微服务消息通道和第二微服务消息通道进行监听,当第一微服务消息通道监听到消息时,向第二微服务客户端发送监听到的消息;发送模块34,用于当第二微服务消息通道监听到消息时,向第一微服务客户端发送监听到的消息。
上述装置,微服务架构中的任意一个服务端均可以响应任意一个微服务客户端对另一个微服务客户端的通信指令,根据预先定义的远程调用协议,构建微服务架构中的第一微服务消息通道和第二微服务消息通道,用于一个微服务客户端发送消息至另一个微服务客户端,以及接收另一个微服务客户端发送的消息,通过微服务架构中的任意一个服务端对第一微服务消息通道和第二微服务消息通道进行监听,即可实现两个微服务客户端之间的消息同步,使得微服务客户端之间的通信只需定义协议和构建消息通道,通信难度得以降低。
上述响应模块30包括:确定子模块,用于微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,确定第一微服务客户端的第一标识符、第二微服务客户端的第二标识符、以及微服务标识符,微服务标识符用于指示第一微服务客户端和第二微服务客户端之间的可通信微服务;判断子模块,用于通过第一标识符、第二标识符和微服务标识符判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听;构建子模块,用于若第一微服务客户端和第二微服务客户端之间的消息通道未被监听,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道。
上述判断子模块包括:生成单元,用于根据第一标识符、第二标识符和微服务标识符,生成第一微服务客户端的第一监听标识符和第二微服务客户端的第二监听标识符;查询单元,用于在预设数据库中查询第一监听标识符和第二监听标识符,得到查询结果;判断单元,用于根据查询结果,判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听。
上述查询结果用于指示预设数据库中是否存在第一监听标识符和/或第二监听标识符;
上述判断单元具体用于:若查询结果指示预设数据库中不存在第一监听标识符和第二监听标识符,则确定第一微服务客户端和第二微服务客户端之间的消息通道未被监听;若查询结果指示预设数据库中不存在第一监听标识符、且存在第二监听标识符,则确定第一微服务客户端和第二微服务客户端之间的第一微服务消息通道未被监听,且第二微服务消息通道已被监听;若查询结果指示预设数据库中存在第一监听标识符、且不存在第二监听标识符,则确定第一微服务客户端和第二微服务客户端之间的第一微服务消息通道已被监听,且第二微服务消息通道未被监听。
上述装置还包括:第一构建模块,用于若第一微服务客户端和第二微服务客户端之间的第一微服务消息通道未被监听,且第二微服务消息通道已被监听,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道;第二构建模块,用于若第一微服务客户端和第二微服务客户端之间的第一微服务消息通道已被监听,且第二微服务消息通道未被监听,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第二微服务消息通道。
上述第一微服务消息通道和第二微服务消息通道用于指示消息队列,上述监听模块32还用于:通过预设的第一阻塞监听指令对第一微服务消息通道进行阻塞消息拉取,并通过预设的第二阻塞监听指令对第二微服务消息通道进行阻塞消息拉取,第一阻塞监听指令和第二阻塞监听指令包括监听超时时长;当在监听超时时长内对第一微服务消息通道拉取到消息时,将对第一微服务消息通道拉取到的消息发送至第二微服务客户端;上述发送模块34还用于:当在监听超时时长内对第二微服务消息通道拉取到消息时,将对第二微服务消息通道拉取到的消息发送至第一微服务客户端。
上述装置还包括:第一释放模块,用于若在监听超时时长内未拉取到第一微服务消息通道的消息,则释放第一微服务消息通道的监听锁;第二释放模块,用于若在监听超时时长内未拉取到第二微服务消息通道的消息,则释放第二微服务消息通道的监听锁。
上述第一释放模块,还用于:若在监听超时时长内未拉取到第一微服务消息通道的消息,则删除预设数据库中第一微服务客户端的第一监听标识符,第一监听标识符用于指示第二微服务消息通道是否被监听;上述第二释放模块,还用于:若在监听超时时长内未拉取到第二微服务消息通道的消息,则删除预设数据库中第二微服务客户端的第二监听标识符,第二监听标识符用于指示第一微服务消息通道是否被监听。
本实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述客户端的通信方法。该电子设备可以是服务器,也可以是终端设备。
参见图4所示,该电子设备包括处理器100和存储器101,该存储器101存储有能够被处理器100执行的机器可执行指令,该处理器100执行机器可执行指令以实现上述客户端的通信方法。
进一步地,图4所示的电子设备还包括总线102和通信接口103,处理器100、通信接口103和存储器101通过总线102连接。
其中,存储器101可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成前述实施例的方法的步骤,例如:
微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,第一微服务消息通道用于接收第一微服务客户端发送至第二微服务客户端的消息,第二微服务消息通道用于接收第二微服务客户端发送至第一微服务客户端的消息;对第一微服务消息通道和第二微服务消息通道进行监听,当第一微服务消息通道监听到消息时,向第二微服务客户端发送监听到的消息;当第二微服务消息通道监听到消息时,向第一微服务客户端发送监听到的消息。
该方式中,微服务架构中的任意一个服务端均可以响应任意一个微服务客户端对另一个微服务客户端的通信指令,根据预先定义的远程调用协议,构建微服务架构中的第一微服务消息通道和第二微服务消息通道,用于一个微服务客户端发送消息至另一个微服务客户端,以及接收另一个微服务客户端发送的消息,通过微服务架构中的任意一个服务端对第一微服务消息通道和第二微服务消息通道进行监听,即可实现两个微服务客户端之间的消息同步,使得微服务客户端之间的通信只需定义协议和构建消息通道,通信难度得以降低。
上述微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,包括:微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,确定第一微服务客户端的第一标识符、第二微服务客户端的第二标识符、以及微服务标识符,微服务标识符用于指示第一微服务客户端和第二微服务客户端之间的可通信微服务;通过第一标识符、第二标识符和微服务标识符判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听;若第一微服务客户端和第二微服务客户端之间的消息通道未被监听,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道。
上述通过第一标识符、第二标识符和微服务标识符判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听,包括:根据第一标识符、第二标识符和微服务标识符,生成第一微服务客户端的第一监听标识符和第二微服务客户端的第二监听标识符;在预设数据库中查询第一监听标识符和第二监听标识符,得到查询结果;根据查询结果,判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听。
上述查询结果用于指示预设数据库中是否存在第一监听标识符和/或第二监听标识符;
上述根据查询结果,判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听,包括:若查询结果指示预设数据库中不存在第一监听标识符和第二监听标识符,则确定第一微服务客户端和第二微服务客户端之间的消息通道未被监听;若查询结果指示预设数据库中不存在第一监听标识符、且存在第二监听标识符,则确定第一微服务客户端和第二微服务客户端之间的第一微服务消息通道未被监听,且第二微服务消息通道已被监听;若查询结果指示预设数据库中存在第一监听标识符、且不存在第二监听标识符,则确定第一微服务客户端和第二微服务客户端之间的第一微服务消息通道已被监听,且第二微服务消息通道未被监听。
上述方法还包括:若第一微服务客户端和第二微服务客户端之间的第一微服务消息通道未被监听,且第二微服务消息通道已被监听,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道;若第一微服务客户端和第二微服务客户端之间的第一微服务消息通道已被监听,且第二微服务消息通道未被监听,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第二微服务消息通道。
上述第一微服务消息通道和第二微服务消息通道用于指示消息队列,上述对第一微服务消息通道和第二微服务消息通道进行监听,当第一微服务消息通道监听到消息时,向第二微服务客户端发送监听到的消息,包括:通过预设的第一阻塞监听指令对第一微服务消息通道进行阻塞消息拉取,并通过预设的第二阻塞监听指令对第二微服务消息通道进行阻塞消息拉取,第一阻塞监听指令和第二阻塞监听指令包括监听超时时长;当在监听超时时长内对第一微服务消息通道拉取到消息时,将对第一微服务消息通道拉取到的消息发送至第二微服务客户端;上述当第二微服务消息通道监听到消息时,向第一微服务客户端发送监听到的消息,包括:当在监听超时时长内对第二微服务消息通道拉取到消息时,将对第二微服务消息通道拉取到的消息发送至第一微服务客户端。
上述方法还包括:若在监听超时时长内未拉取到第一微服务消息通道的消息,则释放第一微服务消息通道的监听锁;若在监听超时时长内未拉取到第二微服务消息通道的消息,则释放第二微服务消息通道的监听锁。
上述若在监听超时时长内未拉取到第一微服务消息通道的消息,则释放第一微服务消息通道的监听锁,包括:若在监听超时时长内未拉取到第一微服务消息通道的消息,则删除预设数据库中第一微服务客户端的第一监听标识符,第一监听标识符用于指示第二微服务消息通道是否被监听;上述若在监听超时时长内未拉取到第二微服务消息通道的消息,则释放第二微服务消息通道的监听锁,包括:若在监听超时时长内未拉取到第二微服务消息通道的消息,则删除预设数据库中第二微服务客户端的第二监听标识符,第二监听标识符用于指示第一微服务消息通道是否被监听。
本实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述客户端的通信方法,例如:
微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,第一微服务消息通道用于接收第一微服务客户端发送至第二微服务客户端的消息,第二微服务消息通道用于接收第二微服务客户端发送至第一微服务客户端的消息;对第一微服务消息通道和第二微服务消息通道进行监听,当第一微服务消息通道监听到消息时,向第二微服务客户端发送监听到的消息;当第二微服务消息通道监听到消息时,向第一微服务客户端发送监听到的消息。
该方式中,微服务架构中的任意一个服务端均可以响应任意一个微服务客户端对另一个微服务客户端的通信指令,根据预先定义的远程调用协议,构建微服务架构中的第一微服务消息通道和第二微服务消息通道,用于一个微服务客户端发送消息至另一个微服务客户端,以及接收另一个微服务客户端发送的消息,通过微服务架构中的任意一个服务端对第一微服务消息通道和第二微服务消息通道进行监听,即可实现两个微服务客户端之间的消息同步,使得微服务客户端之间的通信只需定义协议和构建消息通道,通信难度得以降低。
上述微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,包括:微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,确定第一微服务客户端的第一标识符、第二微服务客户端的第二标识符、以及微服务标识符,微服务标识符用于指示第一微服务客户端和第二微服务客户端之间的可通信微服务;通过第一标识符、第二标识符和微服务标识符判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听;若第一微服务客户端和第二微服务客户端之间的消息通道未被监听,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道。
上述通过第一标识符、第二标识符和微服务标识符判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听,包括:根据第一标识符、第二标识符和微服务标识符,生成第一微服务客户端的第一监听标识符和第二微服务客户端的第二监听标识符;在预设数据库中查询第一监听标识符和第二监听标识符,得到查询结果;根据查询结果,判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听。
上述查询结果用于指示预设数据库中是否存在第一监听标识符和/或第二监听标识符;
上述根据查询结果,判断第一微服务客户端和第二微服务客户端之间的消息通道是否已被监听,包括:若查询结果指示预设数据库中不存在第一监听标识符和第二监听标识符,则确定第一微服务客户端和第二微服务客户端之间的消息通道未被监听;若查询结果指示预设数据库中不存在第一监听标识符、且存在第二监听标识符,则确定第一微服务客户端和第二微服务客户端之间的第一微服务消息通道未被监听,且第二微服务消息通道已被监听;若查询结果指示预设数据库中存在第一监听标识符、且不存在第二监听标识符,则确定第一微服务客户端和第二微服务客户端之间的第一微服务消息通道已被监听,且第二微服务消息通道未被监听。
上述方法还包括:若第一微服务客户端和第二微服务客户端之间的第一微服务消息通道未被监听,且第二微服务消息通道已被监听,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第一微服务消息通道;若第一微服务客户端和第二微服务客户端之间的第一微服务消息通道已被监听,且第二微服务消息通道未被监听,则基于预设的远程调用协议构建微服务架构中第一微服务客户端和第二微服务客户端之间的第二微服务消息通道。
上述第一微服务消息通道和第二微服务消息通道用于指示消息队列,上述对第一微服务消息通道和第二微服务消息通道进行监听,当第一微服务消息通道监听到消息时,向第二微服务客户端发送监听到的消息,包括:通过预设的第一阻塞监听指令对第一微服务消息通道进行阻塞消息拉取,并通过预设的第二阻塞监听指令对第二微服务消息通道进行阻塞消息拉取,第一阻塞监听指令和第二阻塞监听指令包括监听超时时长;当在监听超时时长内对第一微服务消息通道拉取到消息时,将对第一微服务消息通道拉取到的消息发送至第二微服务客户端;上述当第二微服务消息通道监听到消息时,向第一微服务客户端发送监听到的消息,包括:当在监听超时时长内对第二微服务消息通道拉取到消息时,将对第二微服务消息通道拉取到的消息发送至第一微服务客户端。
上述方法还包括:若在监听超时时长内未拉取到第一微服务消息通道的消息,则释放第一微服务消息通道的监听锁;若在监听超时时长内未拉取到第二微服务消息通道的消息,则释放第二微服务消息通道的监听锁。
上述若在监听超时时长内未拉取到第一微服务消息通道的消息,则释放第一微服务消息通道的监听锁,包括:若在监听超时时长内未拉取到第一微服务消息通道的消息,则删除预设数据库中第一微服务客户端的第一监听标识符,第一监听标识符用于指示第二微服务消息通道是否被监听;上述若在监听超时时长内未拉取到第二微服务消息通道的消息,则释放第二微服务消息通道的监听锁,包括:若在监听超时时长内未拉取到第二微服务消息通道的消息,则删除预设数据库中第二微服务客户端的第二监听标识符,第二监听标识符用于指示第一微服务消息通道是否被监听。
本发明实施例所提供的客户端的通信方法、装置、电子设备及存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (11)

1.一种客户端的通信方法,应用于微服务架构,所述微服务架构包括至少一个服务端和至少两个微服务客户端,其特征在于,所述方法包括:
所述微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,基于预设的远程调用协议构建所述微服务架构中所述第一微服务客户端和所述第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,所述第一微服务消息通道用于接收所述第一微服务客户端发送至所述第二微服务客户端的消息,所述第二微服务消息通道用于接收所述第二微服务客户端发送至所述第一微服务客户端的消息;
对所述第一微服务消息通道和所述第二微服务消息通道进行监听,当所述第一微服务消息通道监听到消息时,向所述第二微服务客户端发送监听到的消息;
当所述第二微服务消息通道监听到消息时,向所述第一微服务客户端发送监听到的消息。
2.根据权利要求1所述的方法,其特征在于,所述微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,基于预设的远程调用协议构建所述微服务架构中所述第一微服务客户端和所述第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,包括:
微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,确定所述第一微服务客户端的第一标识符、所述第二微服务客户端的第二标识符、以及微服务标识符,所述微服务标识符用于指示所述第一微服务客户端和所述第二微服务客户端之间的可通信微服务;
通过所述第一标识符、所述第二标识符和所述微服务标识符判断所述第一微服务客户端和所述第二微服务客户端之间的消息通道是否已被监听;
若所述第一微服务客户端和所述第二微服务客户端之间的消息通道未被监听,则基于预设的远程调用协议构建所述微服务架构中所述第一微服务客户端和所述第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道。
3.根据权利要求2所述的方法,其特征在于,所述通过所述第一标识符、所述第二标识符和所述微服务标识符判断所述第一微服务客户端和所述第二微服务客户端之间的消息通道是否已被监听,包括:
根据所述第一标识符、所述第二标识符和所述微服务标识符,生成所述第一微服务客户端的第一监听标识符和所述第二微服务客户端的第二监听标识符;
在预设数据库中查询所述第一监听标识符和所述第二监听标识符,得到查询结果;
根据所述查询结果,判断所述第一微服务客户端和所述第二微服务客户端之间的消息通道是否已被监听。
4.根据权利要求3所述的方法,其特征在于,所述查询结果用于指示所述预设数据库中是否存在所述第一监听标识符和/或所述第二监听标识符;
所述根据所述查询结果,判断所述第一微服务客户端和所述第二微服务客户端之间的消息通道是否已被监听,包括:
若所述查询结果指示所述预设数据库中不存在所述第一监听标识符和所述第二监听标识符,则确定所述第一微服务客户端和所述第二微服务客户端之间的消息通道未被监听;
若所述查询结果指示所述预设数据库中不存在所述第一监听标识符、且存在所述第二监听标识符,则确定所述第一微服务客户端和所述第二微服务客户端之间的第一微服务消息通道未被监听,且第二微服务消息通道已被监听;
若所述查询结果指示所述预设数据库中存在所述第一监听标识符、且不存在所述第二监听标识符,则确定所述第一微服务客户端和所述第二微服务客户端之间的第一微服务消息通道已被监听,且第二微服务消息通道未被监听。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述第一微服务客户端和所述第二微服务客户端之间的第一微服务消息通道未被监听,且第二微服务消息通道已被监听,则基于预设的远程调用协议构建所述微服务架构中所述第一微服务客户端和所述第二微服务客户端之间的第一微服务消息通道;
若所述第一微服务客户端和所述第二微服务客户端之间的第一微服务消息通道已被监听,且第二微服务消息通道未被监听,则基于预设的远程调用协议构建所述微服务架构中所述第一微服务客户端和所述第二微服务客户端之间的第二微服务消息通道。
6.根据权利要求1所述的方法,其特征在于,所述第一微服务消息通道和所述第二微服务消息通道用于指示消息队列,所述对所述第一微服务消息通道和所述第二微服务消息通道进行监听,当所述第一微服务消息通道监听到消息时,向所述第二微服务客户端发送监听到的消息,包括:
通过预设的第一阻塞监听指令对所述第一微服务消息通道进行阻塞消息拉取,并通过预设的第二阻塞监听指令对所述第二微服务消息通道进行阻塞消息拉取,所述第一阻塞监听指令和所述第二阻塞监听指令包括监听超时时长;
当在所述监听超时时长内对所述第一微服务消息通道拉取到消息时,将对所述第一微服务消息通道拉取到的消息发送至所述第二微服务客户端;
所述当所述第二微服务消息通道监听到消息时,向所述第一微服务客户端发送监听到的消息,包括:
当在所述监听超时时长内对所述第二微服务消息通道拉取到消息时,将对所述第二微服务消息通道拉取到的消息发送至所述第一微服务客户端。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若在所述监听超时时长内未拉取到所述第一微服务消息通道的消息,则释放所述第一微服务消息通道的监听锁;
若在所述监听超时时长内未拉取到所述第二微服务消息通道的消息,则释放所述第二微服务消息通道的监听锁。
8.根据权利要求7所述的方法,其特征在于,所述若在所述监听超时时长内未拉取到所述第一微服务消息通道的消息,则释放所述第一微服务消息通道的监听锁,包括:
若在所述监听超时时长内未拉取到所述第一微服务消息通道的消息,则删除预设数据库中所述第一微服务客户端的第一监听标识符,所述第一监听标识符用于指示所述第二微服务消息通道是否被监听;
所述若在所述监听超时时长内未拉取到所述第二微服务消息通道的消息,则释放所述第二微服务消息通道的监听锁,包括:
若在所述监听超时时长内未拉取到所述第二微服务消息通道的消息,则删除预设数据库中所述第二微服务客户端的第二监听标识符,所述第二监听标识符用于指示所述第一微服务消息通道是否被监听。
9.一种客户端的通信装置,应用于微服务架构,所述微服务架构包括至少一个服务端和至少两个微服务客户端,其特征在于,所述装置包括:
响应模块,用于微服务架构中任一服务端响应于第一微服务客户端对第二微服务客户端的通信指令,基于预设的远程调用协议构建所述微服务架构中所述第一微服务客户端和所述第二微服务客户端之间的第一微服务消息通道和第二微服务消息通道,所述第一微服务消息通道用于接收所述第一微服务客户端发送至所述第二微服务客户端的消息,所述第二微服务消息通道用于接收所述第二微服务客户端发送至所述第一微服务客户端的消息;
监听模块,用于对所述第一微服务消息通道和所述第二微服务消息通道进行监听,当所述第一微服务消息通道监听到消息时,向所述第二微服务客户端发送监听到的消息;
发送模块,用于当所述第二微服务消息通道监听到消息时,向所述第一微服务客户端发送监听到的消息。
10.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1-8任一项所述的客户端的通信方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现权利要求1-8任一项所述的客户端的通信方法。
CN202310144184.8A 2023-02-09 2023-02-09 客户端的通信方法、装置、电子设备和存储介质 Pending CN116319964A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310144184.8A CN116319964A (zh) 2023-02-09 2023-02-09 客户端的通信方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310144184.8A CN116319964A (zh) 2023-02-09 2023-02-09 客户端的通信方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN116319964A true CN116319964A (zh) 2023-06-23

Family

ID=86827981

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310144184.8A Pending CN116319964A (zh) 2023-02-09 2023-02-09 客户端的通信方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN116319964A (zh)

Similar Documents

Publication Publication Date Title
CN111756811B (zh) 一种分布式系统的主动推送的方法、系统、设备及介质
CN106844165B (zh) 告警方法及装置
CN107800565B (zh) 巡检方法、装置、系统、计算机设备和存储介质
EP3531749B1 (en) Management method, management unit and system for network function
CN106464584B (zh) 根据程序设计接口提供路由器信息
CN111258723B (zh) 分布式系统的事务处理方法、装置、系统、介质及设备
CN111258627A (zh) 一种接口文档生成方法和装置
JP2019525604A (ja) ネットワーク機能nf管理方法及びnf管理装置
CN114598749B (zh) 一种服务访问方法及装置
US8326913B2 (en) Method and system for service contract discovery
WO2019062634A1 (zh) 通信方法及装置
WO2022062661A1 (zh) 操作通知方法和装置、存储介质和电子装置
CN112448987A (zh) 一种熔断降级的触发方法、系统和存储介质
US8516094B2 (en) Method and network management apparatus for implementing information service level inheritance in network management system
CN114726789A (zh) 流量管理、配置流量管理策略的方法、装置、设备及介质
CN110768818B (zh) 一种网络管理方法和装置
WO2019201111A1 (zh) 信息处理方法、装置、设备及计算机可读存储介质
CN109726564B (zh) 应用于加密机的信息处理方法及信息处理系统
CN116319964A (zh) 客户端的通信方法、装置、电子设备和存储介质
CN108347462B (zh) 一种传输操作数据的方法及设备
KR20210008525A (ko) 가입 서버, 가입 단말기, 정보 가입 방법, 및 시스템
CN111756836B (zh) 一种基于事件管理模型的信息发送方法及装置
KR20090125470A (ko) 모바일 플랫폼에서 어플리케이션 간의 연동 방법과 장치 및그 기록매체
CN109639795B (zh) 一种基于AcitveMQ消息队列的服务管理方法与装置
CN108965431B (zh) Ibm主机实现事件驱动架构的方法及装置

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