CN113220484A - 一种微服务调用方法、装置、电子设备及存储介质 - Google Patents
一种微服务调用方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113220484A CN113220484A CN202110513598.4A CN202110513598A CN113220484A CN 113220484 A CN113220484 A CN 113220484A CN 202110513598 A CN202110513598 A CN 202110513598A CN 113220484 A CN113220484 A CN 113220484A
- Authority
- CN
- China
- Prior art keywords
- cluster
- micro
- application program
- application
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000004590 computer program Methods 0.000 claims description 14
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 230000003993 interaction Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 241000412611 Consul Species 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 230000000875 corresponding effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/549—Remote execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种微服务调用方法、装置、电子设备及存储介质,所述方法应用于第一应用程序,包括:获取微服务调用请求,所述微服务调用请求用于请求访问第二应用程序,所述第二应用程序不同于所述第一应用程序;根据所述第二应用程序的地址信息,确定与所述微服务调用请求匹配的路由规则;按照所述路由规则,将所述微服务调用请求发送至所述第二应用程序。通过本申请的方法,云环境中的微服务应用可在不依赖K8s系统的情况下根据预先设置的路由规则实现对其它任意的微服务应用的调用,提升了微服务应用之间的交互性能,优化了用户体验。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种微服务调用方法、装置、电子设备及存储介质。
背景技术
随着K8s(KUBERNETES,开源的自动化部署管理系统,它将组成应用程序的容器分组到逻辑单元中,以便于管理和发现)成为云原生领域应用编排的标准,传统企业及新型互联网企业都在逐步将应用容器化及云化。为了实现高并发和高可用,企业通常会将应用部署在多集群甚至多云、混合云等多种环境中,因此,多集群方案逐步成为企业应用部署的最佳选择。目前,很多云厂商都推出了自己的多云、混合云方案,虽然都提供了多集群管理及跨集群的服务访问能力,但是在服务治理方面都有所欠缺。例如istio(一个完全开源的服务网格,作为透明的一层接入到现有的分布式应用程序里,也是一个平台,拥有可以集成任何日志、遥测和策略系统的API接口)原生提供的跨集群服务治理方案均对K8s集群的各项能力有较强的依赖性,无法脱离K8s集群而存在。再例如腾讯TSF(Tencent ServiceFramework,一个围绕应用和微服务的PaaS平台)平台仅仅支持网络互通的集群之间的微服务调用,对于集群之间网络不互通的服务治理方案暂不支持。
发明内容
本申请提供了一种微服务调用方法、装置、电子设备及存储介质,可在不依赖K8s系统的情况下根据预先设置的路由规则实现对其它任意的微服务应用的调用(包括跨集群的调用),提升了微服务应用之间的交互性能。
本申请第一方面提供了一种微服务调用方法,应用于第一应用程序,所述方法包括:
获取微服务调用请求,所述微服务调用请求用于请求访问第二应用程序,所述第二应用程序不同于所述第一应用程序;
根据所述第二应用程序的地址信息,确定与所述微服务调用请求匹配的路由规则;
按照所述路由规则,将所述微服务调用请求发送至所述第二应用程序。
可选地,所述第一应用程序位于第一集群内;根据所述第二应用程序的地址信息,确定与所述微服务调用请求匹配的路由规则,包括:
在所述第二应用程序位于所述第一集群内时,确定本地路由规则为与所述微服务调用请求匹配的路由规则;
在所述第二应用程序位于第二集群内时,确定跨集群路由规则为与所述微服务调用请求匹配的路由规则,所述第二集群不同于所述第一集群。
可选地,在获取微服务调用请求之前,所述方法还包括:
根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则;
在所述第二应用程序位于第二集群内时,确定跨集群路由规则为与所述微服务调用请求匹配的路由规则,包括:
在所述第二应用程序位于第二集群内时,确定跨集群路由规则为定义的所述iptables规则。
可选地,所述第一集群内包括至少一个pod模块,所述第一应用程序位于所述pod模块中;
根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则,包括:
在所述pod模块中,根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则。
可选地,所述第二集群的地址信息为所述第二集群所在的网段信息,所述第二应用程序的地址信息为所述第二应用程序在所述第二集群内的宿主机的IP地址;
根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则,包括:
根据所述第二集群所在的网段信息,和所述第二应用程序在所述第二集群内的宿主机的IP地址,定义iptables规则。
可选地,根据所述第二集群所在的网段信息,和所述第二应用程序在所述第二集群内的宿主机的IP地址,定义iptables规则,包括:
采用目的地址转换命令,利用所述第一集群和所述第二集群各自所在的网段信息、所述第二应用程序在所述第二集群内的宿主机的IP地址定义用于访问所述第二应用程序的iptables规则。
可选地,所述第一集群和所述第一集群均为基于K8s系统的集群,所述K8s系统采用istio作为服务网格,所述pod模块采用边车模式服务于所述pod模块中的各个应用程序。
本申请第三方面提供了一种微服务调用装置,应用于第一应用程序,所述装置包括:
获取模块,用于获取微服务调用请求,所述微服务调用请求用于请求访问第二应用程序,所述第二应用程序不同于所述第一应用程序;
确定模块,用于根据所述第二应用程序的地址信息,确定与所述微服务调用请求匹配的路由规则;
发送模块,用于按照所述路由规则,将所述微服务调用请求发送至所述第二应用程序。
可选地,所述第一应用程序位于第一集群内;所述确定模块包括:
第一确定子模块,用于在所述第二应用程序位于所述第一集群内时,确定本地路由规则为与所述微服务调用请求匹配的路由规则;
第二确定子模块,用于在所述第二应用程序位于第二集群内时,确定跨集群路由规则为与所述微服务调用请求匹配的路由规则,所述第二集群不同于所述第一集群。
可选地,所述装置还包括:
定义模块,用于根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则;
所述第二确定子模块包括:
第三确定子模块,用于在所述第二应用程序位于第二集群内时,确定跨集群路由规则为定义的所述iptables规则。
可选地,所述第一集群内包括至少一个pod模块,所述第一应用程序位于所述pod模块中;所述第三确定子模块包括:
第一定义子模块,用于在所述pod模块中,根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则。
可选地,所述第二集群的地址信息为所述第二集群所在的网段信息,所述第二应用程序的地址信息为所述第二应用程序在所述第二集群内的宿主机的IP地址;所述定义模块或所述第一定义子模块包括:
第二定义子模块,用于根据所述第二集群所在的网段信息,和所述第二应用程序在所述第二集群内的宿主机的IP地址,定义iptables规则。
可选地,所述第二定义子模块包括:
第三定义子模块,用于采用目的地址转换命令,利用所述第一集群和所述第二集群各自所在的网段信息、所述第二应用程序在所述第二集群内的宿主机的IP地址定义用于访问所述第二应用程序的iptables规则。
可选地,所述第一集群和所述第一集群均为基于K8s系统的集群,所述K8s系统采用istio作为服务网格,所述pod模块采用边车模式服务于所述pod模块中的各个应用程序。
本申请第三方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请第一方面所述的微服务调用方法中的步骤。
本申请第四方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请第一方面所述的微服务调用方法的步骤。
通过本申请的微服务调用方法,第一应用程序首先获取微服务调用请求,该微服务调用请求用于请求访问第二应用程序,第二应用程序不同于第一应用程序。接着,根据第二应用程序的地址信息,确定与微服务调用请求匹配的路由规则。最后按照路由规则,将微服务调用请求发送至第二应用程序。通过该方法,云环境中的微服务应用可在不依赖K8s系统的情况下根据预先设置的路由规则实现对其它任意的微服务应用的调用,提升了微服务应用之间的交互性能,优化了用户体验。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例示出的一种微服务调用方法的流程图;
图2是本申请一实施例示出的一种实施环境示意图;
图3是本申请一实施例示出的另一种实施场景示意图;
图4是本申请一实施例示出的一种iptables规则示意图;
图5是本申请一实施例示出的另一种实施场景示意图;
图6是本申请一实施例示出的一种微服务调用装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提供的微服务调用方法可应用于云环境中的任意一个微服务应用(以下简称:第一应用程序)调用其它微服务应用的场景。图1是本申请一实施例示出的一种微服务调用方法的流程图。参照图1,本申请的微服务调用方法可以包括如下步骤:
步骤S11:获取微服务调用请求,所述微服务调用请求用于请求访问第二应用程序,所述第二应用程序不同于所述第一应用程序。
在本实施例中,第一应用程序和第二应用程序是云环境中两个不同的微服务应用。第一应用程序可以根据用户的操作生成微服务调用请求,例如用户在使用第一应用程序的某个功能时需要使用到第二应用程序,那么第一应用程序可以根据用户的此次操作生成用于调用第二应用程序的微服务调用请求。
第一应用程序也可以从其它平台中获得微服务调用请求,例如其它平台的用户需要使用到第二应用程序时,可以将微服务调用请求发送给第一应用程序,再通过第一应用程序调用第二应用程序。本实施例对获取微服务调用请求的方式不作具体限制。
步骤S12:根据所述第二应用程序的地址信息,确定与所述微服务调用请求匹配的路由规则。
在本实施例中,第一应用程序中预先存储有各种路由规则。第一应用程序可以将微服务调用请求中的第二应用程序的地址信息与各种路由规则的地址信息匹配,获得与微服务调用请求匹配的路由规则。
步骤S13:按照所述路由规则,将所述微服务调用请求发送至所述第二应用程序。
第一应用程序通过匹配到的路由规则,可以将微服务调用请求发送至第二应用程序。
本申请中的微服务调用方法可以适用于非K8s的环境中,不存在对K8s系统的各项能力的强依赖性,解决了现有的istio提供的方案无法与K8s系统脱离的问题,增强了微服务调用的稳定性。
通过本实施例的微服务调用方法,第一应用程序首先获取到微服务调用请求,该微服务调用请求用于请求访问第二应用程序,第二应用程序不同于第一应用程序。接着,根据第二应用程序的地址信息,在预先设置的多个路由规则中确定与微服务调用请求匹配的路由规则,再按照路由规则,将微服务调用请求发送至第二应用程序。通过该方法,云环境中的微服务应用可在不依赖K8s系统的情况下根据预先设置的路由规则实现对其它任意的微服务应用的调用,提升了微服务应用之间的交互性能,优化了用户体验。
结合以上实施例,在一种实施方式中,第一应用程序可以位于第一集群内。在此基础上,根据第二应用程序的地址信息,确定与微服务调用请求匹配的路由规则,具体可以包括:
在所述第二应用程序位于所述第一集群内时,确定本地路由规则为与所述微服务调用请求匹配的路由规则;
在所述第二应用程序位于第二集群内时,确定跨集群路由规则为与所述微服务调用请求匹配的路由规则,所述第二集群不同于所述第一集群。
在本实施例中,第一应用程序和第二应用程序可以位于不同的集群内,如图2所示。图2是本申请一实施例示出的一种实施环境示意图。在图2中,第一应用程序位于第一集群内,第二应用程序位于第二集群内。
在本实施例中,预先定义的路由规则可以包括本地路由规则和跨集群路由规则。结合图2,当第二应用程序位于第一集群内时,可以将本地路由规则确定为与微服务调用请求匹配的路由规则,第一应用程序可以直接通过本地路由规则将微服务调用请求发送至第二应用程序,实现对第二应用程序的调用。
当第二应用程序位于第二集群内时,可以跨集群路由规则确定为与微服务调用请求匹配的路由规则,第一应用程序可以通过跨集群路由规则将微服务调用请求发送至第二应用程序,实现对第二应用程序的调用。
其中,第一集群和第二集群之间既可以有网络连接,也可以无网络连接。在无网络连接的时候,第一应用程序仍然可以通过跨集群路由规则将微服务调用请求发送至第二应用程序。即本申请中的跨集群路由规则可以适用于两个无网络连接的集群内的微服务应用之间的相互调用。
通过本实施例的方法,无论第二应用程序是否与第一应用程序在同一个集群内,第一应用程序均可以将微服务调用请求发送至第二应用程序,实现对第二应用程序的调用。当第二应用程序与第一应用程序不在同一个集群内,且两个集群之间无网络连接时,第一应用程序可以通过跨集群路由规则将微服务调用请求发送至第二应用程序,实现对第二应用程序的调用,克服了相关技术中当两个集群之间无网络连接时内部的微服务应用之间无法相互调用的问题,提升了微服务应用之间的交互性能,优化了用户体验。
结合以上实施例,在一种实施方式中,在获取微服务调用请求之前,本申请的微服务调用方法还可以包括如下步骤:
根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则。
在此基础上,在所述第二应用程序位于第二集群内时,确定跨集群路由规则为与所述微服务调用请求匹配的路由规则,可以包括:
在所述第二应用程序位于第二集群内时,确定跨集群路由规则为定义的所述iptables规则。
在本实施例中,可以采用iptables规则来定义路由规则。其中,iptables是按照规则来执行相应动作的,该规则是预先定义的条件。规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(例如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行、拒绝和丢弃等。
在本实施例中,如果微服务调用请求满足iptables中预先定义的规则,就按照规则定义的方法处理微服务调用请求,即发送至第二应用程序。其中,在定义规则时,可以参照第二集群的地址信息和第二应用程序的地址信息。
示例地,可以预先利用iptables定义多个规则,每一个规则对应一个集群的地址信息和微服务应用的地址信息。如此,在获得跨集群的微服务调用请求后,可以将该微服务调用请求对应的第二集群的地址信息和第二应用程序的地址信息分别与各个规则中的集群的地址信息和微服务应用的地址信息进行匹配,匹配成功的那个iptables规则即为最终的路由规则。
本实施例中提供了一种定义路由规则的方法,即通过iptables规则来预先定义路由规则,借助iptables规则的可任意定义的特性,实现了对路由规则的灵活定义,使得第一应用程序可借助iptables规则实现对任意的微服务应用的调用,优化了用户体验。
结合以上实施例,在一种实施方式中,所述第一集群内包括至少一个pod模块,所述第一应用程序位于所述pod模块中。
在此基础上,根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则,具体可以包括:
在所述pod模块中,根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则。
在本实施例中,pod代表集群上正在运行的一个进程,pod中运行一个容器,或者运行多个需要一起工作的容器,微服务应用安装于pod模块中。
在本实施例中,第一集群和第二集群内的各个微服务应用可以位于pod模块中,如图3所示。图3是本申请一实施例示出的另一种实施场景示意图。在图3中,第一应用程序可以位于第一集群的pod模块中,第二应用程序可以位于第二集群的pod模块中。
因此,当在第一应用程序中定义针对第二应用程序的iptables规则时,可以在第一应用程序所在的pod模块中,根据第二集群的地址信息和第二应用程序的地址信息定义针对第二应用程序的iptables规则。
由于第二应用程序也是微服务应用,因此也可以在第二应用程序中定义针对其它微服务应用的iptables规则。即可以在第二应用程序所在的pod模块中,根据其它微服务应用的地址信息和所在的集群的地址信息定义iptables规则。
本实施例中提供了一种通过iptables规则预先定义路由规则的方法,即在第一应用程序所在的在pod模块中定义iptables规则。该方法借助了iptables规则的可任意定义的特性,实现了对路由规则的灵活定义,使得第一应用程序可借助iptables规则实现对任意的微服务应用的调用,优化了用户体验。
结合以上实施例,在一种实施方式中,所述第二集群的地址信息为所述第二集群所在的网段信息,所述第二应用程序的地址信息为所述第二应用程序在所述第二集群内的宿主机的IP地址。
在此基础上,根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则,具体可以包括:
根据所述第二集群所在的网段信息,和所述第二应用程序在所述第二集群内的宿主机的IP地址,定义iptables规则。
在本实施例中,在第一应用程序中定义用于访问第二应用程序的iptables规则时,可以将第二集群所在的网段信息作为第二集群的地址信息,将第二应用程序在第二集群内的宿主机的IP地址作为第二应用程序的地址信息。
进一步地,根据所述第二集群所在的网段信息,和所述第二应用程序在所述第二集群内的宿主机的IP地址,定义iptables规则,可以包括:
采用目的地址转换命令,利用所述第一集群和所述第二集群各自所在的网段信息、所述第二应用程序在所述第二集群内的宿主机的IP地址定义用于访问所述第二应用程序的iptables规则。
在本实施例中,目的地址转换命令即DNAT(Destination Network AddressTranslation),基于目的地址转换命令定义iptables规则的示例可以如图4所示。图4是本申请一实施例示出的一种iptables规则示意图。
在图4中,source表示第一应用程序所在的网段信息,destination表示第二集群所在的网段信息,to后边的部分表示第二应用程序在第二集群内的宿主机的IP地址。
在此基础上,根据所述第二应用程序的地址信息,确定与所述微服务调用请求匹配的路由规则,可以包括:
从注册中心获得第二应用程序在第二集群内的宿主机的IP地址;
将获得的所述宿主机的IP地址与多个iptables规则中第二应用程序在第二集群内的宿主机的IP地址匹配,获得匹配的iptables规则;
将所述匹配的iptables规则确定为与微服务调用请求匹配的路由规则。
示例地,在图4中,如果从注册中心获得第二应用程序在第二集群内的宿主机的IP地址为10.0.1.129:80,那么将匹配到第一个iptables规则,该iptables规则中的第二集群所在的网段信息为192.168.65.0/24。如果从注册中心获得第二应用程序在第二集群内的宿主机的IP地址为10.0.1.130:80,那么将匹配到第二个iptables规则,该iptables规则中的第二集群所在的网段信息为192.168.65.0/24。
通过该方法,可以基于目的地址转换命令在每一个的微服务应用(例如第一应用程序)所在的pod模块中定义多个用于访问其它不同的微服务应用的iptables规则。使得每一个微服务应用可以实现对任意其它微服务应用的调用,而不用考虑各自所在的集群之间是否存在网络连接,增强了微服务应用之间相互调用的性能。
本实施例中借助了iptables规则的可任意定义的特性,实现了对路由规则的灵活定义,使得第一应用程序可借助iptables规则实现对任意的微服务应用的调用,优化了用户体验。
结合以上实施例,在一种实施方式中,所述第一集群和所述第一集群均为基于K8s系统的集群,所述K8s系统采用istio作为服务网格,所述pod模块采用边车模式服务于所述pod模块中的各个应用程序。
本申请中的微服务调用方法可以适用于非K8s的环境中,也可以适用于K8s的环境中。在适用于K8s的环境中时,本申请的微服务调用方法可以适用于istio在K8s多集群环境下微服务之间互相调用时网络不通的场景。该方法可借助iptables,在部署某个微服务应用时,针对相关需要访问的其它微服务应用,根据其所在的宿主机的IP地址及所属集群所在的网段信息,在pod模块中生成相关的iptables规则。该iptables规则在请求流量进入到pod模块中时,自动进行匹配。当流量匹配到同一集群时,直接采用本地路由规则,当流量匹配不到本地规则时,通过跨集群路由规则自动将流量发出,请求跨集群的服务。
结合以上实施例,在一种实施方式中,集群内的微服务应用可以从注册中心获取需要调用的微服务应用所在的宿主机的IP地址,如图5所示。图5是本申请一实施例示出的另一种实施场景示意图。
在图5中,控制面plot是istio中的控制面组件。应用A和应用B预先在注册中心consul中完成了注册。应用A在集群A的pod模块中,集群A的pod模块采用边车模式服务于应用A。应用B在集群B的pod模块中,集群B的pod模块采用边车模式服务于应用B。集群A和集群B网络不互通。
以应用A访问应用B为例,应用A首先从注册中心consul中获取应用B所在的宿主机的IP地址。由于获取到的是应用B的宿主机IP,且两个集群不互通,所以无法成功访问到应用B。此时可以预先在应用A中定义用于访问应用B的iptables规则。此时应用A将从注册中心consul中获取的应用B所在的宿主机的IP地址与各个预先定义的iptables规则匹配,可以获得匹配的iptables规则。接着,根据该匹配的iptables规则,应用A可以将访问应用B的请求发送至应用B,从而实现对应用B的调用。应用B首先通过Ingress(Ingress为集群B的入口)拦截应用A发送的请求,然后根据在Ingress中定义的转发规则,通过请求的宿主机将该请求转发到的目的端口,即应用B的应用端口,从而完成对应用B的调用。
本申请的微服务调用方法具备如下多个技术效果:
一、可以在不依赖K8s系统的前提下,实现微服务跨集群的访问。
二、可通过配置iptables规则,以最小的改动方案真正实现客户零感知。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
基于同一发明构思,本申请还提供了一种微服务调用装置600。图6是本申请一实施例示出的一种微服务调用装置的结构示意图。参照图6,本申请的微服务调用装置600可以包括:
获取模块601,用于获取微服务调用请求,所述微服务调用请求用于请求访问第二应用程序,所述第二应用程序不同于所述第一应用程序;
确定模块602,用于根据所述第二应用程序的地址信息,确定与所述微服务调用请求匹配的路由规则;
发送模块603,用于按照所述路由规则,将所述微服务调用请求发送至所述第二应用程序。
可选地,所述第一应用程序位于第一集群内;所述确定模块602包括:
第一确定子模块,用于在所述第二应用程序位于所述第一集群内时,确定本地路由规则为与所述微服务调用请求匹配的路由规则;
第二确定子模块,用于在所述第二应用程序位于第二集群内时,确定跨集群路由规则为与所述微服务调用请求匹配的路由规则,所述第二集群不同于所述第一集群。
可选地,所述装置600还包括:
定义模块,用于根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则;
所述第二确定子模块包括:
第三确定子模块,用于在所述第二应用程序位于第二集群内时,确定跨集群路由规则为定义的所述iptables规则。
可选地,所述第一集群内包括至少一个pod模块,所述第一应用程序位于所述pod模块中;所述第三确定子模块包括:
第一定义子模块,用于在所述pod模块中,根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则。
可选地,所述第二集群的地址信息为所述第二集群所在的网段信息,所述第二应用程序的地址信息为所述第二应用程序在所述第二集群内的宿主机的IP地址;所述定义模块或所述第一定义子模块包括:
第二定义子模块,用于根据所述第二集群所在的网段信息,和所述第二应用程序在所述第二集群内的宿主机的IP地址,定义iptables规则。
可选地,所述第二定义子模块包括:
第三定义子模块,用于采用目的地址转换命令,利用所述第一集群和所述第二集群各自所在的网段信息、所述第二应用程序在所述第二集群内的宿主机的IP地址定义用于访问所述第二应用程序的iptables规则。
可选地,所述第一集群和所述第一集群均为基于K8s系统的集群,所述K8s系统采用istio作为服务网格,所述pod模块采用边车模式服务于所述pod模块中的各个应用程序。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
基于同一发明构思,本申请另一实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请上述任一实施例所述的方法中的步骤。
基于同一发明构思,本申请另一实施例提供一种电子设备。该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请上述任一实施例所述的方法中的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本申请中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种微服务调用方法、装置、电子设备及存储介质,进行了详细介绍,本申请中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种微服务调用方法,其特征在于,应用于第一应用程序,所述方法包括:
获取微服务调用请求,所述微服务调用请求用于请求访问第二应用程序,所述第二应用程序不同于所述第一应用程序;
根据所述第二应用程序的地址信息,确定与所述微服务调用请求匹配的路由规则;
按照所述路由规则,将所述微服务调用请求发送至所述第二应用程序。
2.根据权利要求1所述的方法,其特征在于,所述第一应用程序位于第一集群内;根据所述第二应用程序的地址信息,确定与所述微服务调用请求匹配的路由规则,包括:
在所述第二应用程序位于所述第一集群内时,确定本地路由规则为与所述微服务调用请求匹配的路由规则;
在所述第二应用程序位于第二集群内时,确定跨集群路由规则为与所述微服务调用请求匹配的路由规则,所述第二集群不同于所述第一集群。
3.根据权利要求2所述的方法,其特征在于,在获取微服务调用请求之前,所述方法还包括:
根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则;
在所述第二应用程序位于第二集群内时,确定跨集群路由规则为与所述微服务调用请求匹配的路由规则,包括:
在所述第二应用程序位于第二集群内时,确定跨集群路由规则为定义的所述iptables规则。
4.根据权利要求3所述的方法,其特征在于,所述第一集群内包括至少一个pod模块,所述第一应用程序位于所述pod模块中;
根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则,包括:
在所述pod模块中,根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则。
5.根据权利要求3或4所述的方法,其特征在于,所述第二集群的地址信息为所述第二集群所在的网段信息,所述第二应用程序的地址信息为所述第二应用程序在所述第二集群内的宿主机的IP地址;
根据所述第二集群的地址信息和所述第二应用程序的地址信息,定义iptables规则,包括:
根据所述第二集群所在的网段信息,和所述第二应用程序在所述第二集群内的宿主机的IP地址,定义iptables规则。
6.根据权利要求5所述的方法,其特征在于,根据所述第二集群所在的网段信息,和所述第二应用程序在所述第二集群内的宿主机的IP地址,定义iptables规则,包括:
采用目的地址转换命令,利用所述第一集群和所述第二集群各自所在的网段信息、所述第二应用程序在所述第二集群内的宿主机的IP地址定义用于访问所述第二应用程序的iptables规则。
7.根据权利要求6所述的方法,其特征在于,所述第一集群和所述第一集群均为基于K8s系统的集群,所述K8s系统采用istio作为服务网格,所述pod模块采用边车模式服务于所述pod模块中的各个应用程序。
8.一种微服务调用装置,其特征在于,应用于第一应用程序,所述装置包括:
获取模块,用于获取微服务调用请求,所述微服务调用请求用于请求访问第二应用程序,所述第二应用程序不同于所述第一应用程序;
确定模块,用于根据所述第二应用程序的地址信息,确定与所述微服务调用请求匹配的路由规则;
发送模块,用于按照所述路由规则,将所述微服务调用请求发送至所述第二应用程序。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7任一所述的微服务调用方法中的步骤。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行时实现如权利要求1-7任一所述的微服务调用方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110513598.4A CN113220484A (zh) | 2021-05-11 | 2021-05-11 | 一种微服务调用方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110513598.4A CN113220484A (zh) | 2021-05-11 | 2021-05-11 | 一种微服务调用方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113220484A true CN113220484A (zh) | 2021-08-06 |
Family
ID=77095096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110513598.4A Pending CN113220484A (zh) | 2021-05-11 | 2021-05-11 | 一种微服务调用方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113220484A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113687919A (zh) * | 2021-08-30 | 2021-11-23 | 济南浪潮数据技术有限公司 | 一种微服务治理的控制方法、装置、设备及存储介质 |
CN114025021A (zh) * | 2021-11-18 | 2022-02-08 | 上海道客网络科技有限公司 | 一种跨Kubernetes集群的通信方法、系统、介质和电子设备 |
CN114531432A (zh) * | 2022-02-14 | 2022-05-24 | 浙江吉利控股集团有限公司 | 一种基于跨平台的业务通信方法及装置 |
CN114938396A (zh) * | 2022-05-09 | 2022-08-23 | 阿里巴巴(中国)有限公司 | 服务调用请求的路由方法、创建服务的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160248861A1 (en) * | 2014-10-21 | 2016-08-25 | Twilio, Inc. | System and method for providing a micro-services communication platform |
CN110225131A (zh) * | 2019-06-19 | 2019-09-10 | 广州小鹏汽车科技有限公司 | 一种服务调用方法和装置 |
CN111541765A (zh) * | 2020-04-21 | 2020-08-14 | 北京思特奇信息技术股份有限公司 | 一种用于多级路由调度的方法及系统 |
CN111614738A (zh) * | 2020-05-07 | 2020-09-01 | 北京金山云网络技术有限公司 | 基于Kubernetes集群的服务访问方法、装置、设备及存储介质 |
CN111970198A (zh) * | 2020-08-13 | 2020-11-20 | 北京金山云网络技术有限公司 | 一种服务路由方法、装置、电子设备及介质 |
CN112333096A (zh) * | 2020-10-16 | 2021-02-05 | 济南浪潮数据技术有限公司 | 一种微服务流量调度方法及相关组件 |
-
2021
- 2021-05-11 CN CN202110513598.4A patent/CN113220484A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160248861A1 (en) * | 2014-10-21 | 2016-08-25 | Twilio, Inc. | System and method for providing a micro-services communication platform |
CN110225131A (zh) * | 2019-06-19 | 2019-09-10 | 广州小鹏汽车科技有限公司 | 一种服务调用方法和装置 |
CN111541765A (zh) * | 2020-04-21 | 2020-08-14 | 北京思特奇信息技术股份有限公司 | 一种用于多级路由调度的方法及系统 |
CN111614738A (zh) * | 2020-05-07 | 2020-09-01 | 北京金山云网络技术有限公司 | 基于Kubernetes集群的服务访问方法、装置、设备及存储介质 |
CN111970198A (zh) * | 2020-08-13 | 2020-11-20 | 北京金山云网络技术有限公司 | 一种服务路由方法、装置、电子设备及介质 |
CN112333096A (zh) * | 2020-10-16 | 2021-02-05 | 济南浪潮数据技术有限公司 | 一种微服务流量调度方法及相关组件 |
Non-Patent Citations (4)
Title |
---|
李海飞: "服务网格中级联故障预测方法研究与应用", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
李海飞: "服务网格中级联故障预测方法研究与应用", 《中国优秀硕士学位论文全文数据库信息科技辑》, 15 April 2021 (2021-04-15), pages 137 - 8 * |
杨菁: "Linux系统与服务管理案例教程", 北京:北京理工大学出版社, pages: 222 * |
欧阳代富: "私有云与公有云协同的集群管理系统的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》, 15 July 2020 (2020-07-15), pages 138 - 245 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113687919A (zh) * | 2021-08-30 | 2021-11-23 | 济南浪潮数据技术有限公司 | 一种微服务治理的控制方法、装置、设备及存储介质 |
CN113687919B (zh) * | 2021-08-30 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种微服务治理的控制方法、装置、设备及存储介质 |
CN114025021A (zh) * | 2021-11-18 | 2022-02-08 | 上海道客网络科技有限公司 | 一种跨Kubernetes集群的通信方法、系统、介质和电子设备 |
CN114025021B (zh) * | 2021-11-18 | 2023-08-08 | 上海道客网络科技有限公司 | 一种跨Kubernetes集群的通信方法、系统、介质和电子设备 |
CN114531432A (zh) * | 2022-02-14 | 2022-05-24 | 浙江吉利控股集团有限公司 | 一种基于跨平台的业务通信方法及装置 |
CN114938396A (zh) * | 2022-05-09 | 2022-08-23 | 阿里巴巴(中国)有限公司 | 服务调用请求的路由方法、创建服务的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113220484A (zh) | 一种微服务调用方法、装置、电子设备及存储介质 | |
US11150963B2 (en) | Remote smart NIC-based service acceleration | |
US11102079B2 (en) | Cross-regional virtual network peering | |
US9935829B1 (en) | Scalable packet processing service | |
CN109194502B (zh) | 多租户容器云计算系统的管理方法 | |
EP3121997B3 (en) | Service provisioning in a communication network | |
CN105610632B (zh) | 一种虚拟网络设备及相关方法 | |
US9880870B1 (en) | Live migration of virtual machines using packet duplication | |
CN108702316B (zh) | 一种vnf的资源分配方法及装置 | |
CN114079669A (zh) | 用于提供全局虚拟网络(gvn)的系统和方法 | |
CA2753747C (en) | Method for operating a node cluster system in a network and node cluster system | |
US10868856B2 (en) | Network element and method of running applications in a cloud computing system | |
WO2019127418A1 (zh) | 网络服务管理方法、相关装置及系统 | |
CN106657180B (zh) | 用于云服务的信息传输方法、装置、终端设备及系统 | |
CN111245634B (zh) | 一种虚拟化管理方法及装置 | |
CN112333017B (zh) | 一种服务配置方法、装置、设备及存储介质 | |
CN112187958A (zh) | 微服务注册、发现转发的方法及装置 | |
CN113568711A (zh) | 一种K8S中使用的基于eBPF架构的负载均衡方法及装置 | |
Lee et al. | High-performance software load balancer for cloud-native architecture | |
CN116633934A (zh) | 负载均衡方法、装置、节点及存储介质 | |
US10785056B1 (en) | Sharing a subnet of a logically isolated network between client accounts of a provider network | |
CN112887330B (zh) | 一种网络acl隔离浮动ip的实现装置及方法 | |
CN114422160A (zh) | 一种虚拟防火墙的设置方法、装置、电子设备和存储介质 | |
CN114070637B (zh) | 基于属性标签的访问控制方法、系统、电子设备及存储介质 | |
CN116016448A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210806 |