CN109981716B - 一种微服务调用方法及装置 - Google Patents
一种微服务调用方法及装置 Download PDFInfo
- Publication number
- CN109981716B CN109981716B CN201711461957.6A CN201711461957A CN109981716B CN 109981716 B CN109981716 B CN 109981716B CN 201711461957 A CN201711461957 A CN 201711461957A CN 109981716 B CN109981716 B CN 109981716B
- Authority
- CN
- China
- Prior art keywords
- service
- micro
- local
- target
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 147
- 230000008569 process Effects 0.000 claims description 83
- 238000004458 analytical method Methods 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 14
- 238000012544 monitoring process Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004366 reverse phase liquid chromatography Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开一种微服务调用方法,应用于本端服务节点,在所述本端服务节点上部署有本地调用代理器,所述方法包括:启动在所述本端服务节点上部署的本端微服务;通过所述本地调用代理器获取所述本端微服务所发起的用于请求调用目标微服务的调用请求;通过所述本地调用代理器从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点;通过所述本地调用代理器向所述目标服务节点发送所述调用请求,使得所述本端微服务从所述目标服务节点上调用所述目标微服务。本发明解决了微服务的复杂度较大的技术问题。
Description
技术领域
本发明涉及应用开发领域,尤其涉及一种微服务调用方法及装置。
背景技术
使用传统的整体式架构(Monolithic Architecture)应用开发系统,如CRM(Customer Relationship Management,即客户关系管理)、ERP(Enterprise ResourcePlanning,企业资源计划)等大型应用,随着新需求的不断增加,企业更新和修复大型整体式应用变得越来越困难。应运而生了微服务架构,微服务架构是一类将单一应用程序作为由众多微服务构成之套件加以开发的方式,其中各项微服务都拥有自己的进程并实现通信。这些微服务围绕业务功能建立而成,且凭借自动化部署机制实现独立部署,微服务的目的是有效的拆分应用,实现敏捷开发和部署。
微服务应用是分布式系统,由此会带来固有的复杂性。开发者需要在RPC或者消息传递之间选择并完成进程间通讯机制,因此各微服务之间需要网络调用,合理部署,负载均衡,导致了微服务的复杂度较大。
发明内容
鉴于现有技术存在微服务的复杂度较大的技术问题,本发明实施例提供了一种微服务调用方法及装置。
第一方面,本发明实施例提供一种微服务调用方法,应用于本端服务节点,在所述本端服务节点上部署有本地调用代理器,所述方法包括:
启动在所述本端服务节点上部署的本端微服务;
通过所述本地调用代理器获取所述本端微服务所发起的用于请求调用目标微服务的调用请求;
通过所述本地调用代理器从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点;
通过所述本地调用代理器向所述目标服务节点发送所述调用请求,使得所述本端微服务从所述目标服务节点上调用所述目标微服务。
结合第一方面,在第一方面的第一种可能的实现方式中,所述启动在所述本端服务节点上部署的本端微服务,包括:
以预设进程命名规则启动在所述本端服务节点上部署的本端微服务;
通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点,使得所述对端服务节点从所述共享节点获取所述本端微服务的相关信息,所述共享节点上注册有当前提供的所有微服务的相关信息。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点,包括:
通过所述本地调用代理器检测所述本端服务节点上当前所启动进程是否符合所述预设进程命名规则;
如果符合,表明所述当前所启动进程为对应所述本地微服务的进程,则通过所述本地调用代理器将所述本地微服务的相关信息注册至所述共享节点。
结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点,包括:
通过所述本地调用代理器,将所述本端微服务的服务信息和所述本端微服务的地址信息均注册至所述共享节点。
结合第一方面的第一种可能的实现方式至第三种可能的实现方式中的任一实现方式,在第一方面的第四种可能的实现方式中,在所述通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点之后,还包括:
通过所述本地调用代理器监测所述本地微服务是否退出服务;
如果所述本地调用代理器监测到所述本地微服务退出服务,通过所述本地调用代理器注销已经注册在所述共享节点上的所述本地微服务的相关信息。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述通过所述本地调用代理器从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点,包括:
通过所述本地调用代理器获得所述目标微服务的服务信息;
通过所述本地调用代理器,根据所述目标微服务的服务信息从所述共享节点查找当前提供所述目标微服务的对端服务节点;
通过所述本地调用代理器,根据预设负载均衡策略从当前提供所述目标微服务的对端服务节点中确定所述目标服务节点。
结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述通过所述本地调用代理器获得所述目标微服务的服务信息,包括:
通过所述本地调用代理器解析所述调用请求,获得对所述调用请求的解析结果;
通过所述本地调用代理器检测所述解析结果中是否存在所述目标微服务的服务信息;
如果存在,通过所述本地调用代理器直接从所述解析结果获得所述目标微服务的服务信息;
如果不存在,通过所述本地调用代理器读取针对所述目标微服务的目标接口文件,并将所述目标接口文件中定义的服务信息确定为所述目标微服务的服务信息。
结合第一方面的第五种可能的实现方式,在第一方面的第七种可能的实现方式中,所述通过所述本地调用代理器,根据所述目标微服务的服务信息从所述共享节点查找当前提供所述目标微服务的对端服务节点,包括:
通过所述本地调用代理器从所述共享节点获取服务访问权限白名单,所述服务访问权限白名单中记录有当前处于可访问状态的各微服务的调用路径;
通过所述本地调用代理器,在所述服务访问权限白名单中查找是否存在所述目标微服务的调用路径;
如果存在,通过所述本地调用代理器获取当前提供所述目标微服务的对端服务节点的地址集合。
结合第一方面的第五种可能的实现方式,在第一方面的第八种可能的实现方式中,所述通过所述本地调用代理器,根据预设负载均衡策略从当前提供所述目标微服务的对端服务节点中确定所述目标服务节点,包括:
通过所述本地调用代理器,根据轮询调度策略从当前提供所述目标微服务的各对端服务节点中选择所述目标服务节点,或者
通过所述本地调用代理器,根据源地址哈希策略从提供所述目标微服务的多个对端服务节点中选择所述目标服务节点。
结合第一方面,在第一方面的第九种可能的实现方式中,所述方法还包括:
通过所述本地调用代理器对所述本地调用代理器的请求处理吞吐量和/或所述本地调用代理器发送所述调用请求时的延迟进行记录。
第二方面,本发明实施例提供一种微服务调用系统,应用于本端服务节点,,所述系统部署在本端服务节点上,包括启动单元和本地调用代理器,其中:
所述启动单元,用于启动在所述本端服务节点上部署的本端微服务;
所述本地调用代理器,具体包括:
请求获取单元,用于获取所述本端微服务所发起的用于请求调用目标微服务的调用请求,
节点确定单元,用于通过从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点;
请求发送单元,用于通过所述本地调用代理器向所述目标服务节点发送所述调用请求,使得所述本端微服务从所述目标服务节点上调用所述目标微服务。
结合第二方面,在第二方面的第一种可能的实现方式中,所述启动单元,包括:
启动子单元,用于以预设进程命名规则启动在所述本端服务节点上部署的本端微服务;
注册子单元,用于通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点,使得所述对端服务节点从所述共享节点获取所述本端微服务的相关信息,所述共享节点上注册有当前提供的所有微服务的相关信息。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述注册子单元,具体用于:
通过所述本地调用代理器检测所述本端服务节点上当前所启动进程是否符合所述预设进程命名规则;
如果符合,表明所述当前所启动进程为对应所述本地微服务的进程,则通过所述本地调用代理器将所述本地微服务的相关信息注册至所述共享节点。
结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述注册子单元,具体用于:
通过所述本地调用代理器,将所述本端微服务的服务信息和所述本端微服务的地址信息均注册至所述共享节点。
结合第二方面的第一种可能的实现方式至第三种可能的实现方式中的任一实现方式,在第二方面的第四种可能的实现方式中,还包括:
监测单元,用于在所述本端微服务的相关信息注册至共享节点之后,通过所述本地调用代理器监测所述本地微服务是否退出服务;
注销单元,用于如果所述本地调用代理器监测到所述本地微服务退出服务,通过所述本地调用代理器注销已经注册在所述共享节点上的所述本地微服务的相关信息。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述节点确定单元,包括:
解析子单元,用于通过所述本地调用代理器获得所述目标微服务的服务信息;
查找子单元,用于通过所述本地调用代理器,根据所述目标微服务的服务信息从所述共享节点查找当前提供所述目标微服务的对端服务节点;
目标节点确定子单元,用于通过所述本地调用代理器,根据预设负载均衡策略从当前提供所述目标微服务的对端服务节点中确定所述目标服务节点。
结合第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述解析子单元,具体用于:
通过所述本地调用代理器解析所述调用请求,获得对所述调用请求的解析结果;
通过所述本地调用代理器检测所述解析结果中是否存在所述目标微服务的服务信息;
如果存在,通过所述本地调用代理器直接从所述解析结果获得所述目标微服务的服务信息;
如果不存在,通过所述本地调用代理器读取针对所述目标微服务的目标接口文件,并将所述目标接口文件中定义的服务信息确定为所述目标微服务的服务信息。
结合第二方面的第五种可能的实现方式,在第二方面的第七种可能的实现方式中,所述查找子单元,具体用于:
通过所述本地调用代理器从所述共享节点获取服务访问权限白名单,所述服务访问权限白名单中记录有当前处于可访问状态的各微服务的调用路径;
通过所述本地调用代理器,在所述服务访问权限白名单中查找是否存在所述目标微服务的调用路径;
如果存在,通过所述本地调用代理器获取当前提供所述目标微服务的对端服务节点的地址集合。
结合第二方面,在第二方面的第八种可能的实现方式中,所述目标节点确定子单元,具体用于:
通过所述本地调用代理器,根据轮询调度策略从当前提供所述目标微服务的各对端服务节点中选择所述目标服务节点,或者
通过所述本地调用代理器,根据源地址哈希策略从提供所述目标微服务的多个对端服务节点中选择所述目标服务节点。
结合第二方面,在第二方面的第九种可能的实现方式中,所述装置还包括:
记录单元,用于通过所述本地调用代理器对所述本地调用代理器的请求处理吞吐量和/或所述本地调用代理器发送所述调用请求时的延迟进行记录。
第三方面,本发明实施例提供一种微服务系统,包括多个服务节点,各服务节点上分别部署有各自的本地调用代理器,所述多个服务节点包括本端服务节点和目标服务节点,其中:
所述本端服务节点,用于启动在所述本端服务节点上部署的本端微服务,还用于通过所述本端服务节点上部署的本地调用代理器进行如下处理:
获取所述本端微服务所发起的用于请求调用目标微服务的调用请求,从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点,以及向所述目标服务节点发送所述调用请求,使得所述本端微服务从所述目标服务节点上调用所述目标微服务;
所述目标服务节点,用于启动在所述对端服务节点上部署的目标微服务,还用于通过所述目标服务节点上部署的本地调用代理器接收所述调用请求,使得所述目标微服务被所述本端微服务调用。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现第一方面至第一方面的第九种可能的实现方式中任一项所述的步骤。
第四方面,本发明实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面至第一方面的第九种可能的实现方式中任一项所述的步骤。
本发明实施例提供的一种或者多种技术方案,至少实现了如下技术效果或者优点:
由于在提供本端微服务的服务节点上部署本地调用代理器,因此,通过本地调用代理器获取本端微服务所发起用于请求调用目标微服务的调用请求;通过本地调用代理器从当前正在提供目标微服务的对端服务节点中确定目标服务节点;通过本地调用代理器向目标服务节点发送调用请求,使得本端微服务从目标服务节点上调用目标微服务,能够将微服务的网络拓扑,负载均衡和服务部署的复杂逻辑转移至本地调用代理器,因此,微服务基础架构的复杂度转移到了本地调用代理器,降低了微服务程序的复杂度,不需要微服务程序本身涉及网络拓扑,负载均衡和服务部署的复杂逻辑,进而,使得普通服务程序通过本地调用代理器就能够接入到微服务体系中,提高了微服务体系扩展的灵活性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的微服务系统的结构示意图;
图2为本发明实施例提供的微服务调用方法的流程图;
图3为本发明实施例提供的微服务调用系统的程序模块图;
图4为本发明实施例提供的计算机可读存储介质的结构示意图;
图5为本发明实施例提供的计算机设备的结构示意图。
具体实施方式
鉴于现有技术存在微服务的复杂度较大的技术问题,本发明实施例提供了一种微服务调用方法及装置,总体思路如下:
通过本地调用代理器获取本端微服务所发起用于请求调用目标微服务的调用请求;通过本地调用代理器从当前正在提供目标微服务的对端服务节点中确定目标服务节点;通过本地调用代理器向目标服务节点发送调用请求,使得本端微服务从目标服务节点上调用目标微服务,能够将微服务的网络拓扑,负载均衡和服务部署的复杂逻辑转移至本地调用代理器,因此,微服务基础架构的复杂度转移到了本地调用代理器,降低了微服务程序的复杂度。
通过上述技术方案,不需要微服务程序本身涉及网络拓扑,负载均衡和服务部署的复杂逻辑,进而,使得普通服务程序通过本地调用代理器就能够接入到微服务体系中,提高了微服务体系扩展的灵活性。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例应用于微服务系统,包括多个服务节点:S1、S2、S3、S4、S5等等,各服务节点上分别部署有各自的本地调用代理器:1、2、3、4、5等等。参考图1所示,微服务系统10应用于将一个大型的应用服务程序分解成多个小型的微服务的场景,一个大型的应用服务程序完成一项完整的业务功能,各个微服务S1、S2、S3、S4、S5分布式部署在多个服务节点N1、N2、N3、N4、N5上,从而在每个服务节点N1、N2、N3、N4、N5上部署有各自的微服务S1、S2、S3、S4、S5,其中的每个微服务完成这项业务功能中一个特定的子业务功能。在需要增加业务功能时,在特定的某个微服务中增加对应业务代码,而不影响应用服务程序的整体进程。
具体的,每一个微服务S1、S2、S3、S4、S5都是微型六角形应用,都有自己的业务逻辑和适配器。具体的,大型的应用服务程序中的每一个微服务或者部分微服务还会发布API(Application Programming Interface,应用程序编程接口)给其他服务节点上的微服务和客户端调用。在本发明实施例中,每个服务节点N1、N2、N3、N4、N5上各自部署有本地调用代理器(LTP)1、2、3、4、5。
多个服务节点N1、N2、N3、N4、N5中包括本端服务节点和目标服务节点,其中:所述本端服务节点,用于启动在所述本端服务节点上部署的本端微服务,还用于通过所述本端服务节点上部署的本地调用代理器进行如下处理:获取所述本端微服务所发起的用于请求调用目标微服务的调用请求,从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点,以及向所述目标服务节点发送所述调用请求,使得所述本端微服务从所述目标服务节点上调用所述目标微服务;所述目标服务节点,用于启动在所述对端服务节点上部署的目标微服务,还用于通过所述目标服务节点上部署的本地调用代理器接收所述调用请求,使得所述目标微服务被所述本端微服务调用。
基于同一发明构思,本发明实施例提供一种微服务调用方法,应用于本端服务节点,在本端服务节点上部署有本地调用代理器,在相对于本端服务节点的各个对端服务节点上各自部署有本地调用代理器,参考图2所示,本发明实施例提供的一种微服务调用方法,包括如下步骤:
首先,执行步骤S101:启动在本端服务节点上部署的本端微服务。
具体的,为了实现本地调用代理器能够识别在本端服务节点上启动的微服务对应的进程,还是普通应用程序的进程,以预设进程命名规则启动在本端服务节点上部署的本端微服务。
具体来讲,在步骤S101具体包括如下步骤S1011~S1012:
执行步骤S1011:以预设进程命名规则启动在本端服务节点上部署的本端微服务。
预设进程命名规则可以设置为service_xxx_node.bin,比如,在本端服务节点上部署的微服务A,以service_A_node.bin的进程命名启动,又比如,在本端服务节点上部署的微服务B,以service_B_node.bin的进程命名启动,而其他的普通应用程序对应的进程不会以为service_xxx_node.bin这样的进程命名启动,因此,能够识别所启动进程是不是本端微服务对应的进程。
在实施例中,在步骤S1011之后,通过本地调用代理器完成对本端服务节点上部署的本端微服务的注册,具体实现过程为步骤S1012:通过本地调用代理器,将本端微服务的相关信息注册至共享节点,使得对端服务节点从共享节点获取所述本端微服务的相关信息。
需要说明的是,共享节点上为各个服务节点(包括本端服务节点和相对于本端服务节点的各对端服务节点)的信息注册中心,各个服务节点上的微服务,包括本端微服务,在启动时向共享节点注册微服务的相关信息。因此,在共享节点上注册有当前处于提供服务状态的各微服务的相关信息。
本端服务节点上部署的本地调用代理器与共享节点直接使用一定机制,比如心跳包进行通信。具体来讲,在本端微服务启动后,本端服务节点上部署的本地调用代理器按照第一预设周期向共享节点发送心跳以续约本端微服务在共享节点上的注册,如果共享节点在一定时间内(比如90秒)没有接收到本端服务节点上部署的本地调用代理器发送的心跳包,则共享节点注销本端微服务的实例。
本端微服务的地址信息变更时,本端服务节点上部署的本地调用代理器向共享节点发送新的地址信息,重新注册本端微服务。使用这种方式,调用本端微服务的其他微服务就无需人工修改本端微服务的网络地址了。
需要说明的是,在本实施例中,共享节点是各个本地代理器均能访问的一个远程的信息注册中心,将本端微服务的相关信息通过网络传递的方式注册到共享节点。
在共享节点上注册的本端微服务的相关信息包括:本端微服务的服务信息和本端微服务的地址信息。
具体的,本端微服务的服务信息体现本端微服务的服务功能。在具体实施过程中,本端微服务的服务信息可以包括:本端微服务的服务名称、本端微服务所提供的方法集合中的一种以上信息。从本端微服务的服务名称、所提供的方法集合可以确定本端微服务所提供的服务功能。本端微服务的地址信息包括本端微服务所在的本端服务节点的网络地址和本端微服务所监听端口的端口信息。
本端服务节点上部署的本端微服务启动时,通过本端服务节点上部署的本地调用代理器将本端微服务的服务信息和地址信息均注册至共享节点,对端服务节点通过对端服务节点上部署的另一本地调用代理器从共享节点发现本端微服务,基于本端微服务的地址信息从本端服务节点上调用本端微服务的接口,从而调用本端微服务。
在具体实施过程中,共享节点具体可以为用于配置共享和服务发现的etcd
节点。使用上报方式(post)在etcd节点下注册本端微服务的相关信息:
/LTP/services/{SERVICE_A}
具体的,在本端微服务启动时,并不是知道就是微服务,通过本地调用代理器检测本端服务节点上当前所启动进程是否符合预设进程命名规则,如果符合预设进程命名规则,表明当前所启动进程为对应所述本地微服务的进程,则通过所述本地调用代理器将所述本地微服务的相关信息注册至所述共享节点,如果不符合预设进程命名规则,则表明当前所启动进程为本端服务节点上的普通应用程序的进程,则不在共享节点上进行注册。
在任意一个或者多个进程启动,本地调用代理器是不知道是否是为本端微服务,也不知道在本端服务节点上的本端微服务何时启动,因此,通过本地调用代理器实时或者按照第二预设周期进行监测本端服务节点上是否有进程启动,如果检测到有进程启动,通过本地调用代理器检测当前所启动进程的进程名称是否符合预设进程命名规则,如果通过本地调用代理器检测到当前所启动进程的进程名称符合预设进程命名规则,则表明当前所启动进程是本端服务节点上部署的本端微服务的进程。具体来讲,可以检测当前所启动进程的进程名称是否包含特定关键字,比如,检测是否包含关键字“service”、“node”和“bin”。
在将所述本端微服务的相关信息注册至共享节点之后,为了在共享节点上注销在退出服务的微服务,还包括如下步骤:通过所述本地调用代理器监测所述本地微服务是否退出服务;如果所述本地调用代理器监测到所述本地微服务退出服务,通过所述本地调用代理器注销已经注册在所述共享节点上的本地微服务的相关信息。
同时,通过本地调用代理器检测共享节点中的信息变化,如果监测到共享节点上发生了信息编号,比如,某个对端服务节点上,实时将更新落地的进程内存。
具体的,也可以由共享节点使用一定机制定时检测已注册在共享节点中的各微服务是否处于可访问状态,如果,共享节点检测到本端微服务节点在预设时间段内无法访问,共享节点从服务注册表中注销本端微服务。
在步骤S101之后,接着执行步骤S102:通过所述本地调用代理器获取所述本端微服务所发起的用于请求调用目标微服务的调用请求。
在具体实施过程,本端服务节点上部署的本端微服务在提供服务的过程中,如果需要远程调用运行在对端服务节点上的其他微服务,通过本端服务节点上部署的本地调用代理器向本端服务节点上部署的本地调用代理器发起调用请求。
举例来讲,本端服务节点上部署的本端微服务发起本机请求run/ltp.sock,从而向本端服务节点上部署的本地调用代理器发起调用请求,由本地调用代理器接到来自本端微服务的调用请求。
在步骤S102之后,接着执行步骤S103:通过所述本地调用代理器从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点。
需要说明的是,在服务访问权限白名单中包括目标微服务在内的当前处于可访问(或者说可用)各对端的微服务,在各对端服务节点中提供的对端微服务中,包括一个以上本端微服务可调用的目标微服务,还可以包括不是本端微服务可调用的其他微服务,因此,为了确定当前正在提供目标微服务的目标服务节点,步骤S103具体包括如下步骤S1031~S1033:
首先,执行步骤S1031、通过所述本地调用代理器获得目标微服务的服务信息。
具体的,可以直接从调用请求中解析出目标微服务的服务信息,具体解析出目标微服务的服务信息,如果解析不到服务信息,则结束。或者直接在本地调用代理器启动后读取thrift接口文件,并从thrift接口文件中读取服务名称,确定目标微服务的服务信息。
为了确保能准确的获得目标微服务的服务信息,具体可以采用如下步骤A1~A3所述的实施方式:
执行步骤A1:通过本端服务节点上部署的本地调用代理器解析来自本端微服务的调用请求,获得对调用请求的解析结果。
具体的,本端服务节点上部署的本地调用代理器解析调用请求的协议头部,得到对调用请求的协议头部的解析结果。
在步骤A1之后,接着执行步骤A2:通过所述本地调用代理器检测所述解析结果中是否存在所述目标微服务的服务信息。
具体的,检测解析结果中是否存在本端服务节点所要调用的目标微服务的服务信息,在具体实施过程中,可以是检测解析结果中是否存在本端微服务的服务名称、本端微服务所提供的方法集合中的一种以上。举例来讲,通过本地调用代理器检测解析结果中是否包含有服务名称将解析出的服务名称为所要调用的目标微服务的服务名称,比如,包含服务名称service C,则所要调用的目标微服务为service C。
在步骤A2之后,接着执行步骤A3:如果所述解析结果中存在目标微服务的服务信息,通过所述本地调用代理器直接从所述解析结果获得所述目标微服务的服务信息,如果不存在,通过所述本地调用代理器读取针对所述目标微服务的目标接口文件,并将所述目标接口文件中定义的服务信息确定为所述目标微服务的服务信息。
具体的,如果步骤A2的解析结果中存在本端微服务的服务名称、本端微服务所提供的方法集合中的一种以上,根据从解析结果中得到的服务名称、本端微服务所提供的方法集合确定所要调用的目标微服务。如果步骤A2的解析结果中不存在本端微服务的服务名称、本端微服务所提供的方法集合中的一种以上,通过所述本地调用代理器读取针对目标微服务的目标接口文件。
需要说明的是,目标接口文件具体为本端服务节点上的Thrift接口文件,本端服务节点上的Thrift接口文件是由Thrift编译器生成thrift目标语言的代码,并由生成的代码负责RPC协议层和传输层实现,通过thrift编译器将Thrift接口文件生成本端服务节点上的代码和对端服务节点上的代码,从而实现本端服务节点和各对端服务节点之间的跨语言支持。
具体的,取出本端服务节点上的thrift接口文件中定义的服务名称作为方法的前缀,从而根据thrift接口文件确定所要调用的目标微服务的服务信息。
步骤S1032、通过所述本地调用代理器,根据所述目标微服务的服务信息从所述共享节点查找当前提供所述目标微服务的对端服务节点。
在一实施方式中,通过所述本地调用代理器根据所述目标微服务的服务信息从所述共享节点查找当前提供所述目标微服务的对端服务节点,完成发现服务的功能,包括如下步骤B1~B3:
步骤B1、通过所述本地调用代理器从所述共享节点获取服务访问权限白名单,所述服务访问权限白名单中记录有当前处于可访问状态的各对端微服务的调用路径。
需要说明的是,可以是在本地调用代理器接收到目标微服务的调用请求时,才通过服务发现机制从共享节点上接收服务访问权限白名单。
也可以是在本端服务节点上缓存服务访问权限白名单中的信息,在本地调用代理器接收到目标微服务的调用请求时,从缓存的服务访问权限白名单中的信息读取当前处于可访问状态的各微服务的调用路径,这种方式有一定的优势,本地调用代理器无须每次请求都查询共享节点,从而降低了共享节点的压力;其次,即使共享节点宕掉,本端服务节点上的本地调用代理器依然可以使用缓存中的信息找到目标微服务并完成对目标微服务的调用。
执行步骤B2、通过所述本地调用代理器,在所述服务访问权限白名单中查找是否存在所述目标微服务的调用路径。
具体的,在服务访问权限白名单中记录有当前处于可访问状态的各微服务的调用路径。
将目标微服务的服务名称与服务访问权限白名单中的服务名称进行对比,如果存在相同的服务名称,则当前存在处于可访问状态的目标微服务的调用路径,否则,当前不存在处于可访问状态的目标微服务的调用路径。
执行步骤B3、如果服务访问权限白名单中存在目标微服务的调用路径,通过所述本地调用代理器获取当前提供所述目标微服务的对端服务节点的地址集合。
具体的,通过本地调用代理器,根据目标微服务的调用路径,从内存中查找共享节点数据中查找到目标微服务的地址集合,如果存在目标微服务的地址几个,根据目标微服务的地址集合检查是否存在目标微服务的方法,如果存在目标微服务所提供的方法集合,则表明查找到目标微服务,也可以说明查找到当前提供目标微服务的对端服务节点。
步骤S1033、通过所述本地调用代理器,根据预设负载均衡策略从当前提供所述目标微服务的对端服务节点中确定所述目标服务节点。
在具体实施过程中,预设负载均衡策略具体可以使用轮询调度策略或者源地址哈希策略、目的地址哈希策略、最小连接数策略、响应速度策略中的一种。
具体的,基于轮询调度策略的实现方式为:通过所述本地调用代理器,根据轮询调度策略(round robin)从当前提供所述目标微服务的各对端服务节点中选择所述目标服务节点。
具体来讲,本地调用代理器将本端微服务对目标微服务的调用请求,轮流分配提供目标微服务的各对端服务节点,即:从提供目标微服务的第1个服务节点开始,直到提供目标微服务的第N个服务节点,每次调用一个服务节点上的目标微服务,然后,重新开始循环。
基于源地址哈希策略的实现方式为:通过所述本地调用代理器,根据源地址哈希策略从提供所述目标微服务的多个对端服务节点中选择所述目标服务节点。具体来讲,以源地址为关键字在一个静态哈希(hash)表查找,从而,从提供所述目标微服务的多个对端服务节点中查找到一个服务节点作为目标服务节点。
基于目的地址哈希策略的实现方式为:通过本地调用代理器以目标地址为关键字在一个静态哈希表中查找,从而,从提供所述目标微服务的多个对端服务节点中查找到一个服务节点作为目标服务节点。
具体的,基于响应速度策略的实现方式为:通过本地调用代理器,从当前提供所述目标微服务的各对端服务节点中,选择响应速度最快的一个服务节点作为目标服务节点。
具体的,基于最小连接数策略的实现方式为:通过本地调用代理器,从当前提供目标服务节点的各对端服务节点中,选择具有最少连接数的一个服务节点确定为目标服务节点。
在具体实施过程中,还可以通过本地调用代理器,基于相同的源地址给到相同的目的地址的策略,从当前提供目标服务节点的各对端服务节点中选择满足源地址与目的地址相同的服务节点作为目标服务节点。在具体实施过程中,本地调用代理器根据各个对端服务节点的响应速度调节各个服务节点的权重,将更多对目标微服务的调用分配至响应速度更快的对端服务节点上。
在步骤S103之后,接着执行步骤S104:通过所述本地调用代理器向所述目标服务节点发送所述调用请求,使得所述本端微服务从所述目标服务节点上调用所述目标微服务。
具体的,异步处理调用请求。在一优选的技术方案中,通过所述本地调用代理器对所述本地调用代理器的请求处理吞吐量(tps)和/或所述本地调用代理器发送所述调用请求时的延迟(latency)进行记录,供开发运维使用。
在具体实施过程中,本发明实施例提供的微服务调用方法可以应用于广告位的推送,下面,应用本发明实施例提供微服务调用方法进行广告位的推送进行举例说明:
本端服务节点需要对端服务节点上的广告位数据的推送,本端服务节点上的微服务A启动,通过本端服务节点上的本地调用代理器向共享节点注册本端微服务的相关信息,则在共享节点的注册列表中会存在微服务B的相关信息,从而需要推送广告位对端服务节点通过监测共享节点的变化,监测到注册列表中存在微服务A的相关信息,则本端服务节点上的微服务A通过其本地调用代理器向对端服务节点上的本地调用代理器发起调用请求,调用对端服务节点上的微服务B,使得本端服务节点从对端服务节点得到广告位数据的推送,实现了对端服务节点向本端服务节点推送广告位数据。
基于同一发明构思,本发明实施例提供一种微服务调用系统,参考图3所示,应用于本端服务节点,所述系统部署在本端服务节点上,包括启动单元201和本地调用代理器202,其中:
所述启动单元201,用于启动在所述本端服务节点上部署的本端微服务;
所述本地调用代理器202,具体包括:
请求获取单元2021,用于获取所述本端微服务所发起的用于请求调用目标微服务的调用请求,
节点确定单元2022,用于通过从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点;
请求发送单元2023,用于通过所述本地调用代理器向所述目标服务节点发送所述调用请求,使得所述本端微服务从所述目标服务节点上调用所述目标微服务。
在一实施方式中,所述启动单元201,包括:
启动子单元,用于以预设进程命名规则启动在所述本端服务节点上部署的本端微服务;
注册子单元,用于通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点,使得所述对端服务节点从所述共享节点获取所述本端微服务的相关信息,所述共享节点上注册有当前提供的所有微服务的相关信息。
在一实施方式中,所述注册子单元,具体用于:
通过所述本地调用代理器检测所述本端服务节点上当前所启动进程是否符合所述预设进程命名规则;
如果符合,表明所述当前所启动进程为对应所述本地微服务的进程,则通过所述本地调用代理器将所述本地微服务的相关信息注册至所述共享节点。
在一实施方式中,所述注册子单元,具体用于:
通过所述本地调用代理器,将所述本端微服务的服务信息和所述本端微服务的地址信息均注册至所述共享节点。
结合前述任一实施方式,在一实施方式中还包括:
监测单元,用于在所述本端微服务的相关信息注册至共享节点之后,通过所述本地调用代理器监测所述本地微服务是否退出服务;
注销单元,用于如果所述本地调用代理器监测到所述本地微服务退出服务,通过所述本地调用代理器注销已经注册在所述共享节点上的所述本地微服务的相关信息。
在一实施方式中,所述节点确定单元,包括:
解析子单元,用于通过所述本地调用代理器获得所述目标微服务的服务信息;
查找子单元,用于通过所述本地调用代理器,根据所述目标微服务的服务信息从所述共享节点查找当前提供所述目标微服务的对端服务节点;
目标节点确定子单元,用于通过所述本地调用代理器,根据预设负载均衡策略从当前提供所述目标微服务的对端服务节点中确定所述目标服务节点。
在一实施方式中,所述解析子单元,具体用于:
通过所述本地调用代理器解析所述调用请求,获得对所述调用请求的解析结果;
通过所述本地调用代理器检测所述解析结果中是否存在所述目标微服务的服务信息;
如果存在,通过所述本地调用代理器直接从所述解析结果获得所述目标微服务的服务信息;
如果不存在,通过所述本地调用代理器读取针对所述目标微服务的目标接口文件,并将所述目标接口文件中定义的服务信息确定为所述目标微服务的服务信息。
在一实施方式中,所述查找子单元,具体用于:
通过所述本地调用代理器从所述共享节点获取服务访问权限白名单,所述服务访问权限白名单中记录有当前处于可访问状态的各微服务的调用路径;
通过所述本地调用代理器,在所述服务访问权限白名单中查找是否存在所述目标微服务的调用路径;
如果存在,通过所述本地调用代理器获取当前提供所述目标微服务的对端服务节点的地址集合。
在一实施方式中,所述目标节点确定子单元,具体用于:
通过所述本地调用代理器,根据轮询调度策略从当前提供所述目标微服务的各对端服务节点中选择所述目标服务节点,或者
通过所述本地调用代理器,根据源地址哈希策略从提供所述目标微服务的多个对端服务节点中选择所述目标服务节点。
在一实施方式中,还包括:
记录单元,用于通过所述本地调用代理器对所述本地调用代理器的请求处理吞吐量和/或所述本地调用代理器发送所述调用请求时的延迟进行记录。
基于同一发明构思,本发明实施例提供一种计算机可读存储介质301,参考图4所示,其上存储有计算机程序302,该程序302被处理器执行时实现前述微服务调用方法实施例中所述的步骤。
基于同一发明构思,本发明实施例提供一种计算机设备1900,参考图5所示,该计算机设备1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对计算机设备中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在计算机设备1900上执行存储介质1930中的一系列指令操作。所述处理器执行所述程序时实现前述微服务调用实施例中任一种实施方式所述的步骤。
计算机设备1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,一个或一个以上键盘1956,和/或,一个或一个以上操作系统1941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
由于本实施例所介绍的电子设备为实施本申请实施例中微服务调用方法所采用的电子设备,故而基于本申请实施例中所介绍的微服务调用方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中微服务调用方法所采用的电子设备,都属于本申请所欲保护的范围。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
由于在提供本端微服务的服务节点上部署本地调用代理器,因此,通过本地调用代理器获取本端微服务所发起用于请求调用目标微服务的调用请求;通过本地调用代理器从当前正在提供目标微服务的对端服务节点中确定目标服务节点;通过本地调用代理器向目标服务节点发送调用请求,使得本端微服务从目标服务节点上调用目标微服务,能够将微服务的网络拓扑,负载均衡和服务部署的复杂逻辑转移至本地调用代理器,因此,微服务基础架构的复杂度转移到了本地调用代理器,降低了微服务程序的复杂度,不需要微服务程序本身涉及网络拓扑,负载均衡和服务部署的复杂逻辑,进而,使得普通服务程序通过本地调用代理器就能够接入到微服务体系中,提高了微服务体系扩展的灵活性。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的实现扩展应用程序的推送通知的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
本发明公开了A1、一种微服务调用方法,应用于本端服务节点,在所述本端服务节点上部署有本地调用代理器,所述方法包括:
启动在所述本端服务节点上部署的本端微服务;
通过所述本地调用代理器获取所述本端微服务所发起的用于请求调用目标微服务的调用请求;
通过所述本地调用代理器从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点;
通过所述本地调用代理器向所述目标服务节点发送所述调用请求,使得所述本端微服务从所述目标服务节点上调用所述目标微服务。
A2、根据A1所述的微服务调用方法,所述启动在所述本端服务节点上部署的本端微服务,包括:
以预设进程命名规则启动在所述本端服务节点上部署的本端微服务;
通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点,使得所述对端服务节点从所述共享节点获取所述本端微服务的相关信息,所述共享节点上注册有当前提供的所有微服务的相关信息。
A3、根据A2所述的微服务调用方法,所述通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点,包括:
通过所述本地调用代理器检测所述本端服务节点上当前所启动进程是否符合所述预设进程命名规则;
如果符合,表明所述当前所启动进程为对应所述本地微服务的进程,则通过所述本地调用代理器将所述本地微服务的相关信息注册至所述共享节点。
A4、根据A2所述的微服务调用方法,所述通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点,包括:
通过所述本地调用代理器,将所述本端微服务的服务信息和所述本端微服务的地址信息均注册至所述共享节点。
A5、根据A2-A4中任一项所述的微服务调用方法,在所述通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点之后,还包括:
通过所述本地调用代理器监测所述本地微服务是否退出服务;
如果所述本地调用代理器监测到所述本地微服务退出服务,通过所述本地调用代理器注销已经注册在所述共享节点上的所述本地微服务的相关信息。
A6、根据A5所述的微服务调用方法,所述通过所述本地调用代理器从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点,包括:
通过所述本地调用代理器获得所述目标微服务的服务信息;
通过所述本地调用代理器,根据所述目标微服务的服务信息从所述共享节点查找当前提供所述目标微服务的对端服务节点;
通过所述本地调用代理器,根据预设负载均衡策略从当前提供所述目标微服务的对端服务节点中确定所述目标服务节点。
A7、根据A6所述的微服务调用方法,所述通过所述本地调用代理器获得所述目标微服务的服务信息,包括:
通过所述本地调用代理器解析所述调用请求,获得对所述调用请求的解析结果;
通过所述本地调用代理器检测所述解析结果中是否存在所述目标微服务的服务信息;
如果存在,通过所述本地调用代理器直接从所述解析结果获得所述目标微服务的服务信息;
如果不存在,通过所述本地调用代理器读取针对所述目标微服务的目标接口文件,并将所述目标接口文件中定义的服务信息确定为所述目标微服务的服务信息。
A8、根据A6所述的微服务调用方法,所述通过所述本地调用代理器,根据所述目标微服务的服务信息从所述共享节点查找当前提供所述目标微服务的对端服务节点,包括:
通过所述本地调用代理器从所述共享节点获取服务访问权限白名单,所述服务访问权限白名单中记录有当前处于可访问状态的各微服务的调用路径;
通过所述本地调用代理器,在所述服务访问权限白名单中查找是否存在所述目标微服务的调用路径;
如果存在,通过所述本地调用代理器获取当前提供所述目标微服务的对端服务节点的地址集合。
A9、根据A6所述的微服务调用方法,所述通过所述本地调用代理器,根据预设负载均衡策略从当前提供所述目标微服务的对端服务节点中确定所述目标服务节点,包括:
通过所述本地调用代理器,根据轮询调度策略从当前提供所述目标微服务的各对端服务节点中选择所述目标服务节点,或者
通过所述本地调用代理器,根据源地址哈希策略从提供所述目标微服务的多个对端服务节点中选择所述目标服务节点。
A10、根据A1所述的微服务调用方法,所述方法还包括:
通过所述本地调用代理器对所述本地调用代理器的请求处理吞吐量和/或所述本地调用代理器发送所述调用请求时的延迟进行记录。
本发明公开了B11、一种微服务调用系统,应用于本端服务节点,所述系统部署在本端服务节点上,包括启动单元和本地调用代理器,其中:
所述启动单元,用于启动在所述本端服务节点上部署的本端微服务;
所述本地调用代理器,具体包括:
请求获取单元,用于获取所述本端微服务所发起的用于请求调用目标微服务的调用请求,
节点确定单元,用于通过从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点;
请求发送单元,用于通过所述本地调用代理器向所述目标服务节点发送所述调用请求,使得所述本端微服务从所述目标服务节点上调用所述目标微服务。
B12、根据B11所述的微服务调用装置,所述启动单元,包括:
启动子单元,用于以预设进程命名规则启动在所述本端服务节点上部署的本端微服务;
注册子单元,用于通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点,使得所述对端服务节点从所述共享节点获取所述本端微服务的相关信息,所述共享节点上注册有当前提供的所有微服务的相关信息。
B13、根据B12所述的微服务调用装置,所述注册子单元,具体用于:
通过所述本地调用代理器检测所述本端服务节点上当前所启动进程是否符合所述预设进程命名规则;
如果符合,表明所述当前所启动进程为对应所述本地微服务的进程,则通过所述本地调用代理器将所述本地微服务的相关信息注册至所述共享节点。
B14、根据B12所述的微服务调用装置,所述注册子单元,具体用于:
通过所述本地调用代理器,将所述本端微服务的服务信息和所述本端微服务的地址信息均注册至所述共享节点。
B15、根据B12-B14中任一项所述的微服务调用装置,还包括:
监测单元,用于在所述本端微服务的相关信息注册至共享节点之后,通过所述本地调用代理器监测所述本地微服务是否退出服务;
注销单元,用于如果所述本地调用代理器监测到所述本地微服务退出服务,通过所述本地调用代理器注销已经注册在所述共享节点上的所述本地微服务的相关信息。
B16、根据B15所述的微服务调用装置,所述节点确定单元,包括:
解析子单元,用于通过所述本地调用代理器获得所述目标微服务的服务信息;
查找子单元,用于通过所述本地调用代理器,根据所述目标微服务的服务信息从所述共享节点查找当前提供所述目标微服务的对端服务节点;
目标节点确定子单元,用于通过所述本地调用代理器,根据预设负载均衡策略从当前提供所述目标微服务的对端服务节点中确定所述目标服务节点。
B17、根据B16所述的微服务调用装置,所述解析子单元,具体用于:
通过所述本地调用代理器解析所述调用请求,获得对所述调用请求的解析结果;
通过所述本地调用代理器检测所述解析结果中是否存在所述目标微服务的服务信息;
如果存在,通过所述本地调用代理器直接从所述解析结果获得所述目标微服务的服务信息;
如果不存在,通过所述本地调用代理器读取针对所述目标微服务的目标接口文件,并将所述目标接口文件中定义的服务信息确定为所述目标微服务的服务信息。
B18、根据B16所述的微服务调用装置,所述查找子单元,具体用于:
通过所述本地调用代理器从所述共享节点获取服务访问权限白名单,所述服务访问权限白名单中记录有当前处于可访问状态的各微服务的调用路径;
通过所述本地调用代理器,在所述服务访问权限白名单中查找是否存在所述目标微服务的调用路径;
如果存在,通过所述本地调用代理器获取当前提供所述目标微服务的对端服务节点的地址集合。
B19、根据B16所述的微服务调用装置,所述目标节点确定子单元,具体用于:
通过所述本地调用代理器,根据轮询调度策略从当前提供所述目标微服务的各对端服务节点中选择所述目标服务节点,或者
通过所述本地调用代理器,根据源地址哈希策略从提供所述目标微服务的多个对端服务节点中选择所述目标服务节点。
B20、根据B11所述的微服务调用装置,还包括:
记录单元,用于通过所述本地调用代理器对所述本地调用代理器的请求处理吞吐量和/或所述本地调用代理器发送所述调用请求时的延迟进行记录。
本发明公开了C21、一种微服务系统,包括多个服务节点,各服务节点上分别部署有各自的本地调用代理器,所述多个服务节点包括本端服务节点和目标服务节点,其中:
所述本端服务节点,用于启动在所述本端服务节点上部署的本端微服务,还用于通过所述本端服务节点上部署的本地调用代理器进行如下处理:
获取所述本端微服务所发起的用于请求调用目标微服务的调用请求,从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点,以及向所述目标服务节点发送所述调用请求,使得所述本端微服务从所述目标服务节点上调用所述目标微服务;
所述目标服务节点,用于启动在所述对端服务节点上部署的目标微服务,还用于通过所述目标服务节点上部署的本地调用代理器接收所述调用请求,使得所述目标微服务被所述本端微服务调用。
本发明公开了D22、一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如A1-A10中任一项所述的步骤。
本发明公开了E23、一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现A1-A10中任一项所述的步骤。
Claims (21)
1.一种微服务调用方法,应用于本端服务节点,其特征在于,在所述本端服务节点上部署有本地调用代理器,所述方法包括:
启动在所述本端服务节点上部署的本端微服务;
通过所述本地调用代理器获取所述本端微服务所发起的用于请求调用目标微服务的调用请求;
通过所述本地调用代理器从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点;
通过所述本地调用代理器向所述目标服务节点发送所述调用请求,使得所述本端微服务从所述目标服务节点上调用所述目标微服务;
所述启动在所述本端服务节点上部署的本端微服务,包括:
以预设进程命名规则启动在所述本端服务节点上部署的本端微服务;
通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点,使得所述对端服务节点从所述共享节点获取所述本端微服务的相关信息,所述共享节点上注册有当前提供的所有微服务的相关信息。
2.如权利要求1所述的微服务调用方法,其特征在于,所述通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点,包括:
通过所述本地调用代理器检测所述本端服务节点上当前所启动进程是否符合所述预设进程命名规则;
如果符合,表明所述当前所启动进程为对应所述本端微服务的进程,则通过所述本地调用代理器将所述本端微服务的相关信息注册至所述共享节点。
3.如权利要求1所述的微服务调用方法,其特征在于,所述通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点,包括:
通过所述本地调用代理器,将所述本端微服务的服务信息和所述本端微服务的地址信息均注册至所述共享节点。
4.如权利要求1-3中任一项所述的微服务调用方法,其特征在于,在所述通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点之后,还包括:
通过所述本地调用代理器监测所述本端微服务是否退出服务;
如果所述本地调用代理器监测到所述本端微服务退出服务,通过所述本地调用代理器注销已经注册在所述共享节点上的所述本端微服务的相关信息。
5.如权利要求4所述的微服务调用方法,其特征在于,所述通过所述本地调用代理器从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点,包括:
通过所述本地调用代理器获得所述目标微服务的服务信息;
通过所述本地调用代理器,根据所述目标微服务的服务信息从所述共享节点查找当前提供所述目标微服务的对端服务节点;
通过所述本地调用代理器,根据预设负载均衡策略从当前提供所述目标微服务的对端服务节点中确定所述目标服务节点。
6.如权利要求5所述的微服务调用方法,其特征在于,所述通过所述本地调用代理器获得所述目标微服务的服务信息,包括:
通过所述本地调用代理器解析所述调用请求,获得对所述调用请求的解析结果;
通过所述本地调用代理器检测所述解析结果中是否存在所述目标微服务的服务信息;
如果存在,通过所述本地调用代理器直接从所述解析结果获得所述目标微服务的服务信息;
如果不存在,通过所述本地调用代理器读取针对所述目标微服务的目标接口文件,并将所述目标接口文件中定义的服务信息确定为所述目标微服务的服务信息。
7.如权利要求5所述的微服务调用方法,其特征在于,所述通过所述本地调用代理器,根据所述目标微服务的服务信息从所述共享节点查找当前提供所述目标微服务的对端服务节点,包括:
通过所述本地调用代理器从所述共享节点获取服务访问权限白名单,所述服务访问权限白名单中记录有当前处于可访问状态的各微服务的调用路径;
通过所述本地调用代理器,在所述服务访问权限白名单中查找是否存在所述目标微服务的调用路径;
如果存在,通过所述本地调用代理器获取当前提供所述目标微服务的对端服务节点的地址集合。
8.如权利要求5所述的微服务调用方法,其特征在于,所述通过所述本地调用代理器,根据预设负载均衡策略从当前提供所述目标微服务的对端服务节点中确定所述目标服务节点,包括:
通过所述本地调用代理器,根据轮询调度策略从当前提供所述目标微服务的各对端服务节点中选择所述目标服务节点,或者
通过所述本地调用代理器,根据源地址哈希策略从提供所述目标微服务的多个对端服务节点中选择所述目标服务节点。
9.如权利要求1所述的微服务调用方法,其特征在于,所述方法还包括:
通过所述本地调用代理器对所述本地调用代理器的请求处理吞吐量和/或所述本地调用代理器发送所述调用请求时的延迟进行记录。
10.一种微服务调用系统,应用于本端服务节点,其特征在于,所述系统部署在本端服务节点上,包括启动单元和本地调用代理器,其中:
所述启动单元,用于启动在所述本端服务节点上部署的本端微服务;
所述本地调用代理器,具体包括:
请求获取单元,用于获取所述本端微服务所发起的用于请求调用目标微服务的调用请求,
节点确定单元,用于通过从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点;
请求发送单元,用于通过所述本地调用代理器向所述目标服务节点发送所述调用请求,使得所述本端微服务从所述目标服务节点上调用所述目标微服务;
所述启动单元,包括:
启动子单元,用于以预设进程命名规则启动在所述本端服务节点上部署的本端微服务;
注册子单元,用于通过所述本地调用代理器将所述本端微服务的相关信息注册至共享节点,使得所述对端服务节点从所述共享节点获取所述本端微服务的相关信息,所述共享节点上注册有当前提供的所有微服务的相关信息。
11.如权利要求10所述的微服务调用系统,其特征在于,所述注册子单元,具体用于:
通过所述本地调用代理器检测所述本端服务节点上当前所启动进程是否符合所述预设进程命名规则;
如果符合,表明所述当前所启动进程为对应所述本端微服务的进程,则通过所述本地调用代理器将所述本端微服务的相关信息注册至所述共享节点。
12.如权利要求10所述的微服务调用系统,其特征在于,所述注册子单元,具体用于:
通过所述本地调用代理器,将所述本端微服务的服务信息和所述本端微服务的地址信息均注册至所述共享节点。
13.如权利要求10-12中任一项所述的微服务调用系统,其特征在于,还包括:
监测单元,用于在所述本端微服务的相关信息注册至共享节点之后,通过所述本地调用代理器监测所述本端微服务是否退出服务;
注销单元,用于如果所述本地调用代理器监测到所述本端微服务退出服务,通过所述本地调用代理器注销已经注册在所述共享节点上的所述本端微服务的相关信息。
14.如权利要求13所述的微服务调用系统,其特征在于,所述节点确定单元,包括:
解析子单元,用于通过所述本地调用代理器获得所述目标微服务的服务信息;
查找子单元,用于通过所述本地调用代理器,根据所述目标微服务的服务信息从所述共享节点查找当前提供所述目标微服务的对端服务节点;
目标节点确定子单元,用于通过所述本地调用代理器,根据预设负载均衡策略从当前提供所述目标微服务的对端服务节点中确定所述目标服务节点。
15.如权利要求14所述的微服务调用系统,其特征在于,所述解析子单元,具体用于:
通过所述本地调用代理器解析所述调用请求,获得对所述调用请求的解析结果;
通过所述本地调用代理器检测所述解析结果中是否存在所述目标微服务的服务信息;
如果存在,通过所述本地调用代理器直接从所述解析结果获得所述目标微服务的服务信息;
如果不存在,通过所述本地调用代理器读取针对所述目标微服务的目标接口文件,并将所述目标接口文件中定义的服务信息确定为所述目标微服务的服务信息。
16.如权利要求14所述的微服务调用系统,其特征在于,所述查找子单元,具体用于:
通过所述本地调用代理器从所述共享节点获取服务访问权限白名单,所述服务访问权限白名单中记录有当前处于可访问状态的各微服务的调用路径;
通过所述本地调用代理器,在所述服务访问权限白名单中查找是否存在所述目标微服务的调用路径;
如果存在,通过所述本地调用代理器获取当前提供所述目标微服务的对端服务节点的地址集合。
17.如权利要求14所述的微服务调用系统,其特征在于,所述目标节点确定子单元,具体用于:
通过所述本地调用代理器,根据轮询调度策略从当前提供所述目标微服务的各对端服务节点中选择所述目标服务节点,或者
通过所述本地调用代理器,根据源地址哈希策略从提供所述目标微服务的多个对端服务节点中选择所述目标服务节点。
18.如权利要求10所述的微服务调用系统,其特征在于,还包括:
记录单元,用于通过所述本地调用代理器对所述本地调用代理器的请求处理吞吐量和/或所述本地调用代理器发送所述调用请求时的延迟进行记录。
19.一种微服务系统,包括多个服务节点,其特征在于,各服务节点上分别部署有各自的本地调用代理器,所述多个服务节点包括本端服务节点和目标服务节点,其中:
所述本端服务节点,用于启动在所述本端服务节点上部署的本端微服务,还用于通过所述本端服务节点上部署的本地调用代理器进行如下处理:
获取所述本端微服务所发起的用于请求调用目标微服务的调用请求,从当前正在提供所述目标微服务的对端服务节点中确定目标服务节点,以及向所述目标服务节点发送所述调用请求,使得所述本端微服务从所述目标服务节点上调用所述目标微服务;
所述目标服务节点,用于启动在所述对端服务节点上部署的目标微服务,还用于通过所述目标服务节点上部署的本地调用代理器接收所述调用请求,使得所述目标微服务被所述本端微服务调用。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一项所述的步骤。
21.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-9中任一项所述的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711461957.6A CN109981716B (zh) | 2017-12-28 | 2017-12-28 | 一种微服务调用方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711461957.6A CN109981716B (zh) | 2017-12-28 | 2017-12-28 | 一种微服务调用方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109981716A CN109981716A (zh) | 2019-07-05 |
CN109981716B true CN109981716B (zh) | 2023-11-03 |
Family
ID=67074980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711461957.6A Active CN109981716B (zh) | 2017-12-28 | 2017-12-28 | 一种微服务调用方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109981716B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110278284B (zh) * | 2019-07-10 | 2021-09-14 | 中国民航信息网络股份有限公司 | 一种服务调用方法及装置 |
CN110753082B (zh) * | 2019-09-06 | 2022-12-16 | 深圳平安通信科技有限公司 | 服务调用方法及终端设备 |
CN110944067B (zh) * | 2019-12-27 | 2021-07-16 | 华为技术有限公司 | 一种负载均衡方法和服务器 |
CN111190736A (zh) * | 2019-12-31 | 2020-05-22 | 苏宁云计算有限公司 | 基于微服务的低入侵分布式定时任务调度系统及方法 |
CN111245925B (zh) * | 2020-01-09 | 2021-08-24 | 北京理工大学 | 一种用于现代分布式微服务架构的通信方法与系统 |
CN111240732B (zh) * | 2020-01-17 | 2021-05-14 | 腾讯科技(深圳)有限公司 | 分布式微服务的发布方法、装置、设备及存储介质 |
CN111327619A (zh) * | 2020-02-26 | 2020-06-23 | 南方电网科学研究院有限责任公司 | 一种微服务数据交换方法和装置 |
CN111698266B (zh) * | 2020-06-30 | 2023-05-02 | 深圳赛安特技术服务有限公司 | 服务节点调用方法、装置、设备及可读存储介质 |
CN113992750A (zh) * | 2020-07-10 | 2022-01-28 | 华为技术有限公司 | 一种全局事务协同方法、装置、设备及介质 |
CN111917838B (zh) * | 2020-07-14 | 2023-08-29 | 浙江大华技术股份有限公司 | 基于微服务的处理方法及装置、存储介质、电子装置 |
CN111917870A (zh) * | 2020-07-30 | 2020-11-10 | 广州津虹网络传媒有限公司 | 请求处理方法、系统、装置、电子设备及存储介质 |
CN112667204B (zh) * | 2020-12-15 | 2024-01-23 | 南方电网数字平台科技(广东)有限公司 | 微服务应用的数据处理方法、装置和计算机设备 |
CN114943511A (zh) * | 2022-05-17 | 2022-08-26 | 黑龙江省芯网科技有限公司 | 一种政务办公自动化平台及其优化实现方法 |
CN115242866B (zh) * | 2022-07-28 | 2024-06-18 | 度小满科技(北京)有限公司 | 微服务调用方法、装置、电子设备及存储介质 |
CN115208693B (zh) * | 2022-09-09 | 2022-12-20 | 中国电子科技集团公司第十五研究所 | 一种基于微服务的安全访问控制方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016192866A1 (en) * | 2015-06-03 | 2016-12-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Implanted agent within a first service container for enabling a reverse proxy on a second container |
CN106453288A (zh) * | 2016-09-29 | 2017-02-22 | 上海和付信息技术有限公司 | 一种支持异步模式的分布式微服务框架系统及其实现方法 |
WO2017067230A1 (zh) * | 2015-10-21 | 2017-04-27 | 中兴通讯股份有限公司 | 一种基于微服务架构扩展软件功能的方法及装置 |
CN106610836A (zh) * | 2016-12-23 | 2017-05-03 | 国网信息通信产业集团有限公司 | 一种微服务运行管理工具 |
CN106888129A (zh) * | 2017-04-20 | 2017-06-23 | 国家电网公司 | 一种可弹性伸缩的分布式服务管理系统及其方法 |
CN107147466A (zh) * | 2017-07-20 | 2017-09-08 | 郑州云海信息技术有限公司 | 一种系统时间一致性的控制方法及系统 |
CN107181629A (zh) * | 2017-07-20 | 2017-09-19 | 郑州云海信息技术有限公司 | 一种组件升级方法及系统 |
CN107239308A (zh) * | 2017-06-05 | 2017-10-10 | 广东西奥物联网科技股份有限公司 | 一种浏览器的调用功能实现方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070112574A1 (en) * | 2003-08-05 | 2007-05-17 | Greene William S | System and method for use of mobile policy agents and local services, within a geographically distributed service grid, to provide greater security via local intelligence and life-cycle management for RFlD tagged items |
US11323508B2 (en) * | 2009-05-22 | 2022-05-03 | Comcast Interactive Media, Llc | Web service system and method |
WO2016065080A1 (en) * | 2014-10-21 | 2016-04-28 | Twilio, Inc. | System and method for providing a miro-services communication platform |
US10452372B2 (en) * | 2014-12-15 | 2019-10-22 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and deployment module for managing a container to be deployed on a software platform |
US11297153B2 (en) * | 2016-03-22 | 2022-04-05 | At&T Mobility Ii Llc | Evolved packet core applications microservices broker |
-
2017
- 2017-12-28 CN CN201711461957.6A patent/CN109981716B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016192866A1 (en) * | 2015-06-03 | 2016-12-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Implanted agent within a first service container for enabling a reverse proxy on a second container |
WO2017067230A1 (zh) * | 2015-10-21 | 2017-04-27 | 中兴通讯股份有限公司 | 一种基于微服务架构扩展软件功能的方法及装置 |
CN106612188A (zh) * | 2015-10-21 | 2017-05-03 | 中兴通讯股份有限公司 | 一种基于微服务架构扩展软件功能的方法及装置 |
CN106453288A (zh) * | 2016-09-29 | 2017-02-22 | 上海和付信息技术有限公司 | 一种支持异步模式的分布式微服务框架系统及其实现方法 |
CN106610836A (zh) * | 2016-12-23 | 2017-05-03 | 国网信息通信产业集团有限公司 | 一种微服务运行管理工具 |
CN106888129A (zh) * | 2017-04-20 | 2017-06-23 | 国家电网公司 | 一种可弹性伸缩的分布式服务管理系统及其方法 |
CN107239308A (zh) * | 2017-06-05 | 2017-10-10 | 广东西奥物联网科技股份有限公司 | 一种浏览器的调用功能实现方法及系统 |
CN107147466A (zh) * | 2017-07-20 | 2017-09-08 | 郑州云海信息技术有限公司 | 一种系统时间一致性的控制方法及系统 |
CN107181629A (zh) * | 2017-07-20 | 2017-09-19 | 郑州云海信息技术有限公司 | 一种组件升级方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109981716A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109981716B (zh) | 一种微服务调用方法及装置 | |
US11159411B2 (en) | Distributed testing service | |
US20190377604A1 (en) | Scalable function as a service platform | |
US10838769B2 (en) | Application program interface based service lookup in a service architecture | |
CN110636093B (zh) | 微服务注册和发现方法、设备、存储介质以及微服务系统 | |
CN106663033B (zh) | 在事务中间件机器环境支持绕域和代理模型并更新服务信息以跨域消息传送的系统和方法 | |
CN112311786B (zh) | 一种服务请求处理方法、装置、存储介质及计算设备 | |
CN111510330B (zh) | 接口管理装置、方法及存储介质 | |
US7996840B2 (en) | Method, system, and apparatus for scheduling pattern based web services | |
CN114172966B (zh) | 单元化架构下的服务调用方法、服务处理方法及装置 | |
US11294740B2 (en) | Event to serverless function workflow instance mapping mechanism | |
CN107172214B (zh) | 一种具有负载均衡的服务节点发现方法及装置 | |
US7661030B2 (en) | Propagating debug information in a web services environment | |
CN111694639B (zh) | 进程容器地址的更新方法、装置和电子设备 | |
CN114205342A (zh) | 服务调试的路由方法、电子设备、介质及程序产品 | |
US7533383B2 (en) | Method, system, and apparatus for scheduling pattern based web services | |
CN111338829B (zh) | 远程过程调用服务的调用方法及装置 | |
US20200310828A1 (en) | Method, function manager and arrangement for handling function calls | |
US20230283695A1 (en) | Communication Protocol for Knative Eventing's Kafka components | |
JP4970548B2 (ja) | ウェブサービス基盤の規則処理のためのデバイス及びその方法 | |
CN112929195A (zh) | 服务系统、由服务系统执行的方法、处理装置和存储介质 | |
TWI381314B (zh) | 中介軟體橋接系統及方法 | |
US11609747B1 (en) | Decentralized application development and deployment | |
US11757959B2 (en) | Dynamic data stream processing for Apache Kafka using GraphQL | |
US20240195781A1 (en) | Systems and methods for cloud resolving and internet path finding |
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 |