CN114048046B - 一种服务的调用方法、装置及负载均衡设备 - Google Patents
一种服务的调用方法、装置及负载均衡设备 Download PDFInfo
- Publication number
- CN114048046B CN114048046B CN202111315927.0A CN202111315927A CN114048046B CN 114048046 B CN114048046 B CN 114048046B CN 202111315927 A CN202111315927 A CN 202111315927A CN 114048046 B CN114048046 B CN 114048046B
- Authority
- CN
- China
- Prior art keywords
- service
- load balancing
- metadata
- registry
- routing information
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Abstract
本说明书实施例公开了一种服务的调用方法、装置及负载均衡设备,该方法应用于负载均衡设备,不同的负载均衡设备之间通过数据同步来保持数据的一致性,包括:在获取到第一服务提交的服务调用请求时(其中,第一服务和第二服务为在不同的注册中心注册的服务),基于第一服务对应的负载均衡设备到待调用的第二服务对应的负载均衡设备之间的链路,从第二服务对应的注册中心中拉取与第二服务的标识对应的服务路由信息,之后们可以将该服务路由信息提供给第一服务,以使第一服务基于该服务路由信息访问第二服务以获取服务调用请求对应的数据。通过上述服务的调用方法,可以实现跨注册中心、跨区域的服务调用,而且本方案无代码入侵,可扩展性较强。
Description
技术领域
本文件涉及计算机技术领域,尤其涉及一种服务的调用方法、装置及负载均衡设备。
背景技术
在有了注册中心之后,每个服务在调用其它服务时,只需要知道服务标识(如服务名称等),即可通过该服务标识在注册中心中进行服务调用。
对于服务注册,需要将服务注册与服务注销的逻辑写进业务系统的代码中(如植入相应的SDK(Software Development Kit,软件开发工具包)等),当一个服务启动时,将该服务的信息写入注册中心,当一个服务下线时,注销该服务的相关信息,且对于不同的业务系统通常需要不同的编程语言实现相同的一套逻辑,显然上述处理对相应的业务有较强的侵入性,耦合度较高,且服务注册是在应用启动时,从而拖慢了启动速度。对于服务发现,注册中心需要与服务建立推拉模型(即需要注入相应的处理逻辑(如植入相应的SDK等)),服务通过该推拉模型,需要在本地缓存应用元数据列表,并需要定期或在需要时重新获取应用元数据,而且注册于不同的注册中心的服务无法完成服务发现处理,且上述处理对相应的业务也具有较强的入侵,耦合性较高。为此,需要提供一种对业务或服务的侵入性较弱、耦合性较低,且具有更优的服务端架构的服务注册与服务发现的处理机制。
发明内容
本说明书实施例的目的是提供一种对业务或服务的侵入性较弱、耦合性较低,且具有更优的服务端架构的服务注册与服务发现的处理机制。
为了实现上述技术方案,本说明书实施例是这样实现的:
本说明书实施例提供的一种服务的调用方法,应用于负载均衡设备,不同的负载均衡设备之间通过数据同步来保持数据的一致性,所述方法包括:
获取第一服务提交的服务调用请求,所述服务调用请求中包括待调用的第二服务的标识,所述第一服务和所述第二服务为在不同的注册中心注册的服务;
基于所述第一服务对应的负载均衡设备到所述第二服务对应的负载均衡设备之间的链路,从所述第二服务对应的注册中心中拉取与所述第二服务的标识对应的服务路由信息;
将所述服务路由信息提供给所述第一服务,以使所述第一服务基于所述服务路由信息访问所述第二服务以获取所述服务调用请求对应的数据。
本说明书实施例提供的一种服务的调用装置,不同的服务的调用装置之间通过数据同步来保持数据的一致性,所述装置包括:
服务调用请求模块,被配置为获取第一服务提交的服务调用请求,所述服务调用请求中包括待调用的第二服务的标识,所述第一服务和所述第二服务为在不同的注册中心注册的服务;
服务路由获取模块,被配置为基于所述第一服务对应的服务的调用装置到所述第二服务对应的服务的调用装置之间的链路,从所述第二服务对应的注册中心中拉取与所述第二服务的标识对应的服务路由信息;
数据访问模块,被配置为将所述服务路由信息提供给所述第一服务,以使所述第一服务基于所述服务路由信息访问所述第二服务以获取所述服务调用请求对应的数据。
本说明书实施例提供的一种负载均衡设备,不同的负载均衡设备之间通过数据同步来保持数据的一致性,所述负载均衡设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
获取第一服务提交的服务调用请求,所述服务调用请求中包括待调用的第二服务的标识,所述第一服务和所述第二服务为在不同的注册中心注册的服务;
基于所述第一服务对应的负载均衡设备到所述第二服务对应的负载均衡设备之间的链路,从所述第二服务对应的注册中心中拉取与所述第二服务的标识对应的服务路由信息;
将所述服务路由信息提供给所述第一服务,以使所述第一服务基于所述服务路由信息访问所述第二服务以获取所述服务调用请求对应的数据。
本说明书实施例还提供了一种存储介质,其中,所述存储介质用于存储计算机可执行指令,所述可执行指令在被执行时实现以下流程:
获取第一服务提交的服务调用请求,所述服务调用请求中包括待调用的第二服务的标识,所述第一服务和所述第二服务为在不同的注册中心注册的服务;
基于所述第一服务对应的负载均衡设备到所述第二服务对应的负载均衡设备之间的链路,从所述第二服务对应的注册中心中拉取与所述第二服务的标识对应的服务路由信息,其中,不同的负载均衡设备之间通过数据同步来保持数据的一致性;
将所述服务路由信息提供给所述第一服务,以使所述第一服务基于所述服务路由信息访问所述第二服务以获取所述服务调用请求对应的数据。
相较于现有技术,本申请提供的一种服务的调用方法,应用于负载均衡设备,不同的负载均衡设备之间通过数据同步来保持数据的一致性,通过在获取到第一服务提交的服务调用请求时,可以基于第一服务对应的负载均衡设备到待调用的第二服务(其中,第一服务和第二服务为在不同的注册中心注册的服务)对应的负载均衡设备之间的链路,从第二服务对应的注册中心中拉取与第二服务对应的服务路由信息,并将该服务路由信息提供给第一服务,以使第一服务基于该服务路由信息访问第二服务以获取该服务调用请求对应的数据,这样,发起调用请求的第一服务到待调用的第二服务之间的链路,可以实现跨注册中心、跨区域的服务调用,从而完成服务发现处理,此外,如果上述链路中包括多个负载均衡设备,则还可以实现多次的负载均衡处理,在高并发的场景下,多次的负载均衡处理将会给业务系统带来较大的收益,从而通过负载均衡设备不但可以保证数据实时性,更可以解决服务异地发现,服务异地调用,跨区域或跨机房的流量分发等问题,而且本方案无代码入侵、支持异构,可扩展性较强。
本申请提供的一种服务的调用装置、负载均衡设备以及存储介质,与服务的调用方法具有相同或相似的有益效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一种服务的调用方法实施例;
图2为本说明书一种服务路由信息获取的系统架构示意图;
图3为本说明书一种服务发现的系统架构示意图;
图4为本说明书另一种服务的调用方法实施例;
图5A为本说明书一种服务注册的系统架构示意图;
图5B为本说明书另一种服务注册的系统架构示意图;
图6为本说明书又一种服务的调用方法实施例;
图7为本说明书一种服务的调用装置实施例;
图8为本说明书一种负载均衡设备实施例。
具体实施方式
本说明书实施例提供一种服务的调用方法、装置及负载均衡设备。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
本申请的发明构思如下:在没有注册中心时,服务间调用需要被调方的地址或者代理地址,当服务更换部署地址,就不得不修改上述指定的地址或者代理地址,而有了注册中心之后,每个服务在调用其它服务时只需要服务标识即可,其中的地址信息都会通过注册中心进行数据同步,但是,上述情况下的服务发现,需要对服务植入相应处理的SDK,导致对服务的侵入性较强,且SDK与服务的耦合度较高,这样,不仅违背了单一职责原则和依赖倒置原则,还违背了开闭原则,基于上述问题,本技术方案在注册中心与服务之间设置负载均衡设备alb作为中介,这样,无论是切换注册中心还是切换服务,对于两者均无影响,从而通过该中介可以实现对服务无侵入、无框架要求,而且能够保证服务启动速度的服务发现处理。
如图1所示,本说明书实施例提供一种服务的调用方法,该方法的执行主体可以为负载均衡设备等,其中,负载均衡设备可以是Application Load Balancer,即基于网关应用流量的负载均衡设备,不同的负载均衡设备之间通过数据同步来保持数据的一致性,该方法可以应用于面向服务架构的服务发现等处理中,该方法具体可以包括以下步骤:
在步骤S102中,获取第一服务提交的服务调用请求,该服务调用请求中包括待调用的第二服务的标识,第一服务和第二服务为在不同的注册中心注册的服务。
如图2所示,本说明书实施例中的服务的调用方法对应的系统架构中可以包括服务调用请求端201、负载均衡设备202和注册中心203,服务调用请求端201、负载均衡设备202和注册中心203三者之间通信连接,服务调用请求端201可以包括多种,例如,终端设备(具体如手机、平板电脑等移动终端设备,还可以如笔记本电脑等终端设备,还可以如智能手表、手环等可穿戴设备等)、服务器等。负载均衡设备202可以是一个负载均衡设备,也可以是由多个负载均衡设备构成的集群,不同的负载均衡设备202之间可以进行数据同步,负载均衡设备202与其对应的注册中心203之间可以数据传输和数据同步,或者,可以建立负载均衡设备202与其对应的注册中心203之间的推拉模型,从而实现数据的推送处理和数据的拉取处理等。注册中心203可以是由一个计算机设备构成,也可以是由多个计算机设备构成的集群,注册中心203中可以注册有不同的服务,如上述的第一服务或第二服务既可以是预先注册于相应的注册中心203中。
其中,第一服务可以是SOA(Service-Oriented Architecture,面向服务体系)架构或微服务架构中的任意服务,第一服务可以独立部署、水平扩展、独立访问(或者具有独立的数据库)等,对于第一服务为微服务架构中的服务的情况,可以通过Spring Cloud对各个微服务进行管理,Spring Cloud可以包括Spring Cloud Netflix、Netflix Eureka、Netflix Zuul、Netflix Archaius、Spring Cloud Config、Spring Cloud Bus、SpringCloud Consul和Spring Cloud Zookeeper等,其中,Netflix Eureka是一种服务发现框架,可用于定位某个或多个服务,以实现服务发现;Spring Cloud Consul是支持多数据中心分布式高可用的服务发现和配置共享的服务程序,可以通过Go语言实现,Spring CloudConsul可以支持对服务状态的检测;对于Spring Cloud Zookeeper,ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件,ZooKeeper可以为分布式应用提供一致性服务,提供的功能可以包括:配置维护、域名服务、分布式同步、组服务等,ZooKeeper可以实现将复杂易出错的关键服务封装,并将简单易用的接口和性能高效、功能稳定的系统提供给用户。第一服务可以如:信息推送服务、编译服务、下载服务、存储服务等,具体可以根据实际情况设定。其中的SOA架构或微服务架构可以将某应用功能分散到各个离散的服务中,从而降低系统的耦合性,并提供更加灵活的服务支持。其中的服务可以是一种程序类型,可以在后台运行,服务可以为用户提供某些指定的功能,不同的服务可以提供不同的功能,一项业务的处理过程可以由多种不同的服务根据指定的执行顺序实现,不同的业务可以调用同一个服务,不同的服务之间进行相互调用,不同服务之间的通信可以包括如基于HTTP协议(HyperText Transfer Protocol,超文本传输协议)的同步机制、基于消息队列的异步消息处理机制等,具体可以根据实际情况设定,本说明书实施例对此不做限定。第二服务可以是与第一服务不同的服务,且第二服务为第一服务需要调用的服务,并且第一服务与第二服务注册于不同的注册中心。注册中心即为服务注册中心,是微服务实例及该服务元数据的数据库,在面向服务设计的架构中(包括在SOA架构中和微服务架构中),注册中心起着重要的作用,注册中心可以用于存放服务,并可以调用服务,注册中心能够实现服务与注册中心、服务与服务之间的相互通信,同时,注册中心中可以设置有监控机制,通过该监控机制可以监控注册中心中已经注册的服务的运行状态和服务运行的物理路径(如IP(Internet Protocol,网络互联协议)地址或端口标识等)和逻辑路径(用于唯一标识注册中心中注册的服务)等,对于任一个服务,可以通过该服务的物理路径和逻辑路径将其注册到注册中心中,注册中心通过监控机制监控已注册的服务,另一个服务可以通过逻辑路径从注册中心中获取匹配的服务和相应的物理路径,从而调用匹配的服务。注册中心可以根据地理位置的不同而分别独立设置,也可以根据业务的不同而分别独立设置等,具体可以根据实际情况设定。注册中心可以通过ZooKeeper实现,通过ZooKeeper可以使得注册中心高可用,并且它可以将数据保存在内存中,从而保证高吞吐量和低延迟,此外,注册中心也可以通过Eureka等实现,具体可以根据实际情况设定。
在实施中,在没有注册中心时,服务间调用需要知道被调用方的地址信息或者代理地址信息,并依此地址信息进行服务调用。而当该服务更换部署地址时,就需要修改其中指定的地址信息或者修改代理配置。在有了注册中心之后,每个服务在调用其它服务时,只需要知道服务标识(如服务名称等),即可通过该服务标识在注册中心中进行服务调用,其中,对于服务注册,需要将服务注册与服务注销的逻辑写进业务系统的代码中(如植入相应的SDK等),当一个服务启动时,将该服务的信息写入注册中心,当一个服务下线时,注销该服务的相关信息,且对于不同的业务系统通常需要不同的编程语言实现相同的一套逻辑,显然上述处理对相应的业务有较强的侵入性,耦合度较高,且服务注册是在应用启动时,从而拖慢了启动速度。对于服务发现,注册中心需要与服务建立推拉模型(即需要注入相应的处理逻辑),服务通过该推拉模型,需要在本地缓存应用元数据列表,并需要定期或在需要时重新获取应用元数据,而且注册于不同的注册中心的服务无法完成服务发现处理,且上述处理对相应的业务也具有较强的入侵,耦合性较高。为此,需要提供一种对业务或服务的侵入性较弱、耦合性较低,且具有更优的服务端架构的服务注册与服务发现的处理机制。为此,需要提供一种对业务或服务的侵入性较弱、耦合性较低,且具有更优的服务端架构的服务注册与服务发现的处理机制。本说明书实施例提供一种可实现的技术方案,具体可以包括以下内容:
当某服务(即第一服务)需要调用另一个服务(即第二服务)之前,负载均衡设备可以从元数据的存储设备中获取第一服务的元数据,并可以将第一服务的元数据注册到注册中心中,以注册中心通过ZooKeeper实现为例,负载均衡设备从元数据的存储设备中获取第一服务的元数据后,可以通过注册中心ZooKeeper的API来获取第一服务的元数据,同时对注册中心中的每个服务的Providers节点增加Watcher,来监控Providers节点的变化,获取的第一服务的元数据保存在变量service_repos中,从而完成向注册中心中注册第一服务的元数据对应的第一服务的处理。如图2所示,当第一服务需要调用第二服务时,第一服务可以获取需要调用的第二服务的相关信息,例如第一服务可以获取第二服务的逻辑地址等标识信息,然后,可以基于获取的标识信息生成服务调用请求,并可以将该服务调用请求提交给负载均衡设备,负载均衡设备可以获取到该服务调用请求。
在步骤S104中,基于第一服务对应的负载均衡设备到第二服务对应的负载均衡设备之间的链路,从第二服务对应的注册中心中拉取与第二服务的标识对应的服务路由信息。
其中,本实施例中的负载均衡设备设置有支持的地域(Region)和可用区(Availability Zone),其中的地域可以是指物理数据中心,资源创建成功后往往不会更换地域,可用区可以是指在同一地域内,电力和网络互相独立的技术设施,即一个可用区出现基础设施故障不影响另外一个可用区,每个可用区完全隔离,同一个地域内的可用区之间可以使用低时延链路相连,例如国内可以作为一个地域,不同的省份、城市等国内的不同区域可以作为可用区,具体如,可以将北京、上海和深圳分别作为一个可用区(即3个可用区),即可以在每个可用区设置一个负载均衡设备,并通过不同可用区的负载均衡设备为相应的可用区内提供相应的服务,其中,北京、上海和深圳三个可用区之间可以完全隔离(即三个可用区的负载均衡设备均可以独立运行),并且,北京、上海和深圳三个可用区之间可以使用低时延链路相连(即三个可用区的负载均衡设备之间可以使用低时延链路相连,以进行数据同步和数据共享等)。基于上述内容可知,不同的负载均衡设备之间可以进行数据同步,这样,任意负载均衡设备中均维护着其它负载均衡设备,以及其它负载均衡设备中的服务的地址信息,从而可以实现不同服务的跨负载均衡设备的调用,例如,如图3所示,对于多机房异地的情况,服务A与服务C属于不同的机房(即服务A和服务B属于机房1(可以作为一个可用区),服务C和服务D属于机房2(另一个可用区)),即两者对应的负载均衡设备也不同,且两者对应的注册中心也是不同的,基于前述的处理方式,由于服务A和服务C分别处于不同的机房中,因此,无法实现服务发现,但对于本方案中,不同的负载均衡设备中维护着其它负载均衡设备的地址信息,以及其它负载均衡设备中的服务的地址信息,即服务A所在机房的负载均衡设备(为了后续叙述方便,可以记为alb-1)中维护着服务C所在机房中的服务C所在负载均衡设备(可以记为alb-2)的地址信息和服务C的地址信息(其中,如图3所示,服务A和服务B被注册于alb-1,服务C和服务D被注册于alb-2,alb-1和alb-2通过数据同步可以获取彼此的地址信息和负载均衡设备对应的服务的地址信息),因此,如果服务A调用服务C,则可以通过服务A—>alb-1—>alb-2—>服务C完成跨机房的调用,从而实现服务发现,其中的服务A—>alb-1—>alb-2—>服务C即可以为一个链路,其中,上述链路中涉及到两个负载均衡设备,在实际应用中,还可以涉及两个以上的多个负载均衡设备,具体可以根据实际情况设定。服务路由信息可以是某服务的路由信息。
在实施中,基于图3所示的处理,负载均衡设备可以对服务调用请求进行分析,得到第二服务对应的负载均衡设备的地址信息和第二服务的地址信息,可以基于第二服务对应的负载均衡设备的地址信息和第二服务的地址信息,确定由第一服务-第一服务对应的负载均衡设备-第二服务对应的负载均衡设备-第二服务之间的链路。如图2所示,第二服务对应的注册中心中可以缓存有服务路由列表,该服务路由列表可以由服务路由信息与服务标识对应设置而构成,可以通过上述链路,从第二服务对应的注册中心的服务路由列表中拉取与第二服务的标识对应的服务路由信息。
在步骤S106中,将服务路由信息提供给第一服务,以使第一服务基于该服务路由信息访问第二服务以获取上述服务调用请求对应的数据。
在实施中,如图2所示,通过上述方式获取到与第二服务的标识对应的服务路由信息后,可以将该服务路由信息提供给第一服务,第一服务可以通过该服务路由信息向第二服务发送上述服务调用请求对应的数据获取指令,第二服务接收到该数据获取指令后,可以获取该数据获取指令对应的数据(即上述服务调用请求对应的数据),并可以将获取的数据提供给第一服务,从而第一服务可以获取到该服务调用请求对应的数据。
基于上述处理,例如,某组织需要建设异地多活的服务,且该服务需要在不同地区或区域(如不同的城市等)部署,并且要求高可用、可伸缩,此时,无疑需要进行服务发现处理,因为,不可能需要为该服务还配置其他服务的IP地址和端口号等物理地址信息,由于通常的注册中心无法保证异地数据同步的实时性,故而无法实现异地服务注册,更无法实现异地服务发现以及调用,针对此需求,现有技术和相似技术无法解决,本实施例中的负载均衡设备不但可以保证数据实时性,更可以解决服务异地发现、服务异地调用,跨机房流量分发,以及数次负载,从而完全解决跨机房流量治理问题。
本说明书实施例提供一种服务的调用方法,应用于负载均衡设备,不同的负载均衡设备之间通过数据同步来保持数据的一致性,通过在获取到第一服务提交的服务调用请求时,可以基于第一服务对应的负载均衡设备到待调用的第二服务(其中,第一服务和第二服务为在不同的注册中心注册的服务)对应的负载均衡设备之间的链路,从第二服务对应的注册中心中拉取与第二服务对应的服务路由信息,并将该服务路由信息提供给第一服务,以使第一服务基于该服务路由信息访问第二服务以获取该服务调用请求对应的数据,这样,发起调用请求的第一服务到待调用的第二服务之间的链路,可以实现跨注册中心、跨区域的服务调用,从而完成服务发现处理,此外,如果上述链路中包括多个负载均衡设备,则还可以实现多次的负载均衡处理,在高并发的场景下,多次的负载均衡处理将会给业务系统带来较大的收益,从而通过负载均衡设备不但可以保证数据实时性,更可以解决服务异地发现,服务异地调用,跨区域或跨机房的流量分发等问题,而且本方案无代码入侵、支持异构,可扩展性较强。
在实际应用中,在获取第一服务提交的服务调用请求之前,还可以将不同的服务注册到注册中心中,具体参见图4所示的步骤S402~步骤S406的处理:
在步骤S402中,从存储服务元数据的存储设备中获取由负载均衡设备进行代理服务注册的第一服务元数据。
其中,存储设备可以是永久性存储设备,还可以是非永久性存储设备,存储设备可以是为负载均衡设备提供持久性访问的存储设备具体可以根据实际情况设定,本说明书实施例对存储设备为何种形式的设备不做限定。负载均衡设备可以是Application LoadBalancer(即ALB),即基于网关应用流量的负载均衡设备,不同的负载均衡设备之间可以进行数据同步。第一服务元数据可以是任意服务的元数据,可以是多个不同服务的元数据,也可以是一个服务的元数据等,其中可以包括某服务的标识、属性等相关的数据,具体可以根据实际情况设定,本说明书实施例对此不做限定。
在实施中,如图5A所示,可以通过后台管理系统等平台(图5A中的web服务集群)预先录入不同服务的相关元数据,并可以将不同服务的元数据预热到负载均衡设备可访问的持久化存储设备中,其中,服务元数据的存储对于存储设备的类型不存在依赖性。然后,负载均衡设备可以定期或不定期的从存储服务元数据的存储设备中获取由负载均衡设备进行代理服务注册的第一服务元数据。
在步骤S404中,检测第一服务元数据对应的目标服务的服务状态。
在实施中,负载均衡设备中可以预先设置有服务状态的检测机制,该检测机制可以包括多种不同的设置方式,例如,可以通过预先设定的关键字来检测某服务的服务状态,例如,可以预先为每个服务设定服务状态的关键字,具体如“health=true/false”,即如果检测到上述关键字为“health=true”,则表示服务状态为正常,如果检测到上述关键字为“health=false”,则表示服务状态为异常,其中,上述的“true”或“false”也可以由其它字符代替,如数字、字母或其它字符等。此外,上述关键字(“health=true”或“health=false”)的确定方式可以包括多种,例如,可以预先为每个服务设置心跳上报机制,基于此,每个服务可以每隔预设时长后,可以向负载均衡设备发送包括服务的标识的心跳报文,如果该心跳报文中包括HTTP状态码为200,则可以将上述关键字设置为“health=true”,如果该心跳报文中包括HTTP状态码不是200,则可以将上述关键字设置为“health=false”。除了可以通过上述方式确定关键字外,还可以包括多种可实现方式,例如可以预先编写一个shell脚本,然后,需要确定某服务的服务状态时,可以执行该shell脚本,通过该服务返回的相应结果来确定各服务的服务状态等,具体可以根据实际情况设定,本说明书实施例在此不再赘述。或者,可以预先通过历史数据训练相应的深度学习模型等机器学习模型,然后,可以通过训练后的机器学习模型生成针对不同服务的检测策略,该检测策略可以包括多种,例如,可以基于不同服务所属的类型(如涉及隐私数据处理的服务、涉及金融类的服务等)设置不同的检测策略,具体如,涉及隐私数据处理的服务和涉及金融类的服务可以使用如上所述的关键字的方式设置检测策略,涉及金融类的服务,其它服务可以使用如上所述的shell脚本的方式设置检测策略等,然后,基于生成的检测策略检测某服务的服务状态,或者,也可以预先设定某种算法,并通过该算法得到的最终结果确定某服务的服务状态等,具体可以根据实际情况设定,本说明书实施例对此不做限定。通过上述方式,负载均衡设备可以对目标服务的服务状态进行检测,并获取反馈的响应。
在实际应用中,上述步骤S404的处理中检测目标服务的服务状态的具体处理可以多种多样,以下提供一种可选的处理方式,具体可以包括以下内容:创建异步守护线程,并通过所述异步守护线程,以预设的检测周期对目标服务的服务状态进行异步检测。
其中,异步守护线程可以是进行异步处理的线程,通过异步守护线程可以执行异步处理过程,具体可以根据实际情况设定,本说明书实施例对此不做限定。检测周期可以包括多种,例如检测周期为10分钟或30分钟等,具体可以根据实际情况设定。
在实施中,为了保证数据处理效率,可以通过异步的方式对服务进行服务状态的检测,具体地,可以创建异步守护线程,并通过该异步守护线程对目标服务的服务状态进行异步检测,此外,为了降低数据处理压力,还可以根据实际情况预先设定检测周期,即每当到达设定的检测周期时,通过上述异步守护线程对目标服务的服务状态进行检测,最终可以得到目标服务的服务状态的检测结果,其中的检测结果可以包括正常和异常。
在步骤S406中,基于第一服务元数据,将服务状态为正常的目标服务注册到目标服务对应的注册中心中。
在实施中,通过上述方式,可以确定第一服务元数据中哪些服务元数据对应的目标服务的服务状态为正常,哪些服务元数据对应的目标服务的服务状态为异常,对于服务状态为正常的目标服务,如图5A所示,可以获取目标服务的服务元数据,并可以通过获取的目标服务的服务元数据将相应的目标服务注册到目标服务对应的注册中心中,其中,如图5B所示,负载均衡设备和负载均衡设备管理端共用同一套负载均衡设备持久层(用于存储数据),不同机房(或数据中心(即可用区))之间的负载均衡设备持久层保持双向同步,可以通过负载均衡设备管理端将服务A和服务B的服务元数据录入到负载均衡设备管理系统中(需要说明:即使服务A和服务B还没有部署,也可事先录入),然后,负载均衡设备管理端将服务元数据存储到负载均衡设备持久层。当服务A和服务B启动时,两个服务完全启动后,会通知负载均衡设备上述两个服务已准备就绪,此时为保证信息准确,在通知负载均衡设备时,还可以携带服务A和服务B的服务元数据。负载均衡设备可以定期从负载均衡设备持久层获取服务元数据,并缓存在负载均衡设备的内存中,机房1的负载均衡设备将其内存中缓存的数据与上述通知中的数据进行对比,若两者一致,则将服务A和服务B注册到机房1的注册中心中。机房1的负载均衡设备可以通知机房2的负载均衡设备:服务A和服务B已启动;并可以将服务A和服务B的相关信息提供给机房2的负载均衡设备,机房2的负载均衡设备可以基于服务A和服务B的相关信息,将服务A和服务B注册到机房2的注册中心中。同理,机房2中的服务C和服务D也可以通过与服务A和服务B相同的方式进行注册,在此不再赘述。需要说明的是,各个服务在多个机房中都存在相应的服务实例,但是,注册到不同机房(或数据中心)上的服务实例的信息不同。对于服务状态为异常的目标服务,可以取消注册流程。
此外,在完成上述步骤S402~步骤S406的处理之后,还可以监听不同服务元数据的变化,进而执行相应的处理,具体可以参见下述步骤S408~步骤S416的处理。
在步骤S408中,当监听到第一服务元数据发生变化时,获取导致第一服务元数据发生变化的服务元数据对应的第三服务的标识,并检测该标识对应的第三服务的服务状态。
其中,第三服务的标识可以是第三服务的名称、编码、ID等,具体可以根据实际情况设定,本说明书实施例对此不做限定。
在实施中,负载均衡设备中可以设置有监听机制,负载均衡设备通过该监听机制一直监听或定时扫描上述预热的数据(即第一服务元数据)是否发生变化,当监听到第一服务元数据中有新数据加入或监听到第一服务元数据发生数据变更时,负载均衡设备可以确定第一服务元数据发生变化,此时,负载均衡设备可以获取第一服务元数据对应的第三服务的标识,同时,可以对第三服务的服务状态进行检测,并获取反馈的响应,其中,对第三服务的服务状态进行检测的具体处理方式可以参见上述相关内容,在此不再赘述。
在实际应用中,上述步骤S408的处理中检测该标识对应的第三服务的服务状态的具体处理可以多种多样,以下提供一种可选的处理方式,具体可以包括以下内容:创建异步守护线程,并通过该异步守护线程,以预设的检测周期对第三服务的服务状态进行异步检测。
具体处理过程可以参见上述相关内容,在此不再赘述。
在步骤S410中,如果第三服务的服务状态为正常,则基于导致第一服务元数据发生变化的服务元数据,对第三服务执行向上述注册中心进行注册的处理。
在实施中,如果通过上述方式检测出第三服务的服务状态为正常,则表明第三服务的真实性,以及可以表明当前的第三服务是可用且正常的服务,此时,可以通过导致第一服务元数据发生变化的服务元数据,将第三服务注册到注册中心中。
在实际应用中,上述步骤S410的处理方式可以多种多样,以下提供两种可选的处理方式,具体可以包括以下方式一和方式二。
方式一:导致第一服务元数据发生变化的服务元数据为第一服务元数据之外新增加的服务元数据,则上述步骤S410的处理可以包括以下内容:
如果第三服务的服务状态为正常,则基于上述新增加的服务元数据,将第三服务注册到注册中心中。
在实施中,如果第一服务元数据没有发生变化,而是向第一服务元数据中新增加了服务元数据,则可以通过第一服务元数据之外新增加的服务元数据,直接将第三服务注册到注册中心中,这样,注册中心中将增加新的已注册的服务。
方式二:导致第一服务元数据发生变化的服务元数据为第一服务元数据中的数据,则上述步骤S410的处理可以包括以下内容:
如果第三服务的服务状态为正常,则将上述注册中心中已注册的服务中与上述标识对应的服务的注册数据注销,并基于导致第一服务元数据发生变化的服务元数据,将第三服务注册到该注册中心中。
在实施中,如果发生变化的是第一服务元数据中的数据,即第一服务元数据中的某个服务元数据或多个不同的服务元数据发生了变化(如第一服务元数据中的部分内容被删除,或第一服务元数据中的部分内容被修改等),此时,考虑到注册中心中可能会已经注册了发生变化之前的服务元数据对应的服务,可以将注册中心中已注册的上述服务注销(即将上述注册中心中已注册的服务中与上述标识对应的服务的注册数据(可以是该服务的服务元数据,也可以是基于该服务的服务元数据确定的用于注册的数据等)注销),然后基于发生变化的服务元数据,重新对该服务进行注册,例如,对于服务A,如果第一服务元数据中服务A的服务元数据被修改,而在服务A的服务元数据被修改之前,服务A已被注册到注册中心中,此时,可以将服务A从注册中心中注销,然后,再基于服务A的变化后的服务元数据对服务A进行重新注册。
通过上述步骤S402~步骤S410的处理,负载均衡设备可以将可用且正常的服务注册到该服务对应的注册中心中,这样,可以将需要启动的服务通过负载均衡设备将其注册到相应的注册中心中。在实际应用中,对某服务注册成功后,还可以对注册的服务进行服务状态的检测,从而及时了解注册的不同服务是否正常,具体可以参见下述步骤S412~步骤S416的处理。
在步骤S412中,通过异步守护线程,以预设的检测周期对第三服务和/或目标服务的服务状态进行异步检测。
其中,该异步守护线程与上述提到的异步守护线程可以是相同的线程,相应的,该检测周期也可以与上述提到的检测周期相同,在实际应用中,上述异步守护线程,以及检测周期也可以不与上述相同。
上述步骤S412的具体处理过程可以参见前述相关内容,在此不再赘述。
在步骤S414中,如果检测到第三服务的服务状态为异常,则将第三服务对应的注册中心中注册的第三服务注销。
在实施中,如果对第三服务的检测结果指示第三服务的服务状态为异常,则表明第三服务无法被正常使用,此时,可以将第三服务对应的注册中心中注册的第三服务注销,从而将注册中心中的指定服务注销,以避免其它服务调用该异常的服务,使得在后续的服务调用中失败,甚至使得服务触发执行的相应事件处理失败等。
在步骤S416中,如果检测到目标服务的服务状态为异常,则将目标服务对应的注册中心中注册的目标服务注销。
在实施中,如果对目标服务的检测结果指示目标服务的服务状态为异常,则表明目标服务无法被正常使用,此时,可以将目标服务对应的注册中心中注册的目标服务注销,从而将注册中心中的指定服务注销,以避免其它服务调用该异常的服务,使得在后续的服务调用中失败,甚至使得服务触发执行的相应事件处理失败等。
需要说明的是,如果检测到目标服务和第三服务的服务状态均为异常,则可以分别将目标服务对应的注册中心中注册的目标服务注销,并将第三服务对应的注册中心中注册的第三服务注销。相应的,对于注册中心中已注册的其它服务,如果检测到该服务的服务状态为异常,则可以将注册中心中注册的该服务注销。此外,当负载均衡设备检测到上述异常的服务已恢复正常时,可以将本地缓存的服务的数据对应的服务的服务状态改为正常,并逐步放大上述服务的权重值(以避免上述服务启动后很快出现宕机等异常),同时重新注册上述服务到注册中心中。另外,当存在某服务没有接入负载均衡设备时,负载均衡设备也可以定期检测非负载均衡设备代理注册的节点是否正常。
通过上述方式完成服务的注册后,可以进行服务发现处理,具体可以包括上述步骤S102~步骤S106的处理。
如图6所示,针对负载均衡设备中维护注册中心中注册的服务的服务路由信息的情况,还可以对负载均衡设备中缓存的服务路由信息进行定期更新,具体可以包括以下步骤S602和步骤S604的处理。
在步骤S602中,当达到预设的服务路由更新周期时,从第一服务对应的注册中心中拉取在第一服务对应的注册中心中注册的服务的服务路由信息。
其中,服务路由更新周期可以是包括多种设置方式,例如,可以随机设置服务路由更新周期,也可以基于专家经验设置服务路由更新周期,还可以根据具体的业务来设置服务路由更新周期,服务路由更新周期可以如3分钟或10分钟等,具体可以根据实际情况设定,本说明书实施例对此不做限定。
在实施中,可以根据实际情况预先设定服务路由更新周期,然后,每当到达该服务路由更新周期时,负载均衡设备可以从第一服务对应的注册中心中拉取在第一服务对应的注册中心中注册的服务的服务路由信息。
在实际应用中,如果拉取的服务路由信息与上一服务路由更新周期拉取的服务路由信息相同,则可以不需要对本地存储的服务路由信息进行更新,如果拉取的服务路由信息与上一服务路由更新周期拉取的服务路由信息不同,则可以执行下述步骤S604的处理,即对本地存储的服务路由信息进行更新,其中,判断拉取的服务路由信息与上一服务路由更新周期拉取的服务路由信息是否相同的处理,可以包括多种,例如,可以直接通过信息内容比对的方式判断拉取的服务路由信息与上一服务路由更新周期拉取的服务路由信息是否相同,或者,可以计算拉取的服务路由信息的哈希值,并计算上一服务路由更新周期拉取的服务路由信息的哈希值,然后,比较上述计算得到的两个哈希值,如果两个哈希值相同,则表明拉取的服务路由信息与上一服务路由更新周期拉取的服务路由信息相同,否则,拉取的服务路由信息与上一服务路由更新周期拉取的服务路由信息不同。在实际应用中,除了可以通过上述方式判断相邻两次拉取的服务路由信息是否相同之外,还可以通过其它多种方式实现,具体可以根据实际情况设定,本说明书实施例对此不做限定。
在步骤S604中,使用拉取的服务路由信息对本地存储的服务路由信息进行更新。
通过上述步骤S602和步骤S604的处理能够获取到最新的服务路由信息,从而保证服务路由信息的一致性和高可用性。
本说明书实施例提供一种服务的调用方法,应用于负载均衡设备,不同的负载均衡设备之间通过数据同步来保持数据的一致性,通过在获取到第一服务提交的服务调用请求时,可以基于第一服务对应的负载均衡设备到待调用的第二服务(其中,第一服务和第二服务为在不同的注册中心注册的服务)对应的负载均衡设备之间的链路,从第二服务对应的注册中心中拉取与第二服务对应的服务路由信息,并将该服务路由信息提供给第一服务,以使第一服务基于该服务路由信息访问第二服务以获取该服务调用请求对应的数据,这样,发起调用请求的第一服务到待调用的第二服务之间的链路,可以实现跨注册中心、跨区域的服务调用,从而完成服务发现处理,此外,如果上述链路中包括多个负载均衡设备,则还可以实现多次的负载均衡处理,在高并发的场景下,多次的负载均衡处理将会给业务系统带来较大的收益,从而通过负载均衡设备不但可以保证数据实时性,更可以解决服务异地发现,服务异地调用,跨区域或跨机房的流量分发等问题,而且本方案无代码入侵、支持异构,可扩展性较强。
此外,由于负载均衡设备是注册中心和服务的中介,无论是切换注册中心还是切换服务,对于两者均无影响,切换N(N大为大于1的正整数)个服务和适配负载均衡设备的时间对比,负载均衡设备所节省的时间为N*(切换一个服务的时间),而且,由于负载均衡设备是基于网络通信,所以可以很好的适应不同语言服务接入的情况,另外,通过负载均衡设备代理进行服务注册,不会拖慢服务的启动速度,保证服务的高效运行。
以上为本说明书实施例提供的服务的调用方法,基于同样的思路,本说明书实施例还提供一种服务的调用装置,不同的服务的调用装置之间通过数据同步来保持数据的一致性,该服务的调用装置中包括如上述实施例中的负载均衡设备的所有功能单元,如图7所示。
该服务的调用装置包括:服务调用请求模块701、服务路由获取模块702和数据访问模块703,其中:
服务调用请求模块701,被配置为获取第一服务提交的服务调用请求,所述服务调用请求中包括待调用的第二服务的标识,所述第一服务和所述第二服务为在不同的注册中心注册的服务;
服务路由获取模块702,被配置为基于所述第一服务对应的服务的调用装置到所述第二服务对应的服务的调用装置之间的链路,从所述第二服务对应的注册中心中拉取与所述第二服务的标识对应的服务路由信息;
数据访问模块703,被配置为将所述服务路由信息提供给所述第一服务,以使所述第一服务基于所述服务路由信息访问所述第二服务以获取所述服务调用请求对应的数据。
本说明书实施例中,所述装置还包括:
元数据获取模块,被配置为从存储服务元数据的存储设备中获取由所述服务的调用装置进行代理服务注册的第一服务元数据;
服务状态检测模块,被配置为检测所述第一服务元数据对应的目标服务的服务状态;
第一注册模块,被配置为基于所述第一服务元数据,将服务状态为正常的所述目标服务注册到所述目标服务对应的注册中心中。
本说明书实施例中,所述装置还包括:
监听模块,被配置为当监听到所述第一服务元数据发生变化时,获取导致所述第一服务元数据发生变化的服务元数据对应的第三服务的标识,并检测所述标识对应的所述第三服务的服务状态;
第二注册模块,被配置为如果所述第三服务的服务状态为正常,则基于导致所述第一服务元数据发生变化的服务元数据,对所述第三服务执行向所述注册中心进行注册的处理;
取消模块,被配置为如果所述第三服务的服务状态为异常,则取消将所述第三服务注册到所述注册中心中。
本说明书实施例中,导致所述第一服务元数据发生变化的服务元数据为所述第一服务元数据之外新增加的服务元数据,
所述第二注册模块,还被配置为如果所述第三服务的服务状态为正常,则基于所述新增加的服务元数据,将所述第三服务注册到所述注册中心中。
本说明书实施例中,导致所述第一服务元数据发生变化的服务元数据为所述第一服务元数据中的数据,
所述第二注册模块,还被配置为如果所述第三服务的服务状态为正常,则将所述注册中心中已注册的服务中与所述标识对应的服务的注册数据注销,并基于导致所述第一服务元数据发生变化的服务元数据,将所述第三服务注册到所述注册中心中。
本说明书实施例中,所述服务状态检测模块,被配置为创建异步守护线程,并通过所述异步守护线程,以预设的检测周期对所述目标服务的服务状态进行异步检测。
本说明书实施例中,所述装置还包括:
异步检测模块,被配置为创建异步守护线程,并通过所述异步守护线程,以预设的检测周期对所述第三服务和/或所述目标服务的服务状态进行异步检测;
第一注销模块,被配置为如果检测到所述第三服务的服务状态为异常,则将所述第三服务对应的注册中心中注册的第三服务注销;
第二注销模块,被配置为如果检测到所述目标服务的服务状态为异常,则将所述目标服务对应的注册中心中注册的目标服务注销。
本说明书实施例中,所述装置还包括:
服务路由拉取模块,被配置为当达到预设的服务路由更新周期时,从所述第一服务对应的注册中心中拉取在所述第一服务对应的注册中心中注册的服务的服务路由信息;
更新模块,被配置为使用拉取的服务路由信息对本地存储的服务路由信息进行更新。
本说明书实施例提供的服务的调用装置能够实现上述服务的调用方法对应的实施例中的各个过程,为避免重复,这里不再赘述。
需要说明的是,本说明书实施例提供的服务的调用装置与本说明书实施例提供的服务的调用方法基于同一发明构思,因此该实施例的具体实施可以参见前述服务的调用方法的实施,重复之处不再赘述。
本说明书实施例提供一种服务的调用装置,不同的服务的调用装置之间通过数据同步来保持数据的一致性,通过在获取到第一服务提交的服务调用请求时,可以基于第一服务对应的服务的调用装置到待调用的第二服务(其中,第一服务和第二服务为在不同的注册中心注册的服务)对应的服务的调用装置之间的链路,从第二服务对应的注册中心中拉取与第二服务对应的服务路由信息,并将该服务路由信息提供给第一服务,以使第一服务基于该服务路由信息访问第二服务以获取该服务调用请求对应的数据,这样,发起调用请求的第一服务到待调用的第二服务之间的链路,可以实现跨注册中心、跨区域的服务调用,从而完成服务发现处理,此外,如果上述链路中包括多个服务的调用装置,则还可以实现多次的负载均衡处理,在高并发的场景下,多次的负载均衡处理将会给业务系统带来较大的收益,从而通过服务的调用装置不但可以保证数据实时性,更可以解决服务异地发现,服务异地调用,跨区域或跨机房的流量分发等问题,而且本方案无代码入侵、支持异构,可扩展性较强。
此外,由于服务的调用装置是注册中心和服务的中介,无论是切换注册中心还是切换服务,对于两者均无影响,切换N(N大为大于1的正整数)个服务和适配服务的调用装置的时间对比,服务的调用装置所节省的时间为N*(切换一个服务的时间),而且,由于服务的调用装置是基于网络通信,所以可以很好的适应不同语言服务接入的情况,另外,通过服务的调用装置代理进行服务注册,不会拖慢服务的启动速度,保证服务的高效运行。
对应上述实施例提供的服务的调用方法,基于相同的技术构思,本说明书实施例还提供了一种负载均衡设备,该负载均衡设备用于执行上述的服务的调用方法,图8为实现本说明书各个实施例的一种负载均衡设备的硬件结构示意图,图8所示的负载均衡设备100包括但不限于:射频单元101、网络模块102、音频输出单元103、输入单元104、传感器105、用户输入单元106、接口单元107、存储器108、处理器109、以及电源110等部件。本领域技术人员可以理解,图8中示出的负载均衡设备结构并不构成对负载均衡设备的限定,负载均衡设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,处理器109,用于获取第一服务提交的服务调用请求,所述服务调用请求中包括待调用的第二服务的标识,所述第一服务和所述第二服务为在不同的注册中心注册的服务;
处理器109,还用于基于所述第一服务对应的负载均衡设备到所述第二服务对应的负载均衡设备之间的链路,从所述第二服务对应的注册中心中拉取与所述第二服务的标识对应的服务路由信息;
处理器109,还用于将所述服务路由信息提供给所述第一服务,以使所述第一服务基于所述服务路由信息访问所述第二服务以获取所述服务调用请求对应的数据。
其中,所述获取第一服务提交的服务调用请求之前,处理器109,还用于:
从存储服务元数据的存储设备中获取由所述负载均衡设备进行代理服务注册的第一服务元数据;
检测所述第一服务元数据对应的目标服务的服务状态;
基于所述第一服务元数据,将服务状态为正常的所述目标服务注册到所述目标服务对应的注册中心中。
其中,所述基于所述第一服务元数据,将服务状态为正常的所述目标服务注册到所述目标服务对应的注册中心中之后,处理器109,还用于:
当监听到所述第一服务元数据发生变化时,获取导致所述第一服务元数据发生变化的服务元数据对应的第三服务的标识,并检测所述标识对应的所述第三服务的服务状态;
如果所述第三服务的服务状态为正常,则基于导致所述第一服务元数据发生变化的服务元数据,对所述第三服务执行向所述注册中心进行注册的处理;
如果所述第三服务的服务状态为异常,则取消将所述第三服务注册到所述注册中心中。
其中,导致所述第一服务元数据发生变化的服务元数据为所述第一服务元数据之外新增加的服务元数据,处理器109,还用于:
如果所述第三服务的服务状态为正常,则基于所述新增加的服务元数据,将所述第三服务注册到所述注册中心中。
其中,导致所述第一服务元数据发生变化的服务元数据为所述第一服务元数据中的数据,处理器109,还用于:
如果所述第三服务的服务状态为正常,则将所述注册中心中已注册的服务中与所述标识对应的服务的注册数据注销,并基于导致所述第一服务元数据发生变化的服务元数据,将所述第三服务注册到所述注册中心中。
其中,处理器109,还用于:
创建异步守护线程,并通过所述异步守护线程,以预设的检测周期对所述目标服务的服务状态进行异步检测。
其中,将所述第三服务和/或所述目标服务注册到所述注册中心中之后,处理器109,还用于:
创建异步守护线程,并通过所述异步守护线程,以预设的检测周期对所述第三服务和/或所述目标服务的服务状态进行异步检测;
如果检测到所述第三服务的服务状态为异常,则将所述第三服务对应的注册中心中注册的第三服务注销;
如果检测到所述目标服务的服务状态为异常,则将所述目标服务对应的注册中心中注册的目标服务注销。
其中,处理器109,还用于:
当达到预设的服务路由更新周期时,从所述第一服务对应的注册中心中拉取在所述第一服务对应的注册中心中注册的服务的服务路由信息;
使用拉取的服务路由信息对本地存储的服务路由信息进行更新。
本说明书实施例中的负载均衡设备100,不同的负载均衡设备之间通过数据同步来保持数据的一致性,通过在获取到第一服务提交的服务调用请求时,可以基于第一服务对应的负载均衡设备到待调用的第二服务(其中,第一服务和第二服务为在不同的注册中心注册的服务)对应的负载均衡设备之间的链路,从第二服务对应的注册中心中拉取与第二服务对应的服务路由信息,并将该服务路由信息提供给第一服务,以使第一服务基于该服务路由信息访问第二服务以获取该服务调用请求对应的数据,这样,发起调用请求的第一服务到待调用的第二服务之间的链路,可以实现跨注册中心、跨区域的服务调用,从而完成服务发现处理,此外,如果上述链路中包括多个负载均衡设备,则还可以实现多次的负载均衡处理,在高并发的场景下,多次的负载均衡处理将会给业务系统带来较大的收益,从而通过负载均衡设备不但可以保证数据实时性,更可以解决服务异地发现,服务异地调用,跨区域或跨机房的流量分发等问题,而且本方案无代码入侵、支持异构,可扩展性较强。
需要说明的是,本说明书实施例提供的负载均衡设备100能够实现上述服务的调用方法实施例中负载均衡设备实现的各个过程,为避免重复,这里不再赘述。
应理解的是,本说明书实施例中,射频单元101可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自上游设备的下行数据接收后,给处理器109处理;另外,将上行的数据发送给上游设备。通常,射频单元101包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元101还可以通过无线通信系统与网络和其他设备通信。
负载均衡设备通过网络模块102为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
音频输出单元103可以将射频单元101或网络模块102接收的或者在存储器109中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元103还可以提供与移动终端100执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元103包括扬声器、蜂鸣器以及受话器等。
输入单元104用于接收音频或视频信号。输入单元104可以包括图形处理器(Graphics Processing Unit,GPU)1041和麦克风1042,图形处理器1041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元106上。经图形处理器1041处理后的图像帧可以存储在存储器109(或其它存储介质)中或者经由射频单元101或网络模块102进行发送。麦克风1042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元101发送到移动通信基站的格式输出。
接口单元107为外部装置与负载均衡设备100连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元107可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端100内的一个或多个元件或者可以用于在移动终端100和外部装置之间传输数据。
存储器108可用于存储软件程序以及各种数据。存储器108可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器108可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器109是移动终端的控制中心,利用各种接口和线路连接整个移动终端的各个部分,通过运行或执行存储在存储器108内的软件程序和/或模块,以及调用存储在存储器108内的数据,执行负载均衡设备的各种功能和处理数据,从而对负载均衡设备进行整体监控。处理器109可包括一个或多个处理单元;优选的,处理器109可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器109中。
负载均衡设备100还可以包括给各个部件供电的电源111(比如电池),优选的,电源111可以通过电源管理系统与处理器109逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
另外,负载均衡设备100包括一些未示出的功能模块,在此不再赘述。
优选的,本说明书实施例还提供一种负载均衡设备,包括处理器109,存储器108,存储在存储器108上并可在所述处理器109上运行的计算机程序,该计算机程序被处理器109执行时实现上述服务的调用方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
进一步地,基于上述图1到图6所示的方法,本说明书一个或多个实施例还提供了一种存储介质,用于存储计算机可执行指令信息,一种具体的实施例中,该存储介质可以为U盘、光盘、硬盘等,该存储介质存储的计算机可执行指令信息在被处理器执行时,能实现以下流程:
获取第一服务提交的服务调用请求,所述服务调用请求中包括待调用的第二服务的标识,所述第一服务和所述第二服务为在不同的注册中心注册的服务;
基于所述第一服务对应的负载均衡设备到所述第二服务对应的负载均衡设备之间的链路,从所述第二服务对应的注册中心中拉取与所述第二服务的标识对应的服务路由信息;
将所述服务路由信息提供给所述第一服务,以使所述第一服务基于所述服务路由信息访问所述第二服务以获取所述服务调用请求对应的数据。
本说明书实施例中,所述获取第一服务提交的服务调用请求之前,还包括:
从存储服务元数据的存储设备中获取由所述负载均衡设备进行代理服务注册的第一服务元数据;
检测所述第一服务元数据对应的目标服务的服务状态;
基于所述第一服务元数据,将服务状态为正常的所述目标服务注册到所述目标服务对应的注册中心中。
本说明书实施例中,所述基于所述第一服务元数据,将服务状态为正常的所述目标服务注册到所述目标服务对应的注册中心中之后,还包括:
当监听到所述第一服务元数据发生变化时,获取导致所述第一服务元数据发生变化的服务元数据对应的第三服务的标识,并检测所述标识对应的所述第三服务的服务状态;
如果所述第三服务的服务状态为正常,则基于导致所述第一服务元数据发生变化的服务元数据,对所述第三服务执行向所述注册中心进行注册的处理;
如果所述第三服务的服务状态为异常,则取消将所述第三服务注册到所述注册中心中。
本说明书实施例中,导致所述第一服务元数据发生变化的服务元数据为所述第一服务元数据之外新增加的服务元数据,
所述如果所述第三服务的服务状态为正常,则基于导致所述第一服务元数据发生变化的服务元数据,对所述第三服务执行向所述注册中心进行注册的处理,包括:
如果所述第三服务的服务状态为正常,则基于所述新增加的服务元数据,将所述第三服务注册到所述注册中心中。
本说明书实施例中,导致所述第一服务元数据发生变化的服务元数据为所述第一服务元数据中的数据,
所述如果所述第三服务的服务状态为正常,则基于导致所述第一服务元数据发生变化的服务元数据,对所述第三服务执行向所述注册中心进行注册的处理,包括:
如果所述第三服务的服务状态为正常,则将所述注册中心中已注册的服务中与所述标识对应的服务的注册数据注销,并基于导致所述第一服务元数据发生变化的服务元数据,将所述第三服务注册到所述注册中心中。
本说明书实施例中,所述检测所述第一服务元数据对应的目标服务的服务状态,包括:
创建异步守护线程,并通过所述异步守护线程,以预设的检测周期对所述目标服务的服务状态进行异步检测。
本说明书实施例中,将所述第三服务和/或所述目标服务注册到所述注册中心中之后,还包括:
创建异步守护线程,并通过所述异步守护线程,以预设的检测周期对所述第三服务和/或所述目标服务的服务状态进行异步检测;
如果检测到所述第三服务的服务状态为异常,则将所述第三服务对应的注册中心中注册的第三服务注销;
如果检测到所述目标服务的服务状态为异常,则将所述目标服务对应的注册中心中注册的目标服务注销。
本说明书实施例中,还包括:
当达到预设的服务路由更新周期时,从所述第一服务对应的注册中心中拉取在所述第一服务对应的注册中心中注册的服务的服务路由信息;
使用拉取的服务路由信息对本地存储的服务路由信息进行更新。
本说明书实施例提供一种存储介质,通过在获取到第一服务提交的服务调用请求时,可以基于第一服务对应的负载均衡设备(其中,不同的负载均衡设备之间通过数据同步来保持数据的一致性)到待调用的第二服务(其中,第一服务和第二服务为在不同的注册中心注册的服务)对应的负载均衡设备之间的链路,从第二服务对应的注册中心中拉取与第二服务对应的服务路由信息,并将该服务路由信息提供给第一服务,以使第一服务基于该服务路由信息访问第二服务以获取该服务调用请求对应的数据,这样,发起调用请求的第一服务到待调用的第二服务之间的链路,可以实现跨注册中心、跨区域的服务调用,从而完成服务发现处理,此外,如果上述链路中包括多个负载均衡设备,则还可以实现多次的负载均衡处理,在高并发的场景下,多次的负载均衡处理将会给业务系统带来较大的收益,从而通过负载均衡设备不但可以保证数据实时性,更可以解决服务异地发现,服务异地调用,跨区域或跨机房的流量分发等问题,而且本方案无代码入侵、支持异构,可扩展性较强。
此外,由于负载均衡设备是注册中心和服务的中介,无论是切换注册中心还是切换服务,对于两者均无影响,切换N(N大为大于1的正整数)个服务和适配负载均衡设备的时间对比,负载均衡设备所节省的时间为N*(切换一个服务的时间),而且,由于负载均衡设备是基于网络通信,所以可以很好的适应不同语言服务接入的情况,另外,通过负载均衡设备代理进行服务注册,不会拖慢服务的启动速度,保证服务的高效运行。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书一个或多个实施例时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书的实施例是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程欺诈案例的串并设备的处理器以产生一个机器,使得通过计算机或其他可编程欺诈案例的串并设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程欺诈案例的串并设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程欺诈案例的串并设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (11)
1.一种服务的调用方法,应用于负载均衡设备,不同的负载均衡设备之间通过数据同步来保持数据的一致性,数据同步后的负载均衡设备中维护着其它负载均衡设备的地址信息,以及其它负载均衡设备中的服务的地址信息,所述方法包括:
获取第一服务提交的服务调用请求,所述服务调用请求中包括待调用的第二服务的标识,所述第一服务和所述第二服务为在不同的注册中心注册的服务;
基于所述第一服务对应的负载均衡设备到所述第二服务对应的负载均衡设备之间的链路,从所述第二服务对应的注册中心中拉取与所述第二服务的标识对应的服务路由信息;
将所述服务路由信息提供给所述第一服务,以使所述第一服务基于所述服务路由信息访问所述第二服务以获取所述服务调用请求对应的数据。
2.根据权利要求1所述的方法,所述获取第一服务提交的服务调用请求之前,所述方法还包括:
从存储服务元数据的存储设备中获取由所述负载均衡设备进行代理服务注册的第一服务元数据;
检测所述第一服务元数据对应的目标服务的服务状态;
基于所述第一服务元数据,将服务状态为正常的所述目标服务注册到所述目标服务对应的注册中心中。
3.根据权利要求2所述的方法,所述基于所述第一服务元数据,将服务状态为正常的所述目标服务注册到所述目标服务对应的注册中心中之后,所述方法还包括:
当监听到所述第一服务元数据发生变化时,获取导致所述第一服务元数据发生变化的服务元数据对应的第三服务的标识,并检测所述标识对应的所述第三服务的服务状态;
如果所述第三服务的服务状态为正常,则基于导致所述第一服务元数据发生变化的服务元数据,对所述第三服务执行向所述注册中心进行注册的处理;
如果所述第三服务的服务状态为异常,则取消将所述第三服务注册到所述注册中心中。
4.根据权利要求3所述的方法,当导致所述第一服务元数据发生变化的服务元数据为所述第一服务元数据之外新增加的服务元数据时,
所述如果所述第三服务的服务状态为正常,则基于导致所述第一服务元数据发生变化的服务元数据,对所述第三服务执行向所述注册中心进行注册的处理,包括:
如果所述第三服务的服务状态为正常,则基于所述新增加的服务元数据,将所述第三服务注册到所述注册中心中。
5.根据权利要求3或4所述的方法,当导致所述第一服务元数据发生变化的服务元数据为所述第一服务元数据中的数据时,
所述如果所述第三服务的服务状态为正常,则基于导致所述第一服务元数据发生变化的服务元数据,对所述第三服务执行向所述注册中心进行注册的处理,包括:
如果所述第三服务的服务状态为正常,则将所述注册中心中已注册的服务中与所述标识对应的服务的注册数据注销,并基于导致所述第一服务元数据发生变化的服务元数据,将所述第三服务注册到所述注册中心中。
6.根据权利要求2-4中任一项所述的方法,所述检测所述第一服务元数据对应的目标服务的服务状态,包括:
创建异步守护线程,并通过所述异步守护线程,以预设的检测周期对所述目标服务的服务状态进行异步检测。
7.根据权利要求3或4所述的方法,将所述第三服务和/或所述目标服务注册到所述注册中心中之后,所述方法还包括:
创建异步守护线程,并通过所述异步守护线程,以预设的检测周期对所述第三服务和/或所述目标服务的服务状态进行异步检测;
如果检测到所述第三服务的服务状态为异常,则将所述第三服务对应的注册中心中注册的第三服务注销;
如果检测到所述目标服务的服务状态为异常,则将所述目标服务对应的注册中心中注册的目标服务注销。
8.根据权利要求1-4中任一项所述的方法,所述方法还包括:
当达到预设的服务路由更新周期时,从所述第一服务对应的注册中心中拉取在所述第一服务对应的注册中心中注册的服务的服务路由信息;
使用拉取的服务路由信息对本地存储的服务路由信息进行更新。
9.一种服务的调用装置,不同的服务的调用装置之间通过数据同步来保持数据的一致性,数据同步后的负载均衡设备中维护着其它负载均衡设备的地址信息,以及其它负载均衡设备中的服务的地址信息,所述装置包括:
服务调用请求模块,被配置为获取第一服务提交的服务调用请求,所述服务调用请求中包括待调用的第二服务的标识,所述第一服务和所述第二服务为在不同的注册中心注册的服务;
服务路由获取模块,被配置为基于所述第一服务对应的服务的调用装置到所述第二服务对应的服务的调用装置之间的链路,从所述第二服务对应的注册中心中拉取与所述第二服务的标识对应的服务路由信息;
数据访问模块,被配置为将所述服务路由信息提供给所述第一服务,以使所述第一服务基于所述服务路由信息访问所述第二服务以获取所述服务调用请求对应的数据。
10.一种负载均衡设备,不同的负载均衡设备之间通过数据同步来保持数据的一致性,数据同步后的负载均衡设备中维护着其它负载均衡设备的地址信息,以及其它负载均衡设备中的服务的地址信息,所述负载均衡设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
获取第一服务提交的服务调用请求,所述服务调用请求中包括待调用的第二服务的标识,所述第一服务和所述第二服务为在不同的注册中心注册的服务;
基于所述第一服务对应的负载均衡设备到所述第二服务对应的负载均衡设备之间的链路,从所述第二服务对应的注册中心中拉取与所述第二服务的标识对应的服务路由信息;
将所述服务路由信息提供给所述第一服务,以使所述第一服务基于所述服务路由信息访问所述第二服务以获取所述服务调用请求对应的数据。
11.一种存储介质,所述存储介质用于存储计算机可执行指令,所述可执行指令在被处理器执行时实现以下流程:
获取第一服务提交的服务调用请求,所述服务调用请求中包括待调用的第二服务的标识,所述第一服务和所述第二服务为在不同的注册中心注册的服务;
基于所述第一服务对应的负载均衡设备到所述第二服务对应的负载均衡设备之间的链路,从所述第二服务对应的注册中心中拉取与所述第二服务的标识对应的服务路由信息,其中,不同的负载均衡设备之间通过数据同步来保持数据的一致性,数据同步后的负载均衡设备中维护着其它负载均衡设备的地址信息,以及其它负载均衡设备中的服务的地址信息;
将所述服务路由信息提供给所述第一服务,以使所述第一服务基于所述服务路由信息访问所述第二服务以获取所述服务调用请求对应的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111315927.0A CN114048046B (zh) | 2021-11-08 | 2021-11-08 | 一种服务的调用方法、装置及负载均衡设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111315927.0A CN114048046B (zh) | 2021-11-08 | 2021-11-08 | 一种服务的调用方法、装置及负载均衡设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114048046A CN114048046A (zh) | 2022-02-15 |
CN114048046B true CN114048046B (zh) | 2022-10-11 |
Family
ID=80207812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111315927.0A Active CN114048046B (zh) | 2021-11-08 | 2021-11-08 | 一种服务的调用方法、装置及负载均衡设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114048046B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114979274A (zh) * | 2022-04-12 | 2022-08-30 | 深圳追一科技有限公司 | 微服务调度的控制方法、装置、计算机设备和存储介质 |
CN114710494A (zh) * | 2022-04-22 | 2022-07-05 | 中国工商银行股份有限公司 | 应用管理方法、装置和存储介质 |
CN115134412A (zh) * | 2022-06-28 | 2022-09-30 | 中国工商银行股份有限公司 | 服务调用方法、装置、电子设备及计算机可读存储介质 |
CN115277386A (zh) * | 2022-06-30 | 2022-11-01 | 中盈优创资讯科技有限公司 | 一种基于apisix的注册中心管理方法 |
CN115314557B (zh) * | 2022-07-26 | 2023-11-07 | 厦门亿联网络技术股份有限公司 | 一种全球跨区服务调用方法及系统 |
CN115426248B (zh) * | 2022-08-01 | 2023-10-20 | 中国人民银行数字货币研究所 | 服务管理方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109933431A (zh) * | 2019-03-11 | 2019-06-25 | 浪潮通用软件有限公司 | 一种智能的客户端负载均衡方法及系统 |
CN113010313A (zh) * | 2021-03-16 | 2021-06-22 | 深圳市腾讯网络信息技术有限公司 | 一种负载均衡方法、装置、电子设备及计算机存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8868779B2 (en) * | 2004-06-15 | 2014-10-21 | Accenture Global Services Limited | Method and apparatus to accomplish peer-to-peer application data routing between service consumers and service providers within a service oriented architecture |
US9473570B2 (en) * | 2013-03-13 | 2016-10-18 | Cisco Technology, Inc. | Instantiating an application flow into a chain of services in a virtual data center |
US10834054B2 (en) * | 2015-05-27 | 2020-11-10 | Ping Identity Corporation | Systems and methods for API routing and security |
US9762619B1 (en) * | 2016-08-30 | 2017-09-12 | Nicira, Inc. | Multi-layer policy definition and enforcement framework for network virtualization |
CN110381163B (zh) * | 2019-07-30 | 2022-09-20 | 普信恒业科技发展(北京)有限公司 | 网关节点转发服务请求的方法及网关节点 |
CN110601981A (zh) * | 2019-09-11 | 2019-12-20 | 神州数码融信软件有限公司 | 服务路由方法、服务提供方云域及服务调用方云域 |
CN111147588A (zh) * | 2019-12-27 | 2020-05-12 | 上海浦东发展银行股份有限公司 | 企业级微服务平台中实现跨域跨中心通信的方法及系统 |
CN112887415B (zh) * | 2021-02-03 | 2023-04-25 | 北京云上曲率科技有限公司 | 一种全球化分布式程序协调服务系统 |
-
2021
- 2021-11-08 CN CN202111315927.0A patent/CN114048046B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109933431A (zh) * | 2019-03-11 | 2019-06-25 | 浪潮通用软件有限公司 | 一种智能的客户端负载均衡方法及系统 |
CN113010313A (zh) * | 2021-03-16 | 2021-06-22 | 深圳市腾讯网络信息技术有限公司 | 一种负载均衡方法、装置、电子设备及计算机存储介质 |
Non-Patent Citations (2)
Title |
---|
Efficient load balancing for bursty demand in web based application services via domain name services;Mei Lu Chin等;《8th Asia-Pacific Symposium on Information and Telecommunication Technologies》;20100729;第1-4页 * |
一种适用于跨安全管理域的分布式服务调用方法;房俊等;《小型微型计算机系统》;20140915;第1956-1960页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114048046A (zh) | 2022-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114048046B (zh) | 一种服务的调用方法、装置及负载均衡设备 | |
US11770317B2 (en) | Internet of Things event management systems and methods | |
KR102116401B1 (ko) | M2m 서비스 계층에 대한 교차 리소스 가입 | |
US11765110B2 (en) | Method and system for providing resiliency in interaction servicing across data centers | |
WO2019005952A1 (en) | METHOD FOR PROCESSING MULTIPLE BLOCK CHAINS NETWORK DATA, APPARATUS, AND SERVER | |
EP3720094B1 (en) | Information processing method, apparatus, device and system | |
O'HARE et al. | Sensor web interaction | |
CN112166591A (zh) | 跨多个设备的数据同步 | |
Wang et al. | SOA's last mile-connecting smartphones to the service cloud | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
CN110505318B (zh) | 统一资源定位符寻址方法及装置、网络系统 | |
WO2020147030A1 (zh) | 一种小区注册方法及终端设备 | |
CN109951560B (zh) | 提高应用服务并发量及应用速度的方法、终端及存储介质 | |
KR102423812B1 (ko) | 안정적인 분산형 M2M/IoT 서비스들의 가능화 | |
CN115834668B (zh) | 集群节点控制方法、装置、设备、存储介质和程序产品 | |
CN116647552A (zh) | 异构微服务集群中服务处理方法及系统、终端及存储介质 | |
CN115065686A (zh) | 分布式负载均衡系统的配置方法、装置及系统 | |
Chihani et al. | Programmable context awareness framework | |
Berzati et al. | An android wear os framework for sensor data and network interfaces | |
CN114257487B (zh) | 管理网络节点集的系统和方法 | |
US20240056495A1 (en) | 5g service based architecture (sba) communication based on machine learning | |
Morais et al. | Integrating communication paradigms in a mobile middleware product line | |
Randhawa | Availability and Fault Tolerance | |
CN110417904B (zh) | 一种推送信息处理方法、装置及系统 | |
Stocklöw et al. | Multi-tenancy aware ambient assisted living platforms in the cloud |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |