CN114422518A - 请求服务的方法及装置 - Google Patents
请求服务的方法及装置 Download PDFInfo
- Publication number
- CN114422518A CN114422518A CN202210332523.0A CN202210332523A CN114422518A CN 114422518 A CN114422518 A CN 114422518A CN 202210332523 A CN202210332523 A CN 202210332523A CN 114422518 A CN114422518 A CN 114422518A
- Authority
- CN
- China
- Prior art keywords
- request
- service
- network
- cluster
- node
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供一种请求服务的方法及装置。所述方法应用于请求端,所述请求端用于请求第一服务,所述第一服务由服务集群提供,且所述请求端和所述服务集群分别位于相互隔离的第一网络和第二网络,所述方法包括:向所述服务集群发送查询消息,所述查询消息用于查询所述服务集群中的多个服务节点的拓扑信息;接收所述查询消息的响应消息,所述响应消息包含所述拓扑信息;根据所述拓扑信息,从所述多个服务节点中选取目标服务节点;向所述服务集群发送第一请求,所述第一请求用于请求所述目标服务节点为所述请求端提供所述第一服务。
Description
技术领域
本公开涉及数据传输领域,并且更为具体地,涉及一种请求服务的方法及装置。
背景技术
在一些业务场景中,不同的网络之间会做网络隔离。例如,请求端和服务端分别位于相互隔离的第一网络和第二网络。请求端向服务端发送请求时,是通过服务器负载均衡器(server load balancer,SLB)将请求均衡地分配给服务端的多个服务节点,以平衡多个服务节点的压力。
上述方案要求多个服务节点的服务能力对等。如果多个服务节点的服务能力不完全对等,SLB还是按照流量为服务节点分配请求,势必会造成为某个服务节点分配的任务超出其能力水平,而其他服务节点的压力还很小的情况。
相关技术提出可以在SLB和服务集群之间增加一层代理层,由代理层来为请求端的请求选择合适的服务节点。但是,这种方案需要在代理层额外制定一些计算策略,这会额外增加成本。
发明内容
本公开提供一种请求服务的方法及装置,以解决上述技术问题。
第一方面,提供一种请求服务的方法,所述方法应用于请求端,所述请求端用于请求第一服务,所述第一服务由服务集群提供,且所述请求端和所述服务集群分别位于相互隔离的第一网络和第二网络,所述方法包括:向所述服务集群发送查询消息,所述查询消息用于查询所述服务集群中的多个服务节点的拓扑信息;接收所述查询消息的响应消息,所述响应消息包含所述拓扑信息;根据所述拓扑信息,从所述多个服务节点中选取目标服务节点;向所述服务集群发送第一请求,所述第一请求用于请求所述目标服务节点为所述请求端提供所述第一服务。
在一些实施例中,所述第二网络中设置有代理组件,所述请求端通过所述代理组件访问所述服务集群。
在一些实施例中,在所述向所述服务集群发送第一请求之前,所述方法还包括:判断所述请求端与所述目标服务节点是否建立了连接;如果所述请求端与所述目标服务节点之间未建立连接,则向所述代理组件发送连接建立请求,以请求建立与所述目标服务节点之间的连接;所述向所述服务集群发送第一请求,包括:如果所述请求端与所述目标服务节点之间已经建立了连接,则向所述服务集群发送所述第一请求。
在一些实施例中,所述第二网络中设置有SLB,所述SLB与所述代理组件相连,用于将所述请求端的所述第一请求转发至所述代理组件。
在一些实施例中,所述第二网络为VPC网络。
在一些实施例中,所述服务集群为分布式数据库集群。
第二方面,提供一种请求服务的方法,所述方法应用于服务集群,所述服务集群用于为请求端提供第一服务,所述请求端和所述服务集群分别位于相互隔离的第一网络和第二网络,所述方法包括:接收请求端发送的查询消息,所述查询消息用于查询所述服务集群中的多个服务节点的拓扑信息;响应于所述查询消息,向所述请求端发送响应消息,所述响应消息包含所述拓扑信息,所述拓扑信息用于所述请求端从所述多个服务节点中选取目标服务节点;接收所述请求端发送的第一请求,所述第一请求用于请求所述目标服务节点为所述请求端提供所述第一服务。
在一些实施例中,所述第二网络中设置有代理组件,所述请求端通过所述代理组件访问所述服务集群。
在一些实施例中,在所述接收所述请求端发送的第一请求之前,所述方法还包括:通过所述代理组件接收所述请求端发送的连接建立请求,以建立与所述请求端的连接。
在一些实施例中,所述第二网络中设置有SLB,所述SLB与所述代理组件相连,用于将所述请求端的所述第一请求转发至所述代理组件。
在一些实施例中,所述第二网络为VPC网络。
在一些实施例中,所述服务集群为分布式数据库集群。
第三方面,提供一种请求服务的装置,所述装置应用于请求端,所述请求端用于请求第一服务,所述第一服务由服务集群提供,且所述请求端和所述服务集群分别位于相互隔离的第一网络和第二网络,所述装置包括:发送单元,用于向所述服务集群发送查询消息,所述查询消息用于查询所述服务集群中的多个服务节点的拓扑信息;接收单元,用于接收所述查询消息的响应消息,所述响应消息包含所述拓扑信息;选取单元,用于根据所述拓扑信息,从所述多个服务节点中选取目标服务节点;所述发送单元还用于向所述服务集群发送第一请求,所述第一请求用于请求所述目标服务节点为所述请求端提供所述第一服务。
在一些实施例中,所述第二网络中设置有代理组件,所述请求端通过所述代理组件访问所述服务集群。
在一些实施例中,在所述向所述服务集群发送第一请求之前,所述装置还包括:判断单元,用于判断所述请求端与所述目标服务节点是否建立了连接;所述发送单元还用于:如果所述请求端与所述目标服务节点之间未建立连接,则向所述代理组件发送连接建立请求,以请求建立与所述目标服务节点之间的连接;所述发送单元用于:如果所述请求端与所述目标服务节点之间已经建立了连接,则向所述服务集群发送所述第一请求。
在一些实施例中,所述第二网络中设置有SLB,所述SLB与所述代理组件相连,用于将所述请求端的所述第一请求转发至所述代理组件。
在一些实施例中,所述第二网络为VPC网络。
在一些实施例中,所述服务集群为分布式数据库集群。
第四方面,提供一种请求服务的装置,所述装置包括服务集群,所述服务集群用于为请求端提供第一服务,所述请求端和所述服务集群分别位于相互隔离的第一网络和第二网络,所述装置包括:接收单元,用于接收请求端发送的查询消息,所述查询消息用于查询所述服务集群中的多个服务节点的拓扑信息;发送单元,用于响应于所述查询消息,向所述请求端发送响应消息,所述响应消息包含所述拓扑信息,所述拓扑信息用于所述请求端从所述多个服务节点中选取目标服务节点;所述接收单元还用于接收所述请求端发送的第一请求,所述第一请求用于请求所述目标服务节点为所述请求端提供所述第一服务。
在一些实施例中,所述第二网络中设置有代理组件,所述请求端通过所述代理组件访问所述服务集群。
在一些实施例中,在所述接收所述请求端发送的第一请求之前,所述接收单元还用于:通过所述代理组件接收所述请求端发送的连接建立请求,以建立与所述请求端的连接。
在一些实施例中,所述第二网络中设置有SLB,所述SLB与所述代理组件相连,用于将所述请求端的所述第一请求转发至所述代理组件。
在一些实施例中,所述第二网络为VPC网络。
在一些实施例中,所述服务集群为分布式数据库集群。
第五方面,提供一种请求服务的装置,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现如第一方面或第二方面所述的方法。
第六方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有可执行代码,当所述可执行代码被执行时,能够实现如第一方面或第二方面所述的方法。
第七方面,提供一种计算机程序产品,包括可执行代码,当所述可执行代码被执行时,能够实现如第一方面或第二方面所述的方法。
本公开实施例通过服务集群将多个服务节点的拓扑信息发送至请求端,由请求端根据拓扑信息选择目标服务节点,从而实现由请求端自主选择目标服务节点,无需在代理层增加计算策略的目的,从而有利于节约成本。
另外,拓扑信息是服务集群发送给请求端的,请求端可以感知后端拓扑信息的变化,可以根据后端拓扑信息的变化自适应调整选择的目标服务节点,使得请求可以准确地路由至合适的服务节点。
附图说明
图1是一种传统的请求服务的系统架构图。
图2是本公开实施例提供的一种请求服务的方法的示意性流程图。
图3是本公开实施例提供的一种请求服务的系统架构图。
图4是本公开实施例提供的另一种请求服务的系统架构图。
图5是本公开实施例提供的一种请求服务的装置的示意性结构图。
图6是本公开实施例提供的另一种请求服务的装置的示意性结构图。
图7是本公开实施例提供的另一种请求服务的装置的示意性结构图。
具体实施方式
下面结合本公开实施例中的附图对本公开实施例进行描述。以下描述中,参考形成本公开一部分并以说明之方式示出本公开实施例的具体方面或可使用本公开实施例的具体方面的附图。应理解,本公开实施例可在其它方面中使用,并可包括附图中未描绘的结构或逻辑变化。因此,以下详细描述不应以限制性的意义来理解,且本公开的范围由所附权利要求书界定。例如,应理解,结合所描述方法的揭示内容可以同样适用于用于执行所述方法的对应设备或系统,且反之亦然。例如,如果描述一个或多个具体方法步骤,则对应的设备可以包含如功能单元等一个或多个单元,来执行所描述的一个或多个方法步骤(例如,一个单元执行一个或多个步骤,或多个单元,其中每个都执行多个步骤中的一个或多个),即使附图中未明确描述或说明这种一个或多个单元。另一方面,例如,如果基于如功能单元等一个或多个单元描述具体装置,则对应的方法可以包含一个步骤来执行一个或多个单元的功能性(例如,一个步骤执行一个或多个单元的功能性,或多个步骤,其中每个执行多个单元中一个或多个单元的功能性),即使附图中未明确描述或说明这种一个或多个步骤。进一步,应理解的是,除非另外明确提出,本文中所描述的各示例性实施例和/或方面的特征可以相互组合。
在一些业务场景中,不同的网络之间会做网络隔离。例如,请求端和服务端分别位于相互隔离的第一网络和第二网络。请求端也可以称为客户端,请求端例如可以为应用端,该应用端位于应用网络。服务端所在的网络例如可以为云网络,该云网络可以为公有云、私有云、混合云、虚拟私有云(virtual private cloud,VPC)中的任意一种。应用网络和云网络通常属于两个不同的网络,应用网络和云网络之间会做网络隔离。下面对云网络进行介绍。
随着云计算技术的高速发展,公有云的云平台可以为租户提供大量的服务和应用,租户可以通过互联网或局域网连接并操控远程服务器集群,完成业务逻辑或运算任务。将企业业务部署在云内,在云内使用平台或其他租户提供的服务,能够节省公网带宽费用,且可以保证网络性能和带宽,从而企业业务得到更好的体验。
公有云业务:是指把公有云业务提供方提供的基础设施作为一种服务通过互联网对外提供。在这种服务模型中,用户不用自己构建一个数据中心,而是通过租用的方式来使用服务器、存储和网络等基础设施。公有云业务通过提供虚拟环境(例如虚拟机)实现,公有云的核心属性是多用户共享云基础设施。
私有云业务:单个用户拥有服务器、存储和网络等基础设施,并可以完全控制此基础设施,私有云业务通过提供虚拟环境(例如虚拟机)实现,私有云业务的核心属性是单用户独享基础设施。
VPC是一种运行在公有云上,将一部分公有云资源为某个用户隔离出来,给这个用户私有使用的资源的集合。VPC是公有云业务的用户在云上数据中心的局域网。VPC为弹性计算服务(elastic compute service,ECS)构建隔离的、用户自主配置和管理的虚拟网络环境,提升用户云上资源的安全性,简化用户的网络部署。VPC由公有云管理,运行在公共资源上,但是保证每个用户之间的资源是隔离的。用户在使用的时候不受其他用户的影响,感觉像是在使用自己的私有云一样。用户可以在VPC中定义安全组、互联网协议(internetprotocol,IP)地址段、带宽等网络特性,也可以通过VPC方便地管理、配置内部网络,进行安全、快捷的网络变更。同时,用户还可以自定义安全组内与组间ECS的访问规则,加强ECS的安全保护。简单来说,VPC就是在云上为用户建立一块逻辑隔离的虚拟网络空间,用户可以方便地使用其中资源,就像使用私有云一样方便。
为了使用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务,服务端通常使用服务集群来提供服务。服务端通过分布式系统来实现对服务集群资源的管理。服务集群可以包括多个服务节点,服务节点例如可以为服务器。对于云网络,多个服务节点也可以称为多台云服务器或ECS实例。以数据库为例,该服务集群可以为分布式数据库集群,分布式系统为分布式数据库系统。
在网络隔离场景下,请求端和服务端会存在跨网络访问的需求。为了实现请求端对服务端的访问,通常由SLB来对外暴露服务。该SLB可以位于上述第二网络中。请求端向服务端发送请求时,可以先将请求发送至SLB,然后由SLB将该请求路由至服务节点。
如果服务端包括多个服务节点,则SLB还可以根据转发策略将请求分发到多个服务节点。SLB通过设置虚拟服务地址,将多个服务节点虚拟成一个高性能、高可用的后端服务池,并根据转发规则,将来自请求端的请求分发给后端服务池中的服务节点。本公开实施例中的SLB可以为四层SLB,也可以为七层SLB,本公开实施例对此不做具体限定。
当有大量请求端从外部访问虚拟服务IP地址时,SLB根据负载均衡算法,将这些请求流量均衡地分配给多个服务节点,以平衡各个服务节点的压力,避免出现部分服务节点压力较小,而其他服务节点达到性能临界点出现运行缓慢甚至宕机的情况,从而提高服务效率和质量。
由上可知,SLB仅是将请求端的请求均衡地分配到后端的多个服务节点上,以平衡多个服务节点的负载,这种方案要求后端的多个服务节点的服务能力完全对等。但是,如果多个服务节点的服务能力不完全对等,SLB还是按照流量为服务节点分配请求,势必会造成为某个服务节点分配的任务超出其能力水平,而其他服务节点的压力还很小的情况。
举例说明,以分布式数据库为例,不同的服务节点(也称数据库节点)存储有不同的数据。如果请求端请求的数据正好是服务节点本地的数据,则该服务节点可以将该请求作为local请求进行处理,此时,该服务节点消耗的代价是比较小的。如果请求端请求的数据不是服务节点本地的数据,而是其他服务节点上的数据,则该服务节点就需要将该请求作为remote请求进行处理,该服务节点需要远程访问其他服务节点上的数据,此时,该服务节点消耗的代价是比较大的。
由上可知,虽然服务集群中的多个服务节点都可以提供服务,但是local请求和remote请求的代价是不同的。因此,由于不同服务节点上存储的数据不同,请求端在请求数据时,不同服务节点在服务能力上是不完全对等的。如果不考虑服务节点的服务能力,而仅是按照流量对请求端的请求进行转发处理,势必会造成为某个服务节点分配的任务超出其能力水平,而其他服务节点的压力还很小的情况。
针对上述问题,相关技术提供了一种方案,可以在SLB和服务集群之间提供一层代理层,如图1所示。在代理层制定一定的计算策略,代理层可以根据请求端的请求,选择合适的目标服务节点进行处理,即代理层可以将请求端的请求转发至合适的目标服务节点,由目标服务节点来处理该请求。
仍以分布式数据库为例,代理层可以选择可以将请求作为local请求的服务节点作为目标服务节点,或者将处理该请求所需的代价最小的服务节点作为目标服务节点。举例说明,如果请求端的请求为查询请求,则目标服务节点可以为本地存储有该查询请求所要查询的数据的服务节点。
继续参见图1,代理层可以包括多个代理节点,该多个代理节点均与SLB相连。另外,该多个代理节点还可以与服务集群相连,即多个代理节点可以与服务集群中的多个服务节点相连,以将请求端的请求转发至多个服务节点中的某个服务节点。多个代理节点可以是无状态(或无差别)的,其可以提供相同的服务能力,SLB可以将请求端的请求均衡地分摊到该多个代理节点上。代理节点接收到请求后,可以根据内部的计算策略,确定目标服务节点,然后将该请求路由至目标服务节点。
虽然通过增加代理层,可以将请求准确地转发给后端最合适的服务节点。但是,这种方案需要在代理层额外增加一些定制化能力,比如提供路由计算能力,这会额外增加成本。另外,对于本身具有能够选择服务节点能力的请求端(或前端)而言,由于请求端与服务集群之间的网络隔离,请求端仍然也无法进行服务节点的选择,只能由后端代理来进行选择。例如,对于无网络隔离的场景,即请求端和服务端位于同一网络中,请求端可以自主获取多个服务节点的拓扑信息,并选择合适的目标服务节点来处理自己的请求。在该场景下,请求端具有自主选择服务节点的能力,即请求端本身已经集成了选择目标服务节点的策略。但是,在本公开实施例的网络隔离的场景下,由于请求端和服务端位于相互隔离的网络,导致请求端无法获取到多个服务节点的拓扑信息,不能自主选择目标服务节点。
基于此,本公开实施例提供了一种请求服务的方法及装置,该方法通过服务集群将多个服务节点的拓扑信息发送至请求端,由请求端根据拓扑信息选择目标服务节点,从而实现由请求端自主选择目标服务节点,无需在代理层增加计算策略的目的。另外,拓扑信息是服务集群发送给请求端的,请求端可以感知后端拓扑信息的变化,可以根据后端拓扑信息的变化自适应调整选择的目标服务节点,使得请求可以准确地路由至合适的服务节点。由上可知,本公开实施例中的请求端可以突破网络的限制,实现更多的功能。
对于网络隔离的场景,存在跨网络访问的需求。对于分布式系统,又存在系统内部的路由问题。本公开实施例就是解决分布式系统在网络隔离下的路由问题。本公开实施例的方案可应用于任意一种网络隔离下需要准确路由的场景。例如,本公开实施例的方案可应用于应用和数据库之间网络隔离的场景,也可以应用在主备库分属于不同的隔离网络的场景。
图2是本公开实施例提供的一种请求服务的方法的示意性流程图。图2所示的方法应用于请求端和服务集群。请求端和服务集群分别位于相互隔离的第一网络和第二网络。第一网络可以为上文描述的应用网络,第二网络可以为上文描述的云网络。
请求端用于请求第一服务,该第一服务由服务集群提供。如果服务集群为分布式数据库集群,则第一服务可以为查询数据、增加数据、删除数据、修改数据中的一种或多种。
参见图2,图2所示的方法包括步骤S210~步骤S240。在步骤S210、请求端向服务集群发送查询消息。该查询消息可用于查询服务集群中的多个服务节点的拓扑信息。
本公开实施例对多个服务节点的拓扑信息不做具体限定,该拓扑信息可以是任意一种能够辅助请求端选择目标服务节点的信息。作为一个示例,多个服务节点的拓扑信息可以指多个服务节点的处理能力信息。例如,多个服务节点的拓扑信息可以包括多个服务节点分别能够处理什么样的请求的信息。又例如,多个服务节点的拓扑信息可以包括多个服务节点处理不同请求的代价大小的信息。对于数据库系统,多个服务节点的拓扑信息可以指多个服务节点中存储的数据的类型,和/或,多个服务节点能够写入的数据类型。
请求端向服务集群发送查询消息,可以指请求端向服务集群中的任意一个服务节点发送查询消息,或者请求端向服务集群中的特定服务节点发送查询消息,本公开实施例对此不做具体限定。
在一些实施例中,如果多个服务节点中每个服务节点上都存储有拓扑信息,则请求端可以向服务集群中的任意一个服务节点发送查询消息。
在一些实施例中,为了节省存储空间,避免数据冗余,服务集群中仅有部分服务节点(如一个或多个服务节点)上存储有拓扑信息,则请求端可以向该部分服务节点发送查询消息。
在一些实施例中,请求端可以根据与服务节点建立的连接情况,向已经建立了连接的服务节点发送查询消息。
在步骤S220、服务集群响应于该查询消息,向请求端发送响应消息。该响应消息中包含该拓扑信息。该拓扑信息可用于从多个服务节点中选择目标服务节点。
在步骤S230、请求端根据该拓扑信息,从多个服务节点中选取目标服务节点。
本公开实施例对请求端选取目标服务节点的方式不做具体限定。
作为一个示例,请求端可以选择能够提供第一服务的服务节点作为目标服务节点。作为另一个示例,请求端可以选择处理第一服务所需的代价最小的服务节点作为目标服务节点。
以数据库系统为例进行举例说明,如果第一服务为查询数据服务,则请求端可以选择存储有所要查询的数据的服务节点作为目标服务节点。如果第一服务为删除数据服务,则请求端可以选择存储有所要删除的数据的服务节点作为目标服务节点。如果第一服务为增加数据服务,则请求端可以选择能够存储所要增加的数据的服务节点作为目标服务节点。如果第一服务为修改数据服务,则请求端可以选择存储有所要修改的数据的服务节点作为目标服务节点。
当然,在一些实施例中,也存在所要处理(增加、删除、修改、查询)的数据分布在多个服务节点的情况,在该情况下,请求端可以选择任意一个服务节点作为目标服务节点,或者,请求端可以选择处理第一服务所需的代价最小的服务节点作为目标服务节点。以数据查询为例,如果所要查询的数据分布在第一服务节点和第二服务节点,则请求端可以选择第一服务节点和第二服务节点中任意一个服务节点作为目标服务节点,或者,请求端可以从第一服务节点和第二服务节点中选择处理查询数据服务所需代价最小的服务节点作为目标服务节点。
在步骤S240、请求端向服务集群发送第一请求,该第一请求用于请求目标服务节点为请求端提供第一服务。
请求端向服务集群发送第一请求,可以指请求端向服务集群中的目标服务节点发送第一请求,或者,请求端也可以将第一请求发送给任意一个服务节点,并由该服务节点将该第一请求转发至目标服务节点。
在一些实施例中,第二网络中还可以设置代理组件,请求端可以通过代理组件访问服务集群。该代理组件可以位于图1所示的代理层。请求端向服务集群发送第一请求,可以指请求端向代理组件发送第一请求,然后代理组件将第一请求路由至服务集群。
代理组件可以包括多个代理节点,请求端可以向多个代理节点中的第一代理节点发送第一请求。第一代理节点可以为任意一个代理节点,或者,第一代理节点可以为与请求端建立了连接的代理节点。
在向服务集群发送第一请求之前,请求端还可以判断与目标服务节点是否建立了连接。如果请求端与目标服务节点已经建立了连接,则请求端可以向目标服务节点发送第一请求。如果请求端与目标服务节点未建立连接,则请求端可以先建立与目标服务节点的连接,然后再向目标服务节点发送第一请求。例如,请求端可以向代理组件发送连接建立请求,以请求建立与目标服务节点之间的连接。
请求端与目标服务节点之间的连接可以包括:请求端与代理组件之间的连接以及代理组件与目标服务节点之间的连接。请求端与目标服务节点之间的请求和响应都可以通过该连接来传输。
举例说明,如果请求端通过代理节点1与目标服务节点建立了连接,则请求端可以向代理节点1发送第一请求,以请求代理节点1将第一请求路由至目标服务节点。如果请求端与目标服务节点未建立连接,则请求端先选择一个代理节点(记为代理节点2),并建立与该代理节点2之间的连接,然后向该代理节点2发送连接建立请求,该连接建立请求中可以包括目标服务节点的信息,以使该代理节点2建立与目标服务节点之间的连接。其中,目标服务节点的信息可以包括目标服务节点的IP地址。进一步地,请求端可以向代理节点2发送第一请求,以使代理节点2将第一请求路由至目标服务节点。
需要说明的是,请求端向代理节点发送第一请求可以理解为,请求端通过请求端与代理节点之间的连接通道发送第一请求。代理节点向目标服务节点发送第一请求可以理解为代理节点通过代理节点与目标服务节点之间的连接通道发送第一请求。通过请求端与目标服务节点之间的连接通道,请求端可以将请求准确地发送至目标服务节点。
请求端可以维护与服务节点之间的连接关系,并根据维护的连接关系,确定是否与目标服务节点建立了连接。请求端维护的信息例如可以为“源IP、目标IP、连接与否”。源IP可以指请求端的IP地址,目标IP可以指服务节点的IP地址。
在一些实施例中,第二网络中设置有SLB,SLB可以提供跨网络服务。SLB可以与代理组件相连,用于将请求端的第一请求转发至代理组件。例如,请求端可以将第一请求发送至SLB,然后由SLB根据流量均衡策略,将第一请求转发至代理组件中的代理节点。
本公开实施例的方案可以建立在传输控制协议(transmission controlprotocol,TCP)之上,即请求端、代理节点和服务节点之间可以使用TCP进行通信。这是所有的系统都支持的,对服务节点的内核没有特殊要求,因此本公开实施例的方案具有普适性。
下面结合图3和图4,对本公开实施例的方案进行举例说明。
图3和图4所示的应用310位于第一网络,SLB 320、代理组件330和服务集群340位于第二网络。应用310可以包括应用实例1和应用实例2,应用实例也可以理解为用户,即应用可以包括用户1和用户2。代理组件330可以包括代理节点1和代理节点2。服务集群340可以包括服务节点1和服务节点2。
参见图3,应用实例1中包括请求1和请求2,应用实例1通过代理节点1与服务节点1之间建立了连接。如果针对请求1和请求2,应用实例1选择的目标服务节点均是服务节点1,则应用实例1可以将请求1和请求2通过代理节点1发送至服务节点1,以使服务节点1对请求1和请求2进行处理。服务节点1处理完成后,可以通过代理节点1将响应消息发送至应用实例1。
参见图3,应用实例2包括请求3和请求4,应用实例2通过代理节点2与服务节点2之间建立了连接。如果针对请求3和请求4,应用实例2选择的目标服务节点均是服务节点2,则应用实例2可以将请求3和请求4通过代理节点2发送至服务节点2,以使服务节点2对请求3和请求4进行处理。服务节点2处理完成后,可以通过代理节点2将响应消息发送至应用实例2。
参见图4,应用实例1中包括请求1和请求2,应用实例1通过代理节点1与服务节点1、服务节点2之间建立了连接。如果针对请求1,应用实例1选择的目标服务节点是服务节点1,则应用实例1可以将请求1通过代理节点1发送至服务节点1,以使服务节点1对请求1进行处理。服务节点1处理完成后,可以通过代理节点1将响应消息发送至应用实例1。如果针对请求2,应用实例1选择的目标服务节点为服务节点2,则应用实例1可以将请求2通过代理节点1发送至服务节点2,以使服务节点2对请求2进行处理。服务节点2处理完成后,可以通过代理节点1将响应消息发送至应用实例1。
参见图4,应用实例2中包括请求3和请求4,应用实例2通过代理节点2与服务节点1、服务节点2之间建立了连接。如果针对请求3,应用实例2选择的目标服务节点是服务节点1,则应用实例2可以将请求3通过代理节点2发送至服务节点1,以使服务节点1对请求3进行处理。服务节点1处理完成后,可以通过代理节点2将响应消息发送至应用实例2。如果针对请求4,应用实例2选择的目标服务节点为服务节点2,则应用实例2可以将请求4通过代理节点2发送至服务节点2,以使服务节点2对请求4进行处理。服务节点2处理完成后,可以通过代理节点2将响应消息发送至应用实例2。
需要说明的是,应用实例在向代理节点发送请求时,还可以携带目标服务节点的IP地址,以使代理节点能够知道将该请求路由至哪个服务节点。
上文结合图1至图4,详细描述了本公开的方法实施例,下面结合图5至图7,详细描述本公开的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图5是本公开实施例提供的一种请求服务的装置的示意性框图。图5所示的装置可应用于请求端。该请求端用于请求第一服务,所述第一服务由服务集群提供,且所述请求端和所述服务集群分别位于相互隔离的第一网络和第二网络。图5所示的装置包括发送单元510、接收单元520以及选取单元530。
发送单元510,用于向所述服务集群发送查询消息,所述查询消息用于查询所述服务集群中的多个服务节点的拓扑信息。
接收单元520,用于接收所述查询消息的响应消息,所述响应消息包含所述拓扑信息。
选取单元530,用于根据所述拓扑信息,从所述多个服务节点中选取目标服务节点。
所述发送单元510还用于向所述服务集群发送第一请求,所述第一请求用于请求所述目标服务节点为所述请求端提供所述第一服务。
在一些实施例中,所述第二网络中设置有代理组件,所述请求端通过所述代理组件访问所述服务集群。
在一些实施例中,在所述向所述服务集群发送第一请求之前,所述装置500还包括:判断单元,用于判断所述请求端与所述目标服务节点是否建立了连接;所述发送单元510还用于:如果所述请求端与所述目标服务节点之间未建立连接,则向所述代理组件发送连接建立请求,以请求建立与所述目标服务节点之间的连接;所述发送单元510用于:如果所述请求端与所述目标服务节点之间已经建立了连接,则向所述服务集群发送所述第一请求。
在一些实施例中,所述第二网络中设置有SLB,所述SLB与所述代理组件相连,用于将所述请求端的所述第一请求转发至所述代理组件。
在一些实施例中,所述第二网络为VPC网络。
在一些实施例中,所述服务集群为分布式数据库集群。
图6是本公开实施例提供的一种请求服务的装置的示意性框图。图6所示的装置可应用于服务集群。所述服务集群用于为请求端提供第一服务,所述请求端和所述服务集群分别位于相互隔离的第一网络和第二网络。图6所示的装置包括接收单元610和发送单元620。
接收单元610,用于接收请求端发送的查询消息,所述查询消息用于查询所述服务集群中的多个服务节点的拓扑信息。
发送单元620,用于响应于所述查询消息,向所述请求端发送响应消息,所述响应消息包含所述拓扑信息,所述拓扑信息用于所述请求端从所述多个服务节点中选取目标服务节点。
所述接收单元610还用于接收所述请求端发送的第一请求,所述第一请求用于请求所述目标服务节点为所述请求端提供所述第一服务。
在一些实施例中,所述第二网络中设置有代理组件,所述请求端通过所述代理组件访问所述服务集群。
在一些实施例中,在所述接收所述请求端发送的第一请求之前,所述接收单元610还用于:通过所述代理组件接收所述请求端发送的连接建立请求,以建立与所述请求端的连接。
在一些实施例中,所述第二网络中设置有SLB,所述SLB与所述代理组件相连,用于将所述请求端的所述第一请求转发至所述代理组件。
在一些实施例中,所述第二网络为VPC网络。
在一些实施例中,所述服务集群为分布式数据库集群。
图7是本公开另一实施例提供的请求服务的装置的结构示意图。图7所述的装置700可以包括存储器710和处理器720,存储器710可以用于存储指令。处理器720可以用于执行存储器710中存储的指令,以实现前文描述的各个方法中的步骤。在一些实施例中,该装置700还可以包括网络接口730,处理器720与外部设备的数据交换可以通过该网络接口730实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本公开实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (25)
1.一种请求服务的方法,所述方法应用于请求端,所述请求端用于请求第一服务,所述第一服务由服务集群提供,且所述请求端和所述服务集群分别位于相互隔离的第一网络和第二网络,
所述方法包括:
向所述服务集群发送查询消息,所述查询消息用于查询所述服务集群中的多个服务节点的拓扑信息;
接收所述查询消息的响应消息,所述响应消息包含所述拓扑信息;
根据所述拓扑信息,从所述多个服务节点中选取目标服务节点;
向所述服务集群发送第一请求,所述第一请求用于请求所述目标服务节点为所述请求端提供所述第一服务。
2.根据权利要求1所述的方法,所述第二网络中设置有代理组件,所述请求端通过所述代理组件访问所述服务集群。
3.根据权利要求2所述的方法,在所述向所述服务集群发送第一请求之前,所述方法还包括:
判断所述请求端与所述目标服务节点是否建立了连接;
如果所述请求端与所述目标服务节点之间未建立连接,则向所述代理组件发送连接建立请求,以请求建立与所述目标服务节点之间的连接;
所述向所述服务集群发送第一请求,包括:
如果所述请求端与所述目标服务节点之间已经建立了连接,则向所述服务集群发送所述第一请求。
4.根据权利要求2所述的方法,所述第二网络中设置有服务器负载均衡器SLB,所述SLB与所述代理组件相连,用于将所述请求端的所述第一请求转发至所述代理组件。
5.根据权利要求1所述的方法,所述第二网络为虚拟私有云VPC网络。
6.根据权利要求1所述的方法,所述服务集群为分布式数据库集群。
7.一种请求服务的方法,所述方法应用于服务集群,所述服务集群用于为请求端提供第一服务,所述请求端和所述服务集群分别位于相互隔离的第一网络和第二网络,
所述方法包括:
接收请求端发送的查询消息,所述查询消息用于查询所述服务集群中的多个服务节点的拓扑信息;
响应于所述查询消息,向所述请求端发送响应消息,所述响应消息包含所述拓扑信息,所述拓扑信息用于所述请求端从所述多个服务节点中选取目标服务节点;
接收所述请求端发送的第一请求,所述第一请求用于请求所述目标服务节点为所述请求端提供所述第一服务。
8.根据权利要求7所述的方法,所述第二网络中设置有代理组件,所述请求端通过所述代理组件访问所述服务集群。
9.根据权利要求8所述的方法,在所述接收所述请求端发送的第一请求之前,所述方法还包括:
通过所述代理组件接收所述请求端发送的连接建立请求,以建立与所述请求端的连接。
10.根据权利要求8所述的方法,所述第二网络中设置有服务器负载均衡器SLB,所述SLB与所述代理组件相连,用于将所述请求端的所述第一请求转发至所述代理组件。
11.根据权利要求7所述的方法,所述第二网络为虚拟私有云VPC网络。
12.根据权利要求7所述的方法,所述服务集群为分布式数据库集群。
13.一种请求服务的装置,所述装置应用于请求端,所述请求端用于请求第一服务,所述第一服务由服务集群提供,且所述请求端和所述服务集群分别位于相互隔离的第一网络和第二网络,
所述装置包括:
发送单元,用于向所述服务集群发送查询消息,所述查询消息用于查询所述服务集群中的多个服务节点的拓扑信息;
接收单元,用于接收所述查询消息的响应消息,所述响应消息包含所述拓扑信息;
选取单元,用于根据所述拓扑信息,从所述多个服务节点中选取目标服务节点;
所述发送单元还用于向所述服务集群发送第一请求,所述第一请求用于请求所述目标服务节点为所述请求端提供所述第一服务。
14.根据权利要求13所述的装置,所述第二网络中设置有代理组件,所述请求端通过所述代理组件访问所述服务集群。
15.根据权利要求14所述的装置,在所述向所述服务集群发送第一请求之前,所述装置还包括:
判断单元,用于判断所述请求端与所述目标服务节点是否建立了连接;
所述发送单元还用于:如果所述请求端与所述目标服务节点之间未建立连接,则向所述代理组件发送连接建立请求,以请求建立与所述目标服务节点之间的连接;
所述发送单元用于:
如果所述请求端与所述目标服务节点之间已经建立了连接,则向所述服务集群发送所述第一请求。
16.根据权利要求14所述的装置,所述第二网络中设置有服务器负载均衡器SLB,所述SLB与所述代理组件相连,用于将所述请求端的所述第一请求转发至所述代理组件。
17.根据权利要求13所述的装置,所述第二网络为虚拟私有云VPC网络。
18.根据权利要求13所述的装置,所述服务集群为分布式数据库集群。
19.一种请求服务的装置,所述装置包括服务集群,所述服务集群用于为请求端提供第一服务,所述请求端和所述服务集群分别位于相互隔离的第一网络和第二网络,
所述装置包括:
接收单元,用于接收请求端发送的查询消息,所述查询消息用于查询所述服务集群中的多个服务节点的拓扑信息;
发送单元,用于响应于所述查询消息,向所述请求端发送响应消息,所述响应消息包含所述拓扑信息,所述拓扑信息用于所述请求端从所述多个服务节点中选取目标服务节点;
所述接收单元还用于接收所述请求端发送的第一请求,所述第一请求用于请求所述目标服务节点为所述请求端提供所述第一服务。
20.根据权利要求19所述的装置,所述第二网络中设置有代理组件,所述请求端通过所述代理组件访问所述服务集群。
21.根据权利要求20所述的装置,在所述接收所述请求端发送的第一请求之前,所述接收单元还用于:
通过所述代理组件接收所述请求端发送的连接建立请求,以建立与所述请求端的连接。
22.根据权利要求20所述的装置,所述第二网络中设置有服务器负载均衡器SLB,所述SLB与所述代理组件相连,用于将所述请求端的所述第一请求转发至所述代理组件。
23.根据权利要求19所述的装置,所述第二网络为虚拟私有云VPC网络。
24.根据权利要求19所述的装置,所述服务集群为分布式数据库集群。
25.一种请求服务的装置,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现如权利要求1-12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210332523.0A CN114422518A (zh) | 2022-03-31 | 2022-03-31 | 请求服务的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210332523.0A CN114422518A (zh) | 2022-03-31 | 2022-03-31 | 请求服务的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114422518A true CN114422518A (zh) | 2022-04-29 |
Family
ID=81264531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210332523.0A Pending CN114422518A (zh) | 2022-03-31 | 2022-03-31 | 请求服务的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114422518A (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102469015A (zh) * | 2010-11-17 | 2012-05-23 | 中兴通讯股份有限公司 | 实现中继选择的方法及装置、系统 |
US20120203888A1 (en) * | 2011-02-08 | 2012-08-09 | Microsoft Corporation | Selecting computing nodes in cloud service using replication topologies |
CN103501319A (zh) * | 2013-09-18 | 2014-01-08 | 北京航空航天大学 | 一种低延迟的面向小文件的分布式存储系统 |
CN106470142A (zh) * | 2015-08-14 | 2017-03-01 | 中国电信股份有限公司 | 虚拟网络拓扑自助生成方法和系统 |
EP3254479A1 (en) * | 2015-02-05 | 2017-12-13 | Telefonaktiebolaget LM Ericsson (publ) | Topology database for application service support at access nodes |
CN107623732A (zh) * | 2017-09-15 | 2018-01-23 | 郑州云海信息技术有限公司 | 一种基于云平台的数据存储方法、装置、设备及存储介质 |
CN109831318A (zh) * | 2018-12-26 | 2019-05-31 | 中兴通讯股份有限公司 | 一种获取网络拓扑的系统、方法和服务器 |
CN109873713A (zh) * | 2018-12-28 | 2019-06-11 | 华中科技大学 | 用于位置服务的无中心化服务集群系统及故障检测方法 |
US20200366759A1 (en) * | 2019-05-17 | 2020-11-19 | Citrix Systems, Inc. | Systems and methods for managing client requests to access services provided by a data center |
CN112579551A (zh) * | 2019-09-30 | 2021-03-30 | 北京金山云网络技术有限公司 | 数据存储和读取方法、装置、客户端、管理服务器及系统 |
CN113452592A (zh) * | 2021-06-09 | 2021-09-28 | 北京奥星贝斯科技有限公司 | 混合云架构下的跨云数据访问方法及装置 |
CN114153580A (zh) * | 2021-11-25 | 2022-03-08 | 邦道科技有限公司 | 一种跨多集群的工作调度方法及装置 |
-
2022
- 2022-03-31 CN CN202210332523.0A patent/CN114422518A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102469015A (zh) * | 2010-11-17 | 2012-05-23 | 中兴通讯股份有限公司 | 实现中继选择的方法及装置、系统 |
US20120203888A1 (en) * | 2011-02-08 | 2012-08-09 | Microsoft Corporation | Selecting computing nodes in cloud service using replication topologies |
CN103501319A (zh) * | 2013-09-18 | 2014-01-08 | 北京航空航天大学 | 一种低延迟的面向小文件的分布式存储系统 |
EP3254479A1 (en) * | 2015-02-05 | 2017-12-13 | Telefonaktiebolaget LM Ericsson (publ) | Topology database for application service support at access nodes |
CN106470142A (zh) * | 2015-08-14 | 2017-03-01 | 中国电信股份有限公司 | 虚拟网络拓扑自助生成方法和系统 |
CN107623732A (zh) * | 2017-09-15 | 2018-01-23 | 郑州云海信息技术有限公司 | 一种基于云平台的数据存储方法、装置、设备及存储介质 |
CN109831318A (zh) * | 2018-12-26 | 2019-05-31 | 中兴通讯股份有限公司 | 一种获取网络拓扑的系统、方法和服务器 |
CN109873713A (zh) * | 2018-12-28 | 2019-06-11 | 华中科技大学 | 用于位置服务的无中心化服务集群系统及故障检测方法 |
US20200366759A1 (en) * | 2019-05-17 | 2020-11-19 | Citrix Systems, Inc. | Systems and methods for managing client requests to access services provided by a data center |
CN112579551A (zh) * | 2019-09-30 | 2021-03-30 | 北京金山云网络技术有限公司 | 数据存储和读取方法、装置、客户端、管理服务器及系统 |
CN113452592A (zh) * | 2021-06-09 | 2021-09-28 | 北京奥星贝斯科技有限公司 | 混合云架构下的跨云数据访问方法及装置 |
CN114153580A (zh) * | 2021-11-25 | 2022-03-08 | 邦道科技有限公司 | 一种跨多集群的工作调度方法及装置 |
Non-Patent Citations (1)
Title |
---|
刘源: "基于Docker异构虚拟计算的混合云设计与实现", 《北京邮电大学硕士学位论文》, 31 October 2018 (2018-10-31) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10374955B2 (en) | Managing network computing components utilizing request routing | |
US11693716B2 (en) | Independent datastore in a network routing environment | |
US9923958B1 (en) | Highly available network filer with automatic load balancing and performance adjustment | |
US8065395B2 (en) | System and method for queuing to a cloud via a queuing proxy | |
US20200403905A1 (en) | Serverless packet processing service with isolated virtual network integration | |
CN102281190B (zh) | 负载均衡装置组网方法以及服务器、客户端接入方法 | |
JP6106334B2 (ja) | 高度なサービスルーティングを実行するための方法、システムおよびコンピュータ読取可能媒体 | |
US20180069787A1 (en) | Exposing a subset of hosts on an overlay network to components external to the overlay network without exposing another subset of hosts on the overlay network | |
US20120191769A1 (en) | Site-aware distributed file system access from outside enterprise network | |
CN103346910A (zh) | 服务器可用状态的管理方法和装置 | |
US9760370B2 (en) | Load balancing using predictable state partitioning | |
CN113364741A (zh) | 一种应用访问方法及代理服务器 | |
CN116389599A (zh) | 网关服务请求的处理、云原生网关系统的管理方法及装置 | |
CN114025009B (zh) | 转发请求的方法、系统、代理服务器和装置 | |
CN112910796B (zh) | 流量管理方法、装置、设备、存储介质以及程序产品 | |
US11108854B2 (en) | Peer-to-peer network for internet of things resource allocation operation | |
CN110611688B (zh) | 用于查找节点的方法、电子设备和计算机程序产品 | |
US8107472B1 (en) | Network single entry point for subscriber management | |
CN116708538A (zh) | 一种以对等网络为基础的微服务系统 | |
CN102404294A (zh) | 一种实现cdn互连的方法和系统 | |
CN114422518A (zh) | 请求服务的方法及装置 | |
US20220350748A1 (en) | Consistent hashing for communication devices | |
US20090106387A1 (en) | Cidr based caching at application layer | |
US20140181307A1 (en) | Routing apparatus and method | |
US10848418B1 (en) | Packet processing service extensions at remote premises |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220429 |
|
RJ01 | Rejection of invention patent application after publication |