CN109788015A - 应用服务调用系统、方法以及装置 - Google Patents
应用服务调用系统、方法以及装置 Download PDFInfo
- Publication number
- CN109788015A CN109788015A CN201711129025.1A CN201711129025A CN109788015A CN 109788015 A CN109788015 A CN 109788015A CN 201711129025 A CN201711129025 A CN 201711129025A CN 109788015 A CN109788015 A CN 109788015A
- Authority
- CN
- China
- Prior art keywords
- service
- module
- address
- provides
- load
- 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.)
- Granted
Links
Landscapes
- Computer And Data Communications (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请公开了一种应用服务调用系统,包括:控制中心模块,用于声明第一服务提供模块调用第二服务提供模块的服务声明配置,对所述第一服务提供模块基于所述服务声明配置发送的地址解析请求中包含的所述第二服务提供模块的服务地址进行解析,获得所述服务地址对应的负载地址并向所述第一服务提供模块发送;所述第一服务提供模块,基于所述控制中心模块发送的所述负载地址发送针对所述第二服务提供模块的调用请求;所述负载均衡模块,用于将所述调用请求转发至所述第二服务提供模块的实例上。所述应用服务调用系统能够适应不同的开发环境,针对不同开发环境中应用服务相互之间的调用实现负载均衡,应用范围更加广泛。
Description
技术领域
本申请涉及应用技术领域,具体涉及一种应用服务调用系统。本申请同时涉及两种应用服务调用方法以及装置,一种应用服务调用请求转发方法以及装置,以及三种计算机可读介质。
背景技术
在企业级的应用场景中,应用的功能越来越多样化,一个应用往往集成有多个功能,根据功能的不同划分出不同的服务模块,从而形成一个应用的多个服务,并且这些服务之间相互通信,比如购物应用的商品购买服务会调用交易支付服务;同时,不同服务由于业务复杂度或业务量的不同,有的服务会有不止一个的实例,在调用这些服务的过程中需要将请求按照一定的策略路由到被调用服务的实例上。目前实现这一调用的方案有如下两种:
一是通过负载均衡设备或者软件实现负载均衡,比如通过LVS(Linux VirtualServer)等负载均衡设备实现,具体是将被调用的服务挂载到负载均衡设备的后端端口上面,转发负载均衡前端端口上调用者的请求来实现负载均衡,并在后端服务变化时进行手动修改。
二是通过注册中心的方式实现负载均衡,服务的实例启动时都会将自己的访问地址写到注册中心服务上,调用者在调用之前会先去注册中心取到被调用的服务的实例列表,然后再将请求直接发给被调用者的实例上。
然而,上述第一种通过负载均衡设备或者软件实现的负载均衡,在不同的环境下需要进行配置使其与不同的环境匹配,比如在线上生产环境下以及本地开发测试环境下需要分别进行配置,增加了开发、测试、发布和运维的成本。
上述第二种通过注册中心的方式实现的负载均衡,服务都需要遵守注册中心的协议,在应用采用各种异构语言编程的模式中,维护各种语言的注册中心的标准就增加了很大的成本;并且,需要在不同环境下配置不同的注册中心,同样会增加开发、测试、发布和运维的成本。
发明内容
本申请提供一种应用服务调用系统,以解决现有技术存在的缺陷。本申请另外提供两种应用服务调用方法以及装置,一种应用服务调用请求转发方法以及装置,以及三种计算机可读介质。
本申请提供一种应用服务调用系统,包括:
控制中心模块、第一服务提供模块、负载均衡模块和第二服务提供模块;
其中,所述控制中心模块,用于声明所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,对所述第一服务提供模块基于所述服务声明配置发送的地址解析请求中包含的所述第二服务提供模块的服务地址进行解析,获得所述服务地址对应的负载地址并向所述第一服务提供模块发送;
所述第一服务提供模块,用于向所述控制中心模块发送所述地址解析请求,接收所述控制中心模块发送的所述负载地址,并基于所述负载地址发送针对所述第二服务提供模块的调用请求;
所述负载均衡模块,用于将所述调用请求转发至所述第二服务提供模块的实例上。
可选的,所述服务声明配置,包括所述第二服务提供模块的服务地址。
可选的,所述服务声明配置,包括下述至少一项:
所述第二服务提供模块的服务标识、所述第二服务提供模块进行状态检查的检查类型和所述第二服务提供模块的实例数目。
可选的,所述部署所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,包括:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目在服务器上部署实例;
按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡模块的第一端口的映射;若否,解除所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述声明所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,包括:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目在服务器上部署实例;
建立所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述声明所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,包括:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目在服务器上部署实例;
按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述服务声明配置,包括下述至少一项:
所述第一服务提供模块的服务标识和所述第一服务提供模块调用所述第二服务提供模块的调用声明。
可选的,所述控制中心模块,用于将所述第一服务提供模块的实例部署在服务器上,并根据所述第一服务提供模块调用所述第二服务提供模块的调用声明部署所述第一服务提供模块的代理模块。
可选的,所述代理模块按照一一对应原则与所述第一服务提供模块绑定。
可选的,所述控制中心模块记录有所述服务地址与所述负载地址的对应关系,所述代理模块根据所述对应关系对所述服务地址进行解析,获得所述负载地址。
可选的,所述服务地址,包括所述第二服务提供模块的域名;所述负载地址,包括所述负载均衡模块的IP地址。
本申请提供的第一种应用服务调用方法,包括:
声明第一服务提供模块调用第二服务提供模块的服务声明配置;
接收所述第一服务提供模块发送的地址解析请求;所述地址解析请求中包含所述第二服务提供模块的服务地址;
根据所述服务声明配置将所述服务地址解析到所述服务地址对应的负载地址;
向所述第一服务提供模块发送所述负载地址。
可选的,所述服务声明配置,包括所述第二服务提供模块的服务地址。
可选的,所述服务声明配置,包括下述至少一项:
所述第二服务提供模块的服务标识、所述第二服务提供模块进行状态检查的检查类型和所述第二服务提供模块的实例数目。
可选的,所述声明第一服务提供模块调用第二服务提供模块的服务声明配置,采用如下方式实现:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目部署实例;
按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡模块的第一端口的映射;若否,解除所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述服务声明配置,包括下述至少一项:
所述第一服务提供模块的服务标识和所述第一服务提供模块调用所述第二服务提供模块的调用声明。
可选的,所述应用服务调用方法,包括:
部署所述第一服务提供模块的实例;
根据所述调用声明部署所述第一服务提供模块的代理模块;所述代理模块按照一一对应原则与所述第一服务提供模块绑定;
其中,所述将所述服务地址解析到所述服务地址对应的负载地址步骤基于所述第一服务提供模块的代理模块实现。
本申请提供的第一种应用服务调用装置,包括:
服务声明配置声明单元,用于声明第一服务提供模块调用第二服务提供模块的服务声明配置;
地址解析请求接收单元,用于基于所述服务声明配置接收所述第一服务提供模块发送的地址解析请求;所述地址解析请求中包含所述第二服务提供模块的服务地址;
服务地址解析单元,用于根据所述服务声明配置将所述服务地址解析到所述服务地址对应的负载地址;
负载地址发送单元,用于向所述第一服务提供模块发送所述负载地址。
本申请提供的第二种应用服务调用方法,包括:
向控制中心模块发送地址解析请求;所述地址解析请求中包含用于调用第二服务提供模块的服务地址;
接收所述控制中心模块发送的所述服务地址对应的负载地址;
基于所述负载地址发送针对所述第二服务提供模块的调用请求。
本申请提供的第二种应用服务调用装置,包括:
地址解析请求发送单元,用于向控制中心模块发送地址解析请求;所述地址解析请求中包含用于调用第二服务提供模块的服务地址;
负载地址接收单元,用于接收所述控制中心模块发送的所述服务地址对应的负载地址;
调用请求发送单元,用于基于所述负载地址发送针对所述第二服务提供模块的调用请求。
本申请提供的一种应用服务调用请求转发方法,包括:
接收第一服务提供模块基于负载地址发送的针对所述第二服务提供模块的调用请求;
确定所述调用请求对应的所述第二服务提供模块的实例所在端口;
通过所述端口向所述实例转发所述调用请求;
其中,所述负载地址根据所述第二服务提供模块的服务地址解析。
本申请提供的一种应用服务调用请求转发装置,包括:
调用请求接收单元,用于接收第一服务提供模块基于负载地址发送的针对所述第二服务提供模块的调用请求;
端口确定单元,用于确定所述调用请求对应的所述第二服务提供模块的实例所在端口;
调用请求转发单元,用于通过所述端口向所述实例转发所述调用请求;
其中,所述负载地址根据所述第二服务提供模块的服务地址解析。
本申请提供的第一种计算机可读介质,其上存储有指令,所述指令被执行以用于:
声明第一服务提供模块调用第二服务提供模块的服务声明配置;
基于所述服务声明配置接收所述第一服务提供模块发送的地址解析请求;所述地址解析请求中包含所述第二服务提供模块的服务地址;
将所述服务地址解析到所述服务地址对应的负载地址;
向所述第一服务提供模块发送所述负载地址。
本申请提供的第二种计算机可读介质,其上存储有指令,所述指令被执行以用于:
向控制中心模块发送地址解析请求;所述地址解析请求中包含用于调用第二服务提供模块的服务地址;
接收所述控制中心模块发送的所述服务地址对应的负载地址;
基于所述负载地址发送针对所述第二服务提供模块的调用请求。
本申请提供的第三种计算机可读介质,其上存储有指令,所述指令被执行以用于:
接收第一服务提供模块基于负载地址发送的针对所述第二服务提供模块的调用请求;
确定所述调用请求对应的所述第二服务提供模块的实例所在端口;
通过所述端口向所述实例转发所述调用请求;
其中,所述负载地址根据所述第二服务提供模块的服务地址解析。
本申请提供的所述应用服务调用系统,包括:控制中心模块、第一服务提供模块、负载均衡模块和第二服务提供模块;其中,所述控制中心模块,用于声明所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,对所述第一服务提供模块基于所述服务声明配置发送的地址解析请求中包含的所述第二服务提供模块的服务地址进行解析,获得所述服务地址对应的负载地址并向所述第一服务提供模块发送;所述第一服务提供模块,用于向所述控制中心模块发送所述地址解析请求,接收所述控制中心模块发送的所述负载地址,并基于所述负载地址发送针对所述第二服务提供模块的调用请求;所述负载均衡模块,用于将所述调用请求转发至所述第二服务提供模块的实例上。
本申请提供的所述应用服务调用系统,首先由所述控制中心模块声明所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,在所述第一服务提供模块基于所述服务声明配置调用所述第二服务提供模块的过程中,将所述第一服务提供模块针对所述第二服务提供模块的调用解析到所述负载均衡模块上,由所述负载均衡模块转发至所述第二服务提供模块的实例上,从而实现所述第一服务提供模块针对所述第二服务提供模块调用的负载均衡;同时,所述应用服务调用系统能够适应不同的开发环境,在不同开发环境中均可实现所述第一服务提供模块针对所述第二服务提供模块的调用,从而使应用服务相互之间的调用突破了开发环境的限制,针对不同开发环境中应用服务相互之间的调用实现负载均衡,应用范围更加广泛。
附图说明
附图1是本申请提供的一种应用服务调用系统的示意图;
附图2是本申请提供的一种服务部署的示意图;
附图3是本申请提供的一种服务实例状态检查的示意图;
附图4是本申请提供的第一种应用服务调用方法实施例的处理流程图;
附图5是本申请提供的第一种应用服务调用装置实施例的示意图;
附图6是本申请提供的第二种应用服务调用方法实施例的处理流程图;
附图7是本申请提供的第二种应用服务调用装置实施例的示意图;
附图8是本申请提供的一种应用服务调用请求转发方法实施例的处理流程图;
附图9是本申请提供的一种应用服务调用请求转发装置实施例的示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请提供一种应用服务调用系统,本申请另外提供两种应用服务调用方法以及装置,一种应用服务调用请求转发方法以及装置,以及三种计算机可读介质。以下分别结合本申请提供的实施例的附图逐一进行详细说明。
本申请提供的所述应用服务调用系统实施例如下:
参照附图1,其示出了本申请提供的一种应用服务调用系统的示意图,参照附图2,其示出了本申请提供的一种服务部署的示意图,参照附图3,其示出了本申请提供的一种服务实例状态检查的示意图。
本申请实施例所述应用服务调用系统如附图1所示,包括:控制中心模块101、第一服务提供模块102(第一服务提供模块102提供的服务为服务B,即发起调用的服务)、负载均衡模块103和第二服务提供模块104(第二服务提供模块104提供的服务为服务A,即被调用的服务),其中,所述控制中心模块101,用于声明服务B调用服务A的服务声明配置,对服务B发送的地址解析请求中包含的服务A的服务地址进行解析,获得所述服务地址对应的负载地址并向服务B发送;服务B用于向所述控制中心模块101发送所述地址解析请求,接收所述控制中心模块101发送的所述负载地址,并基于所述负载地址发送针对服务A的调用请求;所述负载均衡模块103,用于将所述调用请求转发至服务A的实例上。在服务B调用服务A的具体调用过程中,服务A采用自动注册的方式将其自身的服务地址注册到所述负载均衡模块103的第一端口,所述第一端口是指负载均衡模块103端口中包含的用于转发或者发送数据的端口,相应的,所述负载均衡模块103端口中还包含用于接收数据的端口,基于此,可将负载均衡模块103端口分为前端和后端,前端是指用于接收数据的端口所在的一端,后端是指用于转发或者发送数据的端口所在的一端;服务B在发起针对服务A的调用时,所述控制中心模块101会将访问服务A的服务地址的调用请求解析到所述负载均衡模块103的负载地址上,由所述负载均衡模块103将服务B针对服务A发送的调用请求转发至服务A的实例上,通过负载均衡模块的方式实现服务B对服务A的调用。
本申请实施例所述服务A是指被调用的服务,服务B是指发起调用的服务,服务A和服务B可以是同一个应用的不同服务,可以是不同应用的服务。本实施例以服务B调用服务A为例进行说明,与之相类似,服务A调用服务B或者其他服务之间的调用,与服务B调用服务A的过程类似,只需将发起调用的一方看作是服务B,被调用的一方看作是服务A即可。
所述负载均衡模块103,可采用硬件或者软件方式实现的负载均衡,比如通过LVS(Linux Virtual Server)等负载均衡设备实现的负载均衡,具体的,服务B针对服务A的调用过程中,将所述负载均衡模块103通过将服务B针对服务A发送的调用请求负载到后端服务器(负载均衡模块103的数据转发/发送端口对应的服务器)上部署的服务A的实例上,从而实现负载均衡。
在具体实施时,服务B针对服务A的调用关系可通过描述文件体现,将服务B调用服务A的服务声明配置记录在描述文件中。本申请实施例提供的一种优选实施例中,所述服务声明配置包括:服务A的服务标识、服务A进行状态检查的检查类型、服务A的服务地址、服务A的实例数目、服务B的服务标识以及服务B调用服务A的调用声明。例如,记录服务B调用服务A的服务声明配置的描述文件如下:
服务A:
health_check:/health#状态检查类型
service_advertise:serviceA.local#注册到负载均衡的服务地址
scale:2#的实例数目
服务B:
depends:serviceA#声明被调用的服务为服务A
上述描述文件中声明了对服务A的实例进行状态检查时所采用的状态检查类型,即对服务A的实例进行健康检查的方式,健康检查的目的是为了确定所述负载均衡模块103后端服务器上部署的服务实例的业务可用性,避免后端服务器上部署的服务实例异常对总体服务的影响。在健康检查过程中,当所述负载均衡模块103后端服务器上部署的服务实例发生异常,所述负载均衡模块103会将新的请求分发到后端其他正常的服务实例上;如果异常服务实例恢复正常时,所述负载均衡模块103会将其自动恢复到负载均衡服务中。
优选的,上述描述文件中还声明了服务A注册到负载均衡模块的服务地址,注册成功之后,服务B基于服务A的服务地址访问服务A的实例时,负载均衡模块会将服务A的服务地址解析到其自身的负载地址上,并最终转发至后端服务器上部署的服务A的实例上。在实际应用中,上述用于访问服务A的服务地址可以是服务A的域名(比如serviceA.local),服务B通过域名来调用服务A,对应的,服务A的域名被解析到的所述负载均衡模块103的负载地址可以是负载均衡模块103的IP地址,比如192.168.1.2。
在服务B调用服务A之前,所述控制中心模块101首先部署上述描述文件,部署过程中对其中记录的服务声明配置进行扫描,如附图2和附图3所示,本申请实施例提供的一种优选方式中,上述描述文件可采用如下方式进行部署:
1)扫描上述描述文件中记录的服务B调用服务A的服务声明配置;
对上述描述文件中记录的服务声明配置的扫描,具体是通过扫描服务标识对描述文件进行扫描,比如采用扫描上述描述文件中的服务标签的方式进行扫描。
2)根据服务A的实例数目在服务器上部署实例;
上述服务A的实例数目为2,则在所述负载均衡模块103后端服务器上部署服务A的实例1和实例2,比如在所述负载均衡模块103后端ECS(Elastic Compute Service,云服务器)上部署服务A的两个实例。
3)按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡后端的映射;若否,解除所述实例与所述负载均衡后端的映射。
如附图2所示,服务A的实例包括实例1和实例2,其中实例1的状态为正常状态,即实例1当前可用,将实例1的IP地址(192.168.0.2:80)注册到所述负载均衡模块103后端,建立实例1与所述负载均衡模块103后端的映射。如果实例2与实例1一样,均被注册到所述负载均衡模块103后端,即实例2的IP地址(192.168.0.3:80)被注册到所述负载均衡模块103后端(如附图1所示),如果实例2的状态发生变化,其当前的状态为异常状态,即实例2当前不可用,则解除实例2与所述负载均衡模块103后端建立的映射,将实例2从负载均衡模块103后端摘除。另一种可能是实例2的IP地址(192.168.0.3:80)没有被注册到所述负载均衡模块103后端,不作处理即可。
需要说明的是,上述描述文件部署完成之后,即服务A完成在所述负载均衡模块103的注册后,服务A的域名与所述负载均衡模块103的IP地址的对应关系被记录到控制中心模块101上,如附图2所示,所述控制中心模块101记录有服务A的域名(serviceA.local)与所述负载均衡模块103的IP地址(192.168.1.2)的对应关系:serviceA.local->192.168.1.2。
上述部署描述文件的实现方式,通过对所述负载均衡模块103后端服务器上部署的服务的实例状态的检查机制,以及根据实例状态的检查结果实现针对实例的自动响应处理,将状态正常的实例注册到所述负载均衡模块103后端,从而实现了服务在所述负载均衡模块103的自动注册,不需要用户手动将服务注册到所述负载均衡模块103上;对于状态不正常的实例实现从所述负载均衡模块103的自动摘除,无需用户手动将服务注册到所述负载均衡模块103上,同样不需要用户手动进行,可见,上述实现的服务注册到所述负载均衡模块103以及从负载均衡模块103摘除服务的自动化处理机制,实现方式更加便捷,同时也更加智能化。
除上述提供的描述文件部署方式外,在具体实施时,还可以采用其他方式实现描述文件部署,比如在描述文件中并未记录服务A的健康检查方式的前提下,在部署时,首先对描述文件中记录的服务声明配置进行扫描,然后根据服务A的实例数目在所述负载均衡模块103后端服务器上部署服务A的实例,并且将服务A实例的IP地址注册到所述负载均衡模块103后端。再比如对上述描述文件进行部署时,首先对描述文件中记录的服务声明配置进行扫描,然后根据服务A的实例数目在所述负载均衡模块103后端服务器上部署服务A的实例,此后,对于状态正常的实例,将实例的IP地址注册到所述负载均衡模块103后端,对于状态异常的实例不作处理即可。
本实施例中,服务B访问服务A是通过访问服务A的域名实现,因此,如果服务B声明了调用服务A的调用关系,则在服务B创建部署时,会部署一个与服务B具有一一对应关系的DNS代理模块,并将DNS代理模块与服务B绑定,部署DNS代理模块的目的是为了在服务B访问服务A的过程中,将访问服务A的域名的调用请求解析到所述负载均衡模块103的IP地址上,由所述负载均衡模块103将这些调用请求转发至后端服务器上部署的服务A的实例上。
如附图3所示,服务B在调用服务A的过程中,首先要进行地址解析请求(DNS请求)的解析过程,DNS请求的解析过程是双向的,首先由服务B发送DNS请求到其绑定的DNS代理模块,DNS代理模块拦截服务B发送的DNS请求后,根据DNS请求中包含服务A的域名(serviceA.local),通过在所述控制中心模块101查询服务A的域名与所述负载均衡模块103的对应关系(serviceA.local->192.168.1.2),依照该对应关系将服务A的域名解析到所述负载均衡模块103的IP地址上,并将解析获得的负载均衡模块103的IP地址返回给服务B。
上述DNS请求的解析过程完成后,服务B通过其绑定的DNS代理模块获得所述负载均衡模块103的IP地址(192.168.1.2),在此基础上,服务B根据所述负载均衡模块103的IP地址发送调用服务A进行数据处理的调用请求,所述调用请求被发送至所述负载均衡模块103后,由所述负载均衡模块103根据预设的路由规则向后端服务器上部署的服务A的实例转发所述调用请求,实现服务B对服务A调用的负载均衡。
上述服务B调用服务A的过程中,通过访问服务A的域名实现访问,同时,所述负载均衡模块103也是通过IP地址进行访问,对于服务B是感知不到所述负载均衡模块103的,因此,当服务A和服务B在不同开发环境中发布时,比如在线上的生产环境或者线下的测试环境中,不需要变更配置以适应不同开发环境,可见,本申请提供的所述应用服务调用系统能够适应不同的开发环境,在不同开发环境中均可实现服务B对服务A的调用,从而使应用服务相互之间的调用突破了开发环境的限制,应用范围更加的广泛。
本申请提供的第一种应用服务调用方法实施例如下:
在上述的实施例中,提供了一种应用服务调用系统,除此之外,本申请还提供一种应用服务调用方法,与下述提供的第二种应用服务调用方法以及下述应用服务调用请求转发方法相互配合,因此,阅读本实施例请参照下述提供的第二种应用服务调用方法实施例以及应用服务调用请求转发方法实施例。下面结合附图进行说明。
参照附图2,其示出了本申请提供的一种服务部署的示意图,参照附图3,其示出了本申请提供的一种服务实例状态检查的示意图,参照附图4,其示出了本申请提供的第一种应用服务调用方法实施例的处理流程图。
本实施例所述应用服务调用方法的实施主体为上述应用服务调用系统中的控制中心模块,参照上述提供的所述应用服务调用系统实施例中所述控制中心模块的对应说明,本实施例在此不再赘述,下述描述的方法实施例仅仅是示意性的。
本申请提供第一种应用服务调用方法,包括:
步骤S401,声明第一服务提供模块调用第二服务提供模块的服务声明配置。
本申请实施例提供的一种优选实施例中,服务B针对服务A的调用关系可通过描述文件体现,将服务B调用服务A的服务声明配置记录在描述文件中,具体的,所述服务声明配置包括:服务A的服务标识、服务A进行状态检查的检查类型、服务A的服务地址、服务A的实例数目、服务B的服务标识以及服务B调用服务A的调用声明。例如,记录服务B调用服务A的服务声明配置的描述文件如下:
服务A:
health_check:/health#状态检查类型
service_advertise:serviceA.local#注册到负载均衡的服务地址
scale:2#的实例数目
服务B:
depends:serviceA#声明被调用的服务为服务A
上述描述文件中声明了对服务A的实例进行状态检查时所采用的状态检查类型,即对服务A的实例进行健康检查的方式,健康检查的目的是为了确定所述负载均衡模块103后端服务器上部署的服务实例的业务可用性,避免后端服务器上部署的服务实例异常对总体服务的影响。在健康检查过程中,当所述负载均衡模块103后端服务器上部署的服务实例发生异常,所述负载均衡模块103会将新的请求分发到后端其他正常的服务实例上;如果异常服务实例恢复正常时,所述负载均衡模块103会将其自动恢复到负载均衡服务中。
优选的,上述描述文件中还声明了服务A注册到负载均衡模块的服务地址,注册成功之后,服务B基于服务A的服务地址访问服务A的实例时,负载均衡模块会将服务A的服务地址解析到其自身的负载地址上,并最终转发至后端服务器上部署的服务A的实例上。在实际应用中,上述用于访问服务A的服务地址可以是服务A的域名(比如serviceA.local),服务B通过域名来调用服务A,对应的,服务A的域名被解析到的所述负载均衡模块103的负载地址可以是负载均衡模块103的IP地址,比如192.168.1.2。
在服务B调用服务A之前,所述控制中心模块101首先部署上述描述文件,部署过程中对其中记录的服务声明配置进行扫描,如附图2和附图3所示,本申请实施例提供的一种优选方式中,上述描述文件可采用如下方式进行部署:
1)扫描上述描述文件中记录的服务B调用服务A的服务声明配置;
对上述描述文件中记录的服务声明配置的扫描,具体是通过扫描服务标识对描述文件进行扫描,比如采用扫描上述描述文件中的服务标签的方式进行扫描。
2)根据服务A的实例数目部署实例;
上述服务A的实例数目为2,则在所述负载均衡模块103后端服务器上部署服务A的实例1和实例2,比如在所述负载均衡模块103后端ECS(Elastic Compute Service,云服务器)上部署服务A的两个实例。
3)按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡后端的映射;若否,解除所述实例与所述负载均衡后端的映射。
如附图2所示,服务A的实例包括实例1和实例2,其中实例1的状态为正常状态,即实例1当前可用,将实例1的IP地址(192.168.0.2:80)注册到所述负载均衡模块103后端,建立实例1与所述负载均衡模块103后端的映射。如果实例2与实例1一样,均被注册到所述负载均衡模块103后端,即实例2的IP地址(192.168.0.3:80)被注册到所述负载均衡模块103后端(如附图1所示),如果实例2的状态发生变化,其当前的状态为异常状态,即实例2当前不可用,则解除实例2与所述负载均衡模块103后端建立的映射,将实例2从负载均衡模块103后端摘除。
上述部署描述文件的实现方式,通过对所述负载均衡模块103后端服务器上部署的服务的实例状态的检查机制,以及根据实例状态的检查结果实现针对实例的自动响应处理,将状态正常的实例注册到所述负载均衡模块103后端,从而实现了服务在所述负载均衡模块103的自动注册,不需要用户手动将服务注册到所述负载均衡模块103上;对于状态不正常的实例实现从所述负载均衡模块103的自动摘除,无需用户手动将服务注册到所述负载均衡模块103上,同样不需要用户手动进行,可见,上述实现的服务注册到所述负载均衡模块103以及从负载均衡模块103摘除服务的自动化处理机制,实现方式更加便捷,同时也更加智能化。
步骤S402,接收所述第一服务提供模块发送的地址解析请求。
在具体实施时,服务B访问服务A是通过访问服务A的域名实现,因此,如果服务B声明了调用服务A的调用关系,则在服务B创建部署时,会部署一个与服务B具有一一对应关系的DNS代理模块,并将DNS代理模块与服务B绑定,服务B发送地址解析请求(DNS请求)到其绑定的DNS代理模块之后,由DNS代理模块拦截服务B发送的DNS请求并向所述控制中心模块101发送,相应的,本步骤中,接收服务B绑定的DNS代理模块发送的DNS请求,其中,所述DNS请求中包含服务A的服务地址,即服务A的域名(serviceA.local)。
步骤S403,根据所述服务声明配置将所述服务地址解析到所述服务地址对应的负载地址。
如附图3所示,服务B在调用服务A的过程中,首先要进行地址解析请求(DNS请求)的解析过程,DNS请求的解析过程是双向的,在上述步骤S402接收服务B绑定的DNS代理模块发送的DNS请求之后,本步骤中,所述控制中心模块101根据服务A的域名与所述负载均衡模块103的对应关系(serviceA.local->192.168.1.2),依照该对应关系将服务A的域名解析到所述负载均衡模块103的IP地址上。
由此可见,只有在声明了服务B调用服务A的服务声明配置之后,即上述步骤S401中记录所述服务声明配置的描述文件部署完成之后,服务A的域名与所述负载均衡模块103的IP地址的对应关系才会被记录到所述控制中心模块101上,所述控制中心模块101才能根据所述服务A的域名与所述负载均衡模块103的IP地址的对应关系、将服务A的域名解析到所述负载均衡模块103的IP地址上。
步骤S404,向所述第一服务提供模块发送所述负载地址。
所述控制中心模块101依照所述对应关系将服务A的域名解析到所述负载均衡模块103的IP地址之后,由所述控制中心模块101将解析获得的负载均衡模块103的IP地址返回给服务B。
上述DNS请求的解析过程完成后,服务B通过其绑定的DNS代理模块获得所述负载均衡模块103的IP地址(192.168.1.2),在此基础上,服务B根据所述负载均衡模块103的IP地址发送调用服务A进行数据处理的调用请求,所述调用请求被发送至所述负载均衡模块103后,由所述负载均衡模块103根据预设的路由规则向后端服务器上部署的服务A的实例转发所述调用请求,实现服务B对服务A调用的负载均衡。
本申请提供的第一种应用服务调用装置实施例如下:
在上述的实施例中,提供了第一种应用服务调用方法,与之相对应的,本申请还提供了一种应用服务调用装置,下面结合附图进行说明。
参照附图5,其示出了本申请提供的第一种应用服务调用装置实施例的示意图。
由于装置实施例与方法实施例相互对应,阅读本实施例的内容请参照上述提供的第一种应用服务调用方法实施例的对应说明。下述描述的装置实施例仅仅是示意性的。
本申请提供第一种应用服务调用装置,包括:
服务声明配置声明单元501,用于声明第一服务提供模块调用第二服务提供模块的服务声明配置;
地址解析请求接收单元502,用于接收所述第一服务提供模块发送的地址解析请求;所述地址解析请求中包含所述第二服务提供模块的服务地址;
服务地址解析单元503,用于根据所述服务声明配置将所述服务地址解析到所述服务地址对应的负载地址;
负载地址发送单元504,用于向所述第一服务提供模块发送所述负载地址。
可选的,所述服务声明配置,包括所述第二服务提供模块的服务地址。
可选的,所述服务声明配置,包括下述至少一项:
所述第二服务提供模块的服务标识、所述第二服务提供模块进行状态检查的检查类型和所述第二服务提供模块的实例数目。
可选的,所述服务声明配置声明单元501,包括:
第一扫描子单元,用于扫描所述服务声明配置;
第一实例部署子单元,用于根据所述第二服务提供模块的实例数目部署实例;
第一状态检查子单元,用于按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,第一运行映射建立子单元;若否,运行映射解除子单元;
其中,所述第一映射建立子单元,用于建立所述实例与所述负载均衡模块的第一端口的映射;
所述映射解除子单元,用于解除所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述服务声明配置声明单元501,包括:
第二扫描子单元,用于扫描所述服务声明配置;
第二实例部署子单元,用于根据所述第二服务提供模块的实例数目在服务器上部署实例;
第二映射建立子单元,用于建立所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述服务声明配置,包括下述至少一项:
所述第一服务提供模块的服务标识和所述第一服务提供模块调用所述第二服务提供模块的调用声明。
可选的,所述应用服务调用装置,包括:
实例部署单元,用于部署所述第一服务提供模块的实例;
代理模块部署单元,用于根据所述调用声明部署所述第一服务提供模块的代理模块;所述代理模块按照一一对应原则与所述第一服务提供模块绑定;
其中,所述服务地址解析单元503基于所述第一服务提供模块的代理模块实现。
可选的,所述服务地址,包括所述第二服务提供模块的域名;所述负载地址,包括所述负载均衡模块的IP地址。
本申请提供的第二种应用服务调用方法实施例如下:
在上述的实施例中,提供了第一种应用服务调用系统和应用服务调用方法,除此之外,本申请提供第二种应用服务调用方法,与上述提供的第一种应用服务调用方法以及下述提供的应用服务调用请求转发方法相互配合,因此,阅读本实施例请参照上述提供的第一种应用服务调用方法实施例,以及下述提供的应用服务调用请求转发方法实施例。下面结合附图进行说明。
参照附图6,其示出了本申请提供的第二种应用服务调用方法实施例的处理流程图。
本实施例所述应用服务调用方法的实施主体为上述应用服务调用系统中的第一服务提供模块,参照上述提供的所述应用服务调用系统实施例中所述第一服务提供模块的对应说明,本实施例在此不再赘述,下述描述的方法实施例仅仅是示意性的。
本申请提供的第二种应用服务调用方法,包括:
步骤S601,向控制中心模块发送地址解析请求;所述地址解析请求中包含用于调用第二服务提供模块的服务地址;
步骤S602,接收所述控制中心模块发送的所述服务地址对应的负载地址;
步骤S603,基于所述负载地址发送针对所述第二服务提供模块的调用请求。
可选的,所述控制中心模块记录有所述服务地址与所述负载地址的对应关系,所述控制中心模块根据所述对应关系,并基于部署的代理模块将所述服务地址解析为其对应的负载地址。
可选的,所述服务地址,包括所述第二服务提供模块的域名;所述负载地址,包括所述负载均衡模块的IP地址。
本申请提供的第二种应用服务调用装置实施例如下:
在上述的实施例中,提供了第二种应用服务调用方法,与之相对应的,本申请还提供了第二种应用服务调用装置,下面结合附图进行说明。
参照附图7,其示出了本申请提供的第二种应用服务调用装置实施例的示意图。
由于装置实施例与方法实施例相互对应,阅读本实施例的内容请参照上述提供的第二种应用服务调用方法实施例的对应说明。下述描述的装置实施例仅仅是示意性的。
本申请提供第二种应用服务调用装置,包括:
地址解析请求发送单元701,用于向控制中心模块发送地址解析请求;所述地址解析请求中包含用于调用第二服务提供模块的服务地址;
负载地址接收单元702,用于接收所述控制中心模块发送的所述服务地址对应的负载地址;
调用请求发送单元703,用于基于所述负载地址发送针对所述第二服务提供模块的调用请求。
可选的,所述控制中心模块记录有所述服务地址与所述负载地址的对应关系,所述控制中心模块根据所述对应关系,并基于部署的代理模块将所述服务地址解析为其对应的负载地址。
可选的,所述服务地址,包括所述第二服务提供模块的域名;所述负载地址,包括所述负载均衡模块的IP地址。
本申请提供的一种应用服务调用请求转发方法实施例如下:
在上述的实施例中,提供了一种应用服务调用系统以及两种应用服务调用方法,除此之外,本申请还提供一种应用服务调用请求转发方法,与上述提供的两种所述应用服务调用方法相互配合,因此,阅读本实施例请参照上述提供的两种应用服务调用方法实施例。下面结合附图进行说明。
参照附图8,其示出了本申请提供的一种应用服务调用请求转发方法实施例的处理流程图。
本申请所述应用服务调用请求转发方法的实施主体为上述应用服务调用系统中的负载均衡模块,参照上述提供的所述应用服务调用系统实施例中所述负载均衡模块的对应说明,本实施例在此不再赘述,下述描述的方法实施例仅仅是示意性的。
本申请提供一种应用服务调用请求转发方法,包括:
步骤S801,接收第一服务提供模块基于负载地址发送的针对所述第二服务提供模块的调用请求;
步骤S802,确定所述调用请求对应的所述第二服务提供模块的实例所在端口;
步骤S803,通过所述端口向所述实例转发所述调用请求;
其中,所述负载地址根据所述第二服务提供模块的服务地址解析。
可选的,所述负载地址由控制中心模块根据其自身记录的服务地址与所述负载地址的对应关系解析获得,所述服务地址包含在所述第一服务提供模块发送至所述控制中心模块的地址解析请求中。
可选的,所述服务地址与所述负载地址的对应关系,基于所述控制中心模块部署的所述第一服务提供模块调用所述第二服务提供模块的服务声明配置获得;
其中,所述服务声明配置,包括下述至少一项:所述第二服务提供模块的服务标识、所述第二服务提供模块进行状态检查的检查类型、所述第二服务提供模块的服务地址、所述第二服务提供模块的实例数目、所述第一服务提供模块的服务标识和/或所述第一服务提供模块调用所述第二服务提供模块的调用声明。
可选的,所述部署所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,采用如下方式实现:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目部署实例;
按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡模块的第一端口的映射;若否,解除所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述部署所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,采用如下方式实现:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目部署实例;
建立所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述部署所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,采用如下方式实现:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目部署实例;
按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述第一服务提供模块的实例由所述控制中心模块部署在服务器上,并由所述控制中心模块根据所述第一服务提供模块调用所述第二服务提供模块的调用声明部署所述第一服务提供模块的代理模块;所述代理模块按照一一对应原则与所述第一服务提供模块绑定,所述代理模块根据所述对应关系对所述服务地址进行解析,获得所述负载地址。
可选的,所述服务地址,包括所述第二服务提供模块的域名。
本申请提供的一种应用服务调用请求转发装置实施例如下:
在上述的实施例中,提供了一种应用服务调用请求转发方法,与之相对应的,本申请还提供了一种应用服务调用请求转发装置,下面结合附图进行说明。
参照附图9,其示出了本申请提供的一种应用服务调用请求转发装置实施例的示意图。
由于装置实施例与方法实施例相互对应,阅读本实施例的内容请参照上述提供的应用服务调用请求转发方法实施例的对应说明。下述描述的装置实施例仅仅是示意性的。
本申请提供一种应用服务调用请求转发装置,包括:
调用请求接收单元901,用于接收第一服务提供模块基于负载地址发送的针对所述第二服务提供模块的调用请求;
端口确定单元902,用于确定所述调用请求对应的所述第二服务提供模块的实例所在端口;
调用请求转发单元903,用于通过所述端口向所述实例转发所述调用请求;
其中,所述负载地址根据所述第二服务提供模块的服务地址解析。
可选的,所述负载地址由控制中心模块根据其自身记录的服务地址与所述负载地址的对应关系解析获得,所述服务地址包含在所述第一服务提供模块发送至所述控制中心模块的地址解析请求中。
可选的,所述服务地址与所述负载地址的对应关系,基于所述控制中心模块部署的所述第一服务提供模块调用所述第二服务提供模块的服务声明配置获得;
其中,所述服务声明配置,包括下述至少一项:所述第二服务提供模块的服务标识、所述第二服务提供模块进行状态检查的检查类型、所述第二服务提供模块的服务地址、所述第二服务提供模块的实例数目、所述第一服务提供模块的服务标识和/或所述第一服务提供模块调用所述第二服务提供模块的调用声明。
可选的,所述部署所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,采用如下方式实现:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目部署实例;
按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡模块的第一端口的映射;若否,解除所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述部署所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,采用如下方式实现:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目部署实例;
建立所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述部署所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,采用如下方式实现:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目部署实例;
按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述第一服务提供模块的实例由所述控制中心模块部署在服务器上,并由所述控制中心模块根据所述第一服务提供模块调用所述第二服务提供模块的调用声明部署所述第一服务提供模块的代理模块;所述代理模块按照一一对应原则与所述第一服务提供模块绑定,所述代理模块根据所述对应关系对所述服务地址进行解析,获得所述负载地址。
可选的,所述服务地址,包括所述第二服务提供模块的域名。
本申请提供的第一种计算机可读介质实施例如下:
本申请提供的第一种计算机可读介质实施例与上述提供的第一种应用服务调用方法实施例相对应,阅读本实施例的内容请参照上述提供的第一种应用服务调用方法实施例的对应说明。下述描述的实施例仅仅是示意性的。
本申请提供第一种计算机可读介质,其上存储有指令,所述指令被执行以用于:
声明第一服务提供模块调用第二服务提供模块的服务声明配置;
接收所述第一服务提供模块发送的地址解析请求;所述地址解析请求中包含所述第二服务提供模块的服务地址;
根据所述服务声明配置将所述服务地址解析到所述服务地址对应的负载地址;
向所述第一服务提供模块发送所述负载地址。
可选的,所述服务声明配置,包括所述第二服务提供模块的服务地址。
可选的,所述服务声明配置,包括下述至少一项:
所述第二服务提供模块的服务标识、所述第二服务提供模块进行状态检查的检查类型和所述第二服务提供模块的实例数目。
可选的,所述声明第一服务提供模块调用第二服务提供模块的服务声明配置,采用如下方式实现:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目部署实例;
按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡模块的第一端口的映射;若否,解除所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述服务声明配置,包括下述至少一项:
所述第一服务提供模块的服务标识和所述第一服务提供模块调用所述第二服务提供模块的调用声明。
可选的,所述计算机可读介质,其上存储有指令,所述指令被执行以用于:
部署所述第一服务提供模块的实例;
根据所述调用声明部署所述第一服务提供模块的代理模块;所述代理模块按照一一对应原则与所述第一服务提供模块绑定;
其中,所述将所述服务地址解析到所述服务地址对应的负载地址步骤基于所述第一服务提供模块的代理模块实现。
本申请提供的第二种计算机可读介质实施例如下:
本申请提供的第二种计算机可读介质实施例与上述提供的第二种应用服务调用方法实施例相对应,阅读本实施例的内容请参照上述提供的第二种应用服务调用方法实施例的对应说明。下述描述的实施例仅仅是示意性的。
本申请提供第二种计算机可读介质,其上存储有指令,所述指令被执行以用于:
向控制中心模块发送地址解析请求;所述地址解析请求中包含用于调用第二服务提供模块的服务地址;
接收所述控制中心模块发送的所述服务地址对应的负载地址;
基于所述负载地址发送针对所述第二服务提供模块的调用请求。
可选的,所述控制中心模块记录有所述服务地址与所述负载地址的对应关系,所述控制中心模块根据所述对应关系,并基于部署的代理模块将所述服务地址解析为其对应的负载地址。
可选的,所述服务地址,包括所述第二服务提供模块的域名;所述负载地址,包括所述负载均衡模块的IP地址。
本申请提供的第三种计算机可读介质实施例如下:
本申请提供的第三种计算机可读介质实施例与上述提供的应用服务调用请求转发方法实施例相对应,阅读本实施例的内容请参照上述提供的应用服务调用请求转发方法实施例的对应说明。下述描述的实施例仅仅是示意性的。
本申请提供第三种计算机可读介质,其上存储有指令,所述指令被执行以用于:
接收第一服务提供模块基于负载地址发送的针对所述第二服务提供模块的调用请求;
确定所述调用请求对应的所述第二服务提供模块的实例所在端口;
通过所述端口向所述实例转发所述调用请求;
其中,所述负载地址根据所述第二服务提供模块的服务地址解析。
可选的,所述负载地址由控制中心模块根据其自身记录的服务地址与所述负载地址的对应关系解析获得,所述服务地址包含在所述第一服务提供模块发送至所述控制中心模块的地址解析请求中。
可选的,所述服务地址与所述负载地址的对应关系,基于所述控制中心模块部署的所述第一服务提供模块调用所述第二服务提供模块的服务声明配置获得;
其中,所述服务声明配置,包括下述至少一项:所述第二服务提供模块的服务标识、所述第二服务提供模块进行状态检查的检查类型、所述第二服务提供模块的服务地址、所述第二服务提供模块的实例数目、所述第一服务提供模块的服务标识和/或所述第一服务提供模块调用所述第二服务提供模块的调用声明。
可选的,所述部署所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,采用如下方式实现:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目部署实例;
按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡模块的第一端口的映射;若否,解除所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述部署所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,采用如下方式实现:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目部署实例;
建立所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述部署所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,采用如下方式实现:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目部署实例;
按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡模块的第一端口的映射。
可选的,所述第一服务提供模块的实例由所述控制中心模块部署在服务器上,并由所述控制中心模块根据所述第一服务提供模块调用所述第二服务提供模块的调用声明部署所述第一服务提供模块的代理模块;所述代理模块按照一一对应原则与所述第一服务提供模块绑定,所述代理模块根据所述对应关系对所述服务地址进行解析,获得所述负载地址。
可选的,所述服务地址,包括所述第二服务提供模块的域名。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (25)
1.一种应用服务调用系统,其特征在于,包括:
控制中心模块、第一服务提供模块、负载均衡模块和第二服务提供模块;
其中,所述控制中心模块,用于声明所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,对所述第一服务提供模块基于所述服务声明配置发送的地址解析请求中包含的所述第二服务提供模块的服务地址进行解析,获得所述服务地址对应的负载地址并向所述第一服务提供模块发送;
所述第一服务提供模块,用于向所述控制中心模块发送所述地址解析请求,接收所述控制中心模块发送的所述负载地址,并基于所述负载地址发送针对所述第二服务提供模块的调用请求;
所述负载均衡模块,用于将所述调用请求转发至所述第二服务提供模块的实例上。
2.根据权利要求1所述的应用服务调用系统,其特征在于,所述服务声明配置,包括所述第二服务提供模块的服务地址。
3.根据权利要求1或2所述的应用服务调用系统,其特征在于,所述服务声明配置,包括下述至少一项:
所述第二服务提供模块的服务标识、所述第二服务提供模块进行状态检查的检查类型和所述第二服务提供模块的实例数目。
4.根据权利要求3所述的应用服务调用系统,其特征在于,所述部署所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,包括:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目在服务器上部署实例;
按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡模块的第一端口的映射;若否,解除所述实例与所述负载均衡模块的第一端口的映射。
5.根据权利要求3所述的应用服务调用系统,其特征在于,所述声明所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,包括:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目在服务器上部署实例;
建立所述实例与所述负载均衡模块的第一端口的映射。
6.根据权利要求3所述的应用服务调用系统,其特征在于,所述声明所述第一服务提供模块调用所述第二服务提供模块的服务声明配置,包括:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目在服务器上部署实例;
按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡模块的第一端口的映射。
7.根据权利要求1至6任意一项所述的应用服务调用系统,其特征在于,所述服务声明配置,包括下述至少一项:
所述第一服务提供模块的服务标识和所述第一服务提供模块调用所述第二服务提供模块的调用声明。
8.根据权利要求7所述的应用服务调用系统,其特征在于,所述控制中心模块,用于将所述第一服务提供模块的实例部署在服务器上,并根据所述第一服务提供模块调用所述第二服务提供模块的调用声明部署所述第一服务提供模块的代理模块。
9.根据权利要求8所述的应用服务调用系统,其特征在于,所述代理模块按照一一对应原则与所述第一服务提供模块绑定。
10.根据权利要求9所述的应用服务调用系统,其特征在于,所述控制中心模块记录有所述服务地址与所述负载地址的对应关系,所述代理模块根据所述对应关系对所述服务地址进行解析,获得所述负载地址。
11.根据权利要求1至10任意一项所述的应用服务调用系统,其特征在于,所述服务地址,包括所述第二服务提供模块的域名;所述负载地址,包括所述负载均衡模块的IP地址。
12.一种应用服务调用方法,其特征在于,包括:
声明第一服务提供模块调用第二服务提供模块的服务声明配置;
接收所述第一服务提供模块发送的地址解析请求;所述地址解析请求中包含所述第二服务提供模块的服务地址;
根据所述服务声明配置将所述服务地址解析到所述服务地址对应的负载地址;
向所述第一服务提供模块发送所述负载地址。
13.根据权利要求12所述的应用服务调用方法,其特征在于,所述服务声明配置,包括所述第二服务提供模块的服务地址。
14.根据权利要求12或13所述的应用服务调用方法,其特征在于,所述服务声明配置,包括下述至少一项:
所述第二服务提供模块的服务标识、所述第二服务提供模块进行状态检查的检查类型和所述第二服务提供模块的实例数目。
15.根据权利要求14所述的应用服务调用方法,其特征在于,所述声明第一服务提供模块调用第二服务提供模块的服务声明配置,采用如下方式实现:
扫描所述服务声明配置;
根据所述第二服务提供模块的实例数目部署实例;
按照所述检查类型对所述实例进行状态检查,判断所述实例的状态是否正常,若是,建立所述实例与所述负载均衡模块的第一端口的映射;若否,解除所述实例与所述负载均衡模块的第一端口的映射。
16.根据权利要求12至15任意一项所述的应用服务调用方法,其特征在于,所述服务声明配置,包括下述至少一项:
所述第一服务提供模块的服务标识和所述第一服务提供模块调用所述第二服务提供模块的调用声明。
17.根据权利要求16所述的应用服务调用方法,其特征在于,包括:
部署所述第一服务提供模块的实例;
根据所述调用声明部署所述第一服务提供模块的代理模块;所述代理模块按照一一对应原则与所述第一服务提供模块绑定;
其中,所述将所述服务地址解析到所述服务地址对应的负载地址步骤基于所述第一服务提供模块的代理模块实现。
18.一种应用服务调用装置,其特征在于,包括:
服务声明配置声明单元,用于声明第一服务提供模块调用第二服务提供模块的服务声明配置;
地址解析请求接收单元,用于接收所述第一服务提供模块发送的地址解析请求;所述地址解析请求中包含所述第二服务提供模块的服务地址;
服务地址解析单元,用于根据所述服务声明配置将所述服务地址解析到所述服务地址对应的负载地址;
负载地址发送单元,用于向所述第一服务提供模块发送所述负载地址。
19.一种应用服务调用方法,其特征在于,包括:
向控制中心模块发送地址解析请求;所述地址解析请求中包含用于调用第二服务提供模块的服务地址;
接收所述控制中心模块发送的所述服务地址对应的负载地址;
基于所述负载地址发送针对所述第二服务提供模块的调用请求。
20.一种应用服务调用装置,其特征在于,包括:
地址解析请求发送单元,用于向控制中心模块发送地址解析请求;所述地址解析请求中包含用于调用第二服务提供模块的服务地址;
负载地址接收单元,用于接收所述控制中心模块发送的所述服务地址对应的负载地址;
调用请求发送单元,用于基于所述负载地址发送针对所述第二服务提供模块的调用请求。
21.一种应用服务调用请求转发方法,其特征在于,包括:
接收第一服务提供模块基于负载地址发送的针对所述第二服务提供模块的调用请求;
确定所述调用请求对应的所述第二服务提供模块的实例所在端口;
通过所述端口向所述实例转发所述调用请求;
其中,所述负载地址根据所述第二服务提供模块的服务地址解析。
22.一种应用服务调用请求转发装置,其特征在于,包括:
调用请求接收单元,用于接收第一服务提供模块基于负载地址发送的针对所述第二服务提供模块的调用请求;
端口确定单元,用于确定所述调用请求对应的所述第二服务提供模块的实例所在端口;
调用请求转发单元,用于通过所述端口向所述实例转发所述调用请求;
其中,所述负载地址根据所述第二服务提供模块的服务地址解析。
23.一种计算机可读介质,其特征在于,其上存储有指令,所述指令被执行以用于:
声明第一服务提供模块调用第二服务提供模块的服务声明配置;
接收所述第一服务提供模块发送的地址解析请求;所述地址解析请求中包含所述第二服务提供模块的服务地址;
根据所述服务声明配置将所述服务地址解析到所述服务地址对应的负载地址;
向所述第一服务提供模块发送所述负载地址。
24.一种计算机可读介质,其特征在于,其上存储有指令,所述指令被执行以用于:
向控制中心模块发送地址解析请求;所述地址解析请求中包含用于调用第二服务提供模块的服务地址;
接收所述控制中心模块发送的所述服务地址对应的负载地址;
基于所述负载地址发送针对所述第二服务提供模块的调用请求。
25.一种计算机可读介质,其特征在于,其上存储有指令,所述指令被执行以用于:
接收第一服务提供模块基于负载地址发送的针对所述第二服务提供模块的调用请求;
确定所述调用请求对应的所述第二服务提供模块的实例所在端口;
通过所述端口向所述实例转发所述调用请求;
其中,所述负载地址根据所述第二服务提供模块的服务地址解析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711129025.1A CN109788015B (zh) | 2017-11-15 | 2017-11-15 | 应用服务调用系统、方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711129025.1A CN109788015B (zh) | 2017-11-15 | 2017-11-15 | 应用服务调用系统、方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109788015A true CN109788015A (zh) | 2019-05-21 |
CN109788015B CN109788015B (zh) | 2023-04-25 |
Family
ID=66493733
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711129025.1A Active CN109788015B (zh) | 2017-11-15 | 2017-11-15 | 应用服务调用系统、方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109788015B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110995829A (zh) * | 2019-11-29 | 2020-04-10 | 广州市百果园信息技术有限公司 | 实例调用方法、装置及计算机存储介质 |
CN112261072A (zh) * | 2019-10-10 | 2021-01-22 | 北京京东尚科信息技术有限公司 | 一种服务调用方法、装置、设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160150005A1 (en) * | 2011-02-21 | 2016-05-26 | Blackberry Limited | The Managed Peer-To-Peer Sharing in Cellular Networks |
CN106067890A (zh) * | 2016-03-29 | 2016-11-02 | 北京肇煜宏泰信息科技有限公司 | 一种域名解析方法、装置及系统 |
CN106657220A (zh) * | 2016-09-21 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种基于nginx的Cloud Foundry内网部署方案 |
CN106941508A (zh) * | 2016-01-05 | 2017-07-11 | 阿里巴巴集团控股有限公司 | 服务调用方法、装置和系统 |
-
2017
- 2017-11-15 CN CN201711129025.1A patent/CN109788015B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160150005A1 (en) * | 2011-02-21 | 2016-05-26 | Blackberry Limited | The Managed Peer-To-Peer Sharing in Cellular Networks |
CN106941508A (zh) * | 2016-01-05 | 2017-07-11 | 阿里巴巴集团控股有限公司 | 服务调用方法、装置和系统 |
CN106067890A (zh) * | 2016-03-29 | 2016-11-02 | 北京肇煜宏泰信息科技有限公司 | 一种域名解析方法、装置及系统 |
CN106657220A (zh) * | 2016-09-21 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种基于nginx的Cloud Foundry内网部署方案 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112261072A (zh) * | 2019-10-10 | 2021-01-22 | 北京京东尚科信息技术有限公司 | 一种服务调用方法、装置、设备和存储介质 |
CN112261072B (zh) * | 2019-10-10 | 2024-04-09 | 北京京东尚科信息技术有限公司 | 一种服务调用方法、装置、设备和存储介质 |
CN110995829A (zh) * | 2019-11-29 | 2020-04-10 | 广州市百果园信息技术有限公司 | 实例调用方法、装置及计算机存储介质 |
CN110995829B (zh) * | 2019-11-29 | 2022-07-22 | 广州市百果园信息技术有限公司 | 实例调用方法、装置及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109788015B (zh) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109145025B (zh) | 一种多数据源集成的数据查询方法、装置及业务服务器 | |
CN112513816B (zh) | 函数即服务(faas)执行分配器 | |
CN108600326B (zh) | 通信方法、装置及设备 | |
CN110138862A (zh) | 基于应用服务的业务处理方法、装置、网关设备及介质 | |
CN106657180B (zh) | 用于云服务的信息传输方法、装置、终端设备及系统 | |
CN105991694B (zh) | 一种实现分布式服务调用的方法与设备 | |
CN111262897B (zh) | 服务调用路由处理方法、装置及系统 | |
US20180210768A1 (en) | Api-based service command invocation | |
CN108038039A (zh) | 记录日志的方法及微服务系统 | |
CN112487402A (zh) | 一种基于erp系统的多租户登录方法、设备及介质 | |
CN109788015A (zh) | 应用服务调用系统、方法以及装置 | |
CN111258772A (zh) | 服务调用信息处理方法、装置及系统 | |
CN108089972B (zh) | 接口测试方法及装置 | |
CN110149365B (zh) | 服务适配方法、设备、系统以及计算机可读介质 | |
CN107426090A (zh) | 信息处理方法、装置、介质、电子设备、服务器及系统 | |
CN114327823A (zh) | 微服务集群的资源调用方法、系统、终端及存储介质 | |
CN114217883A (zh) | 一种服务注册方法以及依据注册信息调用服务的方法 | |
CN108920277B (zh) | 业务执行系统、方法及装置、业务隔离系统 | |
CN114048028A (zh) | 服务调用方法、装置、存储介质和电子设备 | |
US20140066034A1 (en) | Apparatus and method for displaying callback information | |
CN116074386B (zh) | 服务调用方法及装置、服务注册方法及装置 | |
CN111435919B (zh) | 一种配置参数的管理方法、装置及系统 | |
CN116501383B (zh) | 微服务的分配方法、装置、电子设备及可读存储介质 | |
US11115528B1 (en) | Call control service | |
CN110191141B (zh) | 服务调用信息处理方法、装置及计算机系统 |
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 |