CN114640610A - 基于云原生的服务治理方法、装置及存储介质 - Google Patents
基于云原生的服务治理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN114640610A CN114640610A CN202210181009.1A CN202210181009A CN114640610A CN 114640610 A CN114640610 A CN 114640610A CN 202210181009 A CN202210181009 A CN 202210181009A CN 114640610 A CN114640610 A CN 114640610A
- Authority
- CN
- China
- Prior art keywords
- service
- cloud
- native
- consumer
- service provider
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- 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/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于云原生的服务治理方法、装置及存储介质,涉及计算机技术领域,包括:接收服务提供者的服务信息,并基于服务信息生成注册列表,云原生微服务平台用于实现服务注册与服务发现;响应于服务消费者发送的服务调用请求,利用Kubernetes API根据注册列表查取服务列表,创建服务消费者与服务列表中目标服务提供者的服务调用连接,以实现服务消费者对目标服务提供者的快速远程服务调用;利用GraalVM的native‑image命令构建服务提供者和服务消费者的本地原生可执行代码,将本地原生可执行代码部署运行在云原生微服务平台上,以实现云原生微服务平台的快速动态弹性扩缩容,提升资源利用率,节约成本。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及到一种基于云原生的服务治理方法、装置及存储介质。
背景技术
随着云原生技术的不断发展,以Kubernetes为代表的容器技术成为云计算新界面。目前多数企业在尝试引入Kubernetes容器管理技术,并逐步将服务治理迁移到Kubernetes管理的容器运行。
在基于云原生进行服务治理时,目前普遍采用在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列功能。然而,就Dubbo服务框架而言,但部署在kubernetes集群中需要重复注册,即注册zookeeper/eureka/nacos中且在kubernetes集群Etcd也重复注册。并且,Dubbo服务框架在运行时使用动态代理和字节码动态生成客户端代理,对未来云原生支持不了,另外就是依赖三方的包比较多,对跨语言支持不友好,进而导致服务治理效果不佳。
发明内容
有鉴于此,本申请提供了一种基于云原生的服务治理方法、装置及存储介质,可用于解决目前在基于云原生进行服务治理时,服务注册发现在云原生中需要重复注册,现有服务框架无法支持云原生,以及依赖三方的包比较多,对跨语言支持不友好,进而导致服务治理效果不佳的技术问题。
有鉴于此,本申请提供了一种基于云原生的服务治理方法,应用于云原生服务治理框架,所述云原生服务治理框架为引入了云原生微服务平台的Microwave Framework框架和Thrift框架,所述方法包括:
利用所述云原生微服务平台接收服务提供者的服务信息,并基于所述服务信息生成注册列表,所述云原生微服务平台是基于Kubernetes云管理平台以及JSR-269技术构建在机器内部的,用于实现服务注册与服务发现,所述机器包括物理机和/或虚拟机;
响应于服务消费者发送的服务调用请求,利用Kubernetes API根据所述注册列表查取服务列表,所述服务调用请求中携带有待创建连接的目标服务类型,所述服务列表中包含与所述目标服务类型匹配的目标服务提供者;
利用所述云原生微服务平台创建所述服务消费者与所述目标服务提供者的服务调用连接,以基于所述服务调用连接实现所述服务消费者对所述目标服务提供者的快速远程服务调用;
利用GraalVM的native-image命令构建所述服务提供者和所述服务消费者的本地原生可执行代码,将所述本地原生可执行代码部署运行在所述云原生微服务平台上,用于降低所述服务提供者和所述服务消费者的运行内存,实现所述云原生微服务平台中的快速动态弹性扩缩容。
可选地,在利用所述云原生微服务平台接收服务提供者的服务信息,并基于所述服务信息生成注册列表之前,还包括:
编写Thrift IDL文件并生成约定接口代码,将所述约定接口代码存储至私服仓库,以便所述服务提供者和所述服务提供者通过在所述私服仓库中导入所述约定接口代码,实现对所述云原生服务治理框架的依赖配置,以在所述云原生服务治理框架中部署基于JSR 269AbstractProcessor API生成的第一服务治理代码和第二服务治理代码,其中,所述第一服务治理代码用于支持所述服务提供者在所述云原生服务治理框架中的服务暴露,所述第二服务治理代码用于支持所述服务消费者利用所述Kubernetes API进行对所暴露服务的远程调用。
可选地,所述服务信息包括:本机IP地址、端口信息和服务类型,基于所述服务信息生成注册列表,包括:
利用Kubernetes API将所述服务提供者的本机IP地址、端口信息和服务类型,发送至Kubernetes的Ectd注册中心,利用所述Ectd注册中心生成包含至少一个服务提供者对应实例节点的注册列表。
可选地,所述服务调用请求中携带有待创建连接的目标服务类型;
所述响应于服务消费者发送的服务调用请求,利用Kubernetes API在所述注册列表中查取服务列表,包括:
调用Kubernetes API在所述Ectd注册中心所包含的注册列表中查取与所述目标服务类型匹配的服务列表,所述服务列表包含至少一个服务提供者的本机IP地址、端口信息。
可选地,在所述利用所述云原生微服务平台创建所述服务消费者与所述目标服务提供者的服务调用连接之前,还包括:
根据所述本机IP地址和所述端口信息以及所述云原生服务治理框架中预设的负载均衡策略,在所述服务列表中筛选出与所述服务消费者创建服务调用连接的目标服务提供者。
可选地,在利用所述云原生微服务平台创建所述服务消费者与所述目标服务提供者的服务调用连接之后,还包括:
利用所述Thrift框架根据所述服务调用连接以及Thrift原生协议,远程调用所述目标服务提供者。
可选地,所述方法还包括:
利用所述云原生微服务平台接收所述注册列表中各个服务提供者上传的心跳状态信息,并根据所述心跳状态信息确定异常服务提供者,在所述注册列表中剔除所述异常服务提供者。
根据本申请的另一个方面,提供了一种基于云原生的服务治理装置,应用于云原生服务治理框架,所述云原生服务治理框架为引入了云原生微服务平台的MicrowaveFramework框架和Thrift框架,所述装置包括:
第一生成模块,用于利用所述云原生微服务平台接收服务提供者的服务信息,并基于所述服务信息生成注册列表,所述云原生微服务平台是基于Kubernetes云管理平台以及JSR-269技术构建在机器内部的,用于实现服务注册与服务发现,所述机器包括物理机和/或虚拟机;
查取模块,用于响应于服务消费者发送的服务调用请求,利用Kubernetes API根据所述注册列表查取服务列表,所述服务调用请求中携带有待创建连接的目标服务类型,所述服务列表中包含与所述目标服务类型匹配的目标服务提供者;
创建模块,用于利用所述云原生微服务平台创建所述服务消费者与所述目标服务提供者的服务调用连接,以基于所述服务调用连接实现所述服务消费者对所述目标服务提供者的快速远程服务调用;
第二生成模块,用于利用GraalVM的native-image命令生成所述服务提供者和所述服务消费者的本地原生可执行代码,将所述本地原生可执行代码部署运行在所述云原生微服务平台上,用于降低所述服务提供者和所述服务消费者的运行内存,实现所述云原生微服务平台中的快速动态弹性扩缩容。
可选地,所述装置还包括:部署模块;
所述部署模块,用于编写Thrift IDL文件并生成约定接口代码,将所述约定接口代码存储至私服仓库,以便所述服务提供者和所述服务提供者通过在所述私服仓库中导入所述约定接口代码,实现对所述云原生服务治理框架的依赖配置,以在所述云原生服务治理框架中部署基于JSR 269AbstractProcessor API生成的第一服务治理代码和第二服务治理代码,其中,所述第一服务治理代码用于支持所述服务提供者在所述云原生服务治理框架中的服务暴露,所述第二服务治理代码用于支持所述服务消费者利用所述KubernetesAPI进行对所暴露服务的远程调用。
可选地,所述服务信息包括:本机IP地址、端口信息和服务类型;
所述第一生成模块,用于利用Kubernetes API将所述服务提供者的本机IP地址、端口信息和服务类型,发送至Kubernetes的Ectd注册中心,利用所述Ectd注册中心生成包含至少一个服务提供者对应实例节点的注册列表。
可选地,所述服务调用请求中携带有待创建连接的目标服务类型;
所述查取模块,用于调用Kubernetes API在所述Ectd注册中心所包含的注册列表中查取与所述目标服务类型匹配的服务列表,所述服务列表包含至少一个服务提供者的本机IP地址、端口信息。
可选地,所述装置还包括:筛选模块;
所述筛选模块,用于根据所述本机IP地址和所述端口信息以及所述云原生服务治理框架中预设的负载均衡策略,在所述服务列表中筛选出与所述服务消费者创建服务调用连接的目标服务提供者。
可选地,所述装置还包括:调用模块;
所述调用模块,用于利用所述Thrift框架根据所述服务调用连接以及Thrift原生协议,远程调用所述目标服务提供者。
可选地,所述装置还包括:剔除模块;
所述剔除模块,用于利用所述云原生微服务平台接收所述注册列表中各个服务提供者上传的心跳状态信息,并根据所述心跳状态信息确定异常服务提供者,在所述注册列表中剔除所述异常服务提供者。
根据本申请的又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述基于云原生的服务治理方法。
根据本申请的再一个方面,提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于云原生的服务治理方法。
本申请提供了一种基于云原生的服务治理方法、装置及存储介质,可应用于云原生服务治理框架,云原生服务治理框架为引入了云原生微服务平台的MicrowaveFramework框架和Thrift框架。具体可基于云原生实现服务注册与服务发现、云服务调用以及生成本地原生可执行代码以提高云原生可执行能力。具体的,在实现云服务调用时,可利用云原生微服务平台接收服务提供者的服务信息,并基于服务信息生成注册列表,云原生微服务平台是基于Kubernetes云管理平台以及JSR-269技术构建在机器内部的,用于实现服务注册与服务发现,机器包括物理机和/或虚拟机;响应于服务消费者发送的服务调用请求,利用Kubernetes API根据注册列表查取服务列表,服务调用请求中携带有待创建连接的目标服务类型,服务列表中包含与目标服务类型匹配的目标服务提供者;利用云原生微服务平台创建服务消费者与目标服务提供者的服务调用连接,以基于服务调用连接实现服务消费者对目标服务提供者的快速远程服务调用。相应的,在生成本地原生可执行代码时,可利用GraalVM的native-image命令构建服务提供者和服务消费者的本地原生可执行代码,将本地原生可执行代码部署运行在云原生微服务平台上,用于降低服务提供者和服务消费者的运行内存,实现云原生微服务平台中的快速动态弹性扩缩容。本申请中的技术方案,通过云原生的服务注册发现,可减少三方依赖和中间件部署,在云原生环境(Kubernetes)下使用其已有的服务发现方式,减少额外部署其他服务发现组件;基于Thrift框架进行构建,跨语言能力上使用已有能力,以及依赖Thrift框架在上述服务发现基础上实现客户端的负载均衡,改造Thrift框架并实现隐式传参和监控。另外在部署阶段可以使用GraalVM的native-image方式构建为本地可执行文件,大大减少内存使用以及启动速度,实现云原生微服务平台中的快速动态弹性扩缩容,提升资源利用率,从而有效起到提升服务治理效果、节约成本的目的。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1示出了本发明实施例提供的一种基于云原生的服务治理的原理流程示意图;
图2示出了本发明实施例提供的另一种基于云原生的服务治理的原理流程示意图示意图;
图3示出了本发明实施例提供的一种基于云原生的服务治理方法流程图;
图4示出了本发明实施例提供的一种基于云原生的服务治理装置的结构示意图;
图5示出了本发明实施例提供的一种计算机设备的实体结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
目前在基于云原生进行服务治理时,存在以下问题:就Dubbo服务框架而言,注册中心支持zookeeper,eureka等,但部署在Kubernetes集群中重复注册。即注册zookeeper/eureka/nacos中且在Kubernetes集群Etcd也重复注册;以及Dubbo服务框架在运行时使用动态代理或字节码生成客户端代理,对未来云原生支持不了,无法使用GraalVM进行native-image构建为本地可执行文件。当前对于反射或者动态类加载,GraalVM需要手写reflection.json文件等操作,如果一个稍微大一些的业务其反射难以维护,所以最少使用反射或字节码动态生成技术;以及存在依赖较多的问题,无论是Dubbo还是Spring Cloud框架对依赖相对较多,比较重。Dubbo为了适配更多协议研发的框架,代码分层很多逻辑是不需要的,Spring Cloud为了满足整个社区的服务治理也是引入了Netfilx套件,很多逻辑代码其实不需要,企业在这么复杂的架构下也难以定制或精确裁剪。以及跨语言支持不友好或性能不佳,Spring Cloud使用HTTP协议进行传输性能一般,内网服务二进制协议更好。Dubbo框架自定义协议,跨语言支持不佳,社区仅实现了Golang和Python客户端。
有鉴于此,本发明实施例提供了一种云原生服务治理框架,该框架为引入了云原生微服务平台的Microwave Framework框架和Thrift框架,基于云原生服务治理框架实现服务治理的原理流程可参见附图1和附图2所示,首先进行基础部署工作:在服务开发阶段,可首先编写Thrift IDL文件,并使用thrift.exe(或thrift-maven-plugin)生成约定接口代码some-api.jar;把上述生成的约定接口代码推送到私服仓库中存储。进一步的,服务提供者(Service Provider)可依赖some-api.jar,实现其约定的some-api.jar接口定义,以形成对云原生服务治理框架的依赖配置,并使用Microwave Framework框架预处理构建,生成第一服务治理代码,发布到Kubernetes集群中,注册到Ectd注册中心,此标志着服务端准备就绪。服务消费者(Service Consumer)可同样依赖some-api.jar形成对云原生服务治理框架的依赖配置,并使用Microwave Framework框架预处理构建,生成第二服务治理代码,发布到Kubernetes集群中,以在服务启动时对依赖的服务在Kubernetes的注册中心进行查找,获取其服务提供者列表,创建调用的连接,后续使用原生的Thrift协议进行远程调用,并在调用过程中基于云原生服务治理框架中预设的负载均衡策略实现负载均衡。此外,作为一种优选方式,在构建阶段,还可使用GraalVM进行native-image构建得到服务提供者的本地原生可执行代码,将服务提供者的本地原生可执行代码部署运行在云原生微服务平台上。同样的,也可使用GraalVM进行native-image构建得到服务消费者的本地原生可执行代码,将服务消费者的本地原生可执行代码部署运行在云原生微服务平台上。通过在云原生微服务平台上对本地原生可执行代码的部署,可降低服务提供者和服务消费者的运行内存,实现云原生微服务平台中的快速动态弹性扩缩容,提升服务资源利用率,从而有效起到节约成本的目的。
针对上述云原生服务治理框架,本发明实施例提供了一种应用于云原生服务治理框架的基于云原生的服务治理方法,如图3所示,该方法包括:
101、利用云原生微服务平台接收服务提供者的服务信息,并基于服务信息生成注册列表,云原生微服务平台是基于Kubernetes云管理平台以及JSR-269技术构建在机器内部的,用于实现服务注册与服务发现,机器包括物理机和/或虚拟机。
其中,服务提供者为已注册到云原生微服务平台的服务。
在具体的应用场景中,在执行实施例步骤101与102之前,可首先利用MicrowaveFramework框架预处理构建,生成服务提供者的第一服务治理代码和服务消费者的第二服务治理代码,并将第一服务治理代码和第二服务治理代码发布到Kubernetes集群中,以利用第一服务治理代码支持服务提供者在云原生服务治理框架中的服务暴露,即使云原生微服务平台能够接收到服务提供者的服务信息。以及能够基于第二服务治理代码支持服务消费者利用Kubernetes API进行对所暴露服务的远程调用,即使云原生微服务平台能够接收并响应于服务消费者发送的服务调用请求,创建服务消费者与目标服务提供者的服务调用连接,进而实现快速远程服务调用。相应的,实施例步骤具体还可以包括:编写Thrift IDL文件并生成约定接口代码,将约定接口代码存储至私服仓库,以便服务提供者和服务提供者通过在私服仓库中导入约定接口代码,实现对云原生服务治理框架的依赖配置,以在云原生服务治理框架中部署基于JSR 269AbstractProcessor API生成的第一服务治理代码和第二服务治理代码,其中,第一服务治理代码用于支持服务提供者在云原生服务治理框架中的服务暴露,第二服务治理代码用于支持服务消费者利用Kubernetes API进行对所暴露服务的远程调用。
对于本实施例,在利用第一服务治理代码实现服务提供者在云原生服务治理框架中的服务暴露时,云原生微服务平台可接收到该服务提供者的服务信息,其中,服务信息可包括:本机IP地址、端口信息和服务类型。进一步的,可基于服务信息生成注册列表,在根据服务提供者的服务信息生成注册列表时,可利用Kubernetes API将自己的本机IP地址、端口信息和服务类型发起注册,Kubernetes的Ectd注册中心会记录并存储这些信息,以便服务消费者可以从Ectd注册中心中查询到服务提供者的网络地址,并使用该地址来远程调用服务提供者的接口。相应的,实施例步骤101具体可以包括:利用Kubernetes API将服务提供者的本机IP地址、端口信息和服务类型,发送至Kubernetes的Ectd注册中心,利用Ectd注册中心生成包含至少一个服务提供者对应实例节点的注册列表。
作为一种可选方式,为确保注册列表中的服务提供者处于运行状态,可以被服务消费者远程调用,故在创建生成注册列表后,可通过心跳机制,每隔一定的时间间隔(如30s)获取服务提供者上传的注册心跳,如果在连续预设时长(如60s)内,未接收到同一服务提供者上传的注册心跳,则可判断该服务提供者的服务状态异常。进而可从注册列表中剔除该服务状态异常的服务提供者。相应的,为通过对注册列表中的服务提供者的服务健康状态检测,实现对注册列表的动态更新,实施例步骤具体还可以包括:利用云原生微服务平台接收注册列表中各个服务提供者上传的心跳状态信息,并根据心跳状态信息确定异常服务提供者,在注册列表中剔除异常服务提供者。
102、响应于服务消费者发送的服务调用请求,利用Kubernetes API根据注册列表查取服务列表,服务调用请求中携带有待创建连接的目标服务类型,服务列表中包含与目标服务类型匹配的目标服务提供者。
其中,服务消费者为需要调用已注册到云原生微服务平台中任一服务提供者的服务。
其中,服务调用请求中可携带有待创建连接的目标服务类型。对于本实施例,在响应于服务消费者发送的服务调用请求,利用Kubernetes API根据注册列表查取服务列表时,实施例步骤102具体可以包括:调用Kubernetes API在Ectd注册中心所包含的注册列表中查取与目标服务类型匹配的服务列表,服务列表包含至少一个服务提供者的本机IP地址、端口信息。
103、利用云原生微服务平台创建服务消费者与目标服务提供者的服务调用连接,以基于服务调用连接实现服务消费者对目标服务提供者的快速远程服务调用。
其中,目标服务提供者为在服务列表中提取出的与服务消费者所发起服务调用请求适配的服务提供者。
在具体的应用场景中,在执行本实施例步骤之前,可通过云原生服务治理框架中预设的负载均衡策略实现对目标服务提供者的筛选,以保证即使是在负载很重的情况下,目标服务提供者也能做出快速响应。相应的,实施例步骤具体可以包括:根据本机IP地址和端口信息以及云原生服务治理框架中预设的负载均衡策略,在服务列表中筛选出与服务消费者创建服务调用连接的目标服务提供者。
其中,负载均衡策略可包括均衡策略,比重策略等。当负载均衡策略对应为均衡策略时,示例性的,可获取服务列表中各个服务提供者的属性累计值,属性累计值用于表示在预设时间段内执行服务调用的累计次数;将服务列表中对应属性累计值最小的服务提供者确定为目标服务提供者;当负载均衡策略对应为比重策略时,可确定服务列表中所有服务提供者在预设时间段内的最大服务总量,以及各个服务提供者的最大服务比重;根据最大服务总量和最大服务比重计算各个服务提供者的最大服务次数;按照最大服务次数随机生成小于或等于最大服务总量的服务调度队列;将当前时刻服务调度队列中的首个服务提供者确定为目标服务提供者,并在服务调度队列中剔除。
在具体的应用场景中,在筛选出目标服务提供者,以及完成服务消费者与目标服务提供者的服务调用连接创建后,在实现基于服务调用连接实现服务消费者对目标服务提供者的快速远程服务调用时,实施例步骤103具体可以包括:利用Thrift框架根据服务调用连接以及Thrift原生协议,远程调用目标服务提供者。
104、利用GraalVM的native-image命令构建服务提供者和服务消费者的本地原生可执行代码,将本地原生可执行代码部署运行在云原生微服务平台上,用于降低服务提供者和服务消费者的运行内存,实现云原生微服务平台中的快速动态弹性扩缩容。
本申请实施例提供的一种基于云原生的服务治理方法,与目前基于云原生的服务治理相比,本申请可基于云原生实现服务注册与服务发现、云服务调用以及生成本地原生可执行代码以提高云原生可执行能力。具体的,在实现云服务调用时,可利用云原生微服务平台接收服务提供者的服务信息,并基于服务信息生成注册列表,云原生微服务平台是基于Kubernetes云管理平台以及JSR-269技术构建在机器内部的,用于实现服务注册与服务发现,机器包括物理机和/或虚拟机;响应于服务消费者发送的服务调用请求,利用Kubernetes API根据注册列表查取服务列表,服务调用请求中携带有待创建连接的目标服务类型,服务列表中包含与目标服务类型匹配的目标服务提供者;利用云原生微服务平台创建服务消费者与目标服务提供者的服务调用连接,以基于服务调用连接实现服务消费者对目标服务提供者的快速远程服务调用。相应的,在生成本地原生可执行代码时,可利用GraalVM的native-image命令构建服务提供者和服务消费者的本地原生可执行代码,将本地原生可执行代码部署运行在云原生微服务平台上,用于降低服务提供者和服务消费者的运行内存,实现云原生微服务平台中的快速动态弹性扩缩容。本申请中的技术方案,通过云原生的服务注册发现,可减少三方依赖和中间件部署,在云原生环境(Kubernetes)下使用其已有的服务发现方式,减少额外部署其他服务发现组件;基于Thrift框架进行构建,跨语言能力上使用已有能力,以及依赖Thrift框架在上述服务发现基础上实现客户端的负载均衡,改造Thrift框架并实现隐式传参和监控。另外在部署阶段可以使用GraalVM的native-image方式构建为本地可执行文件,大大减少内存使用以及启动速度,实现云原生微服务平台中的快速动态弹性扩缩容,提升资源利用率,从而有效起到提升服务治理效果、节约成本的目的。
进一步的,作为对图3所示方法的实现,本发明实施例提供了一种基于云原生的服务治理装置,如图4所示,该装置可应用于云原生服务治理框架,云原生服务治理框架为引入了云原生微服务平台的Microwave Framework框架和Thrift框架,装置包括:第一生成模块21、查取模块22、创建模块23、第二生成模块24;
第一生成模块21,可用于利用云原生微服务平台接收服务提供者的服务信息,并基于服务信息生成注册列表,云原生微服务平台是基于Kubernetes云管理平台以及JSR-269技术构建在机器内部的,用于实现服务注册与服务发现,机器包括物理机和/或虚拟机;
查取模块22,可用于响应于服务消费者发送的服务调用请求,利用KubernetesAPI根据注册列表查取服务列表,服务调用请求中携带有待创建连接的目标服务类型,服务列表中包含与目标服务类型匹配的目标服务提供者;
创建模块23,可用于利用云原生微服务平台创建服务消费者与目标服务提供者的服务调用连接,以基于服务调用连接实现服务消费者对目标服务提供者的快速远程服务调用;
第二生成模块24,可用于利用GraalVM的native-image命令生成服务提供者和服务消费者的本地原生可执行代码,将本地原生可执行代码部署运行在云原生微服务平台上,用于降低服务提供者和服务消费者的运行内存,实现云原生微服务平台中的快速动态弹性扩缩容。
在具体的应用场景中,如图4所示,该装置还可包括:部署模块25;
部署模块25,可用于编写Thrift IDL文件并生成约定接口代码,将约定接口代码存储至私服仓库,以便服务提供者和服务提供者通过在私服仓库中导入约定接口代码,实现对云原生服务治理框架的依赖配置,以在云原生服务治理框架中部署基于JSR269AbstractProcessor API生成的第一服务治理代码和第二服务治理代码,其中,第一服务治理代码用于支持服务提供者在云原生服务治理框架中的服务暴露,第二服务治理代码用于支持服务消费者利用Kubernetes API进行对所暴露服务的远程调用。
在具体的应用场景中,服务信息包括:本机IP地址、端口信息和服务类型;相应的,第一生成模块21,可用于利用Kubernetes API将服务提供者的本机IP地址、端口信息和服务类型,发送至Kubernetes的Ectd注册中心,利用Ectd注册中心生成包含至少一个服务提供者对应实例节点的注册列表。
在具体的应用场景中,服务调用请求中携带有待创建连接的目标服务类型;查取模块22,可用于调用Kubernetes API在Ectd注册中心所包含的注册列表中查取与目标服务类型匹配的服务列表,服务列表包含至少一个服务提供者的本机IP地址、端口信息。
在具体的应用场景中,如图4所示,该装置还可包括:筛选模块26;
筛选模块26,可用于根据本机IP地址和端口信息以及云原生服务治理框架中预设的负载均衡策略,在服务列表中筛选出与服务消费者创建服务调用连接的目标服务提供者。
在具体的应用场景中,如图4所示,该装置还可包括:剔除模块27;
剔除模块27,可用于利用云原生微服务平台接收注册列表中各个服务提供者上传的心跳状态信息,并根据心跳状态信息确定异常服务提供者,在注册列表中剔除异常服务提供者。
基于上述如图3所示方法,相应的,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如图3所示的方法。
基于上述如图3所示方法和如图4所示装置的实施例,本发明实施例还提供了一种计算机设备的实体结构图,如图5所示,该计算机设备包括:处理器41、存储器42、及存储在存储器42上并可在处理器上运行的计算机程序,其中存储器42和处理器41均设置在总线43上处理器41执行程序时实现如图3所示的方法。
通过本发明的技术方案,可基于云原生实现服务注册与服务发现、云服务调用以及生成本地原生可执行代码以提高云原生可执行能力。具体的,在实现云服务调用时,可利用云原生微服务平台接收服务提供者的服务信息,并基于服务信息生成注册列表,云原生微服务平台是基于Kubernetes云管理平台以及JSR-269技术构建在机器内部的,用于实现服务注册与服务发现,机器包括物理机和/或虚拟机;响应于服务消费者发送的服务调用请求,利用Kubernetes API根据注册列表查取服务列表,服务调用请求中携带有待创建连接的目标服务类型,服务列表中包含与目标服务类型匹配的目标服务提供者;利用云原生微服务平台创建服务消费者与目标服务提供者的服务调用连接,以基于服务调用连接实现服务消费者对目标服务提供者的快速远程服务调用。相应的,在生成本地原生可执行代码时,可利用GraalVM的native-image命令构建服务提供者和服务消费者的本地原生可执行代码,将本地原生可执行代码部署运行在云原生微服务平台上,用于降低服务提供者和服务消费者的运行内存,实现云原生微服务平台中的快速动态弹性扩缩容。本申请中的技术方案,通过云原生的服务注册发现,可减少三方依赖和中间件部署,在云原生环境(Kubernetes)下使用其已有的服务发现方式,减少额外部署其他服务发现组件;基于Thrift框架进行构建,跨语言能力上使用已有能力,以及依赖Thrift框架在上述服务发现基础上实现客户端的负载均衡,改造Thrift框架并实现隐式传参和监控。另外在部署阶段可以使用GraalVM的native-image方式构建为本地可执行文件,大大减少内存使用以及启动速度,实现云原生微服务平台中的快速动态弹性扩缩容,提升资源利用率,从而有效起到提升服务治理效果、节约成本的目的。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (10)
1.一种基于云原生的服务治理方法,其特征在于,应用于云原生服务治理框架,所述云原生服务治理框架为引入了云原生微服务平台的Microwave Framework框架和Thrift框架,所述方法包括:
利用所述云原生微服务平台接收服务提供者的服务信息,并基于所述服务信息生成注册列表,所述云原生微服务平台是基于Kubernetes云管理平台以及JSR-269技术构建在机器内部的,用于实现服务注册与服务发现,所述机器包括物理机和/或虚拟机;
响应于服务消费者发送的服务调用请求,利用KubernetesAPI根据所述注册列表查取服务列表,所述服务调用请求中携带有待创建连接的目标服务类型,所述服务列表中包含与所述目标服务类型匹配的目标服务提供者;
利用所述云原生微服务平台创建所述服务消费者与所述目标服务提供者的服务调用连接,以基于所述服务调用连接实现所述服务消费者对所述目标服务提供者的快速远程服务调用;
利用GraalVM的native-image命令构建所述服务提供者和所述服务消费者的本地原生可执行代码,将所述本地原生可执行代码部署运行在所述云原生微服务平台上,用于降低所述服务提供者和所述服务消费者的运行内存,实现所述云原生微服务平台中的快速动态弹性扩缩容。
2.根据权利要求1所述的方法,其特征在于,在利用所述云原生微服务平台接收服务提供者的服务信息,并基于所述服务信息生成注册列表之前,还包括:
编写Thrift IDL文件并生成约定接口代码,将所述约定接口代码存储至私服仓库,以便所述服务提供者和所述服务提供者通过在所述私服仓库中导入所述约定接口代码,实现对所述云原生服务治理框架的依赖配置,以在所述云原生服务治理框架中部署基于JSR269AbstractProcessorAPI生成的第一服务治理代码和第二服务治理代码,其中,所述第一服务治理代码用于支持所述服务提供者在所述云原生服务治理框架中的服务暴露,所述第二服务治理代码用于支持所述服务消费者利用所述KubernetesAPI进行对所暴露服务的远程调用。
3.根据权利要求1所述的方法,其特征在于,所述服务信息包括:本机IP地址、端口信息和服务类型,基于所述服务信息生成注册列表,包括:
利用KubernetesAPI将所述服务提供者的本机IP地址、端口信息和服务类型,发送至Kubernetes的Ectd注册中心,利用所述Ectd注册中心生成包含至少一个服务提供者对应实例节点的注册列表。
4.根据权利要求3所述的方法,其特征在于,所述服务调用请求中携带有待创建连接的目标服务类型;
所述响应于服务消费者发送的服务调用请求,利用KubernetesAPI在所述注册列表中查取服务列表,包括:
调用Kubernetes API在所述Ectd注册中心所包含的注册列表中查取与所述目标服务类型匹配的服务列表,所述服务列表包含至少一个服务提供者的本机IP地址、端口信息。
5.根据权利要求4所述的方法,其特征在于,在所述利用所述云原生微服务平台创建所述服务消费者与所述目标服务提供者的服务调用连接之前,还包括:
根据所述本机IP地址和所述端口信息以及所述云原生服务治理框架中预设的负载均衡策略,在所述服务列表中筛选出与所述服务消费者创建服务调用连接的目标服务提供者。
6.根据权利要求1所述的方法,其特征在于,所在利用所述云原生微服务平台创建所述服务消费者与所述目标服务提供者的服务调用连接之后,还包括:
利用所述Thrift框架根据所述服务调用连接以及Thrift原生协议,远程调用所述目标服务提供者。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
利用所述云原生微服务平台接收所述注册列表中各个服务提供者上传的心跳状态信息,并根据所述心跳状态信息确定异常服务提供者,在所述注册列表中剔除所述异常服务提供者。
8.一种基于云原生的服务治理装置,其特征在于,应用于云原生服务治理框架,所述云原生服务治理框架为引入了云原生微服务平台的Microwave Framework框架和Thrift框架,所述装置包括:
第一生成模块,用于利用所述云原生微服务平台接收服务提供者的服务信息,并基于所述服务信息生成注册列表,所述云原生微服务平台是基于Kubernetes云管理平台以及JSR-269技术构建在机器内部的,用于实现服务注册与服务发现,所述机器包括物理机和/或虚拟机;
查取模块,用于响应于服务消费者发送的服务调用请求,利用Kubernetes API根据所述注册列表查取服务列表,所述服务调用请求中携带有待创建连接的目标服务类型,所述服务列表中包含与所述目标服务类型匹配的目标服务提供者;
创建模块,用于利用所述云原生微服务平台创建所述服务消费者与所述目标服务提供者的服务调用连接,以基于所述服务调用连接实现所述服务消费者对所述目标服务提供者的快速远程服务调用;
第二生成模块,用于利用GraalVM的native-image命令生成所述服务提供者和所述服务消费者的本地原生可执行代码,将所述本地原生可执行代码部署运行在所述云原生微服务平台上,用于降低所述服务提供者和所述服务消费者的运行内存,实现所述云原生微服务平台中的快速动态弹性扩缩容。
9.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的基于云原生的服务治理方法。
10.一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的基于云原生的服务治理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210181009.1A CN114640610B (zh) | 2022-02-25 | 2022-02-25 | 基于云原生的服务治理方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210181009.1A CN114640610B (zh) | 2022-02-25 | 2022-02-25 | 基于云原生的服务治理方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114640610A true CN114640610A (zh) | 2022-06-17 |
CN114640610B CN114640610B (zh) | 2023-10-20 |
Family
ID=81947785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210181009.1A Active CN114640610B (zh) | 2022-02-25 | 2022-02-25 | 基于云原生的服务治理方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114640610B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145683A (zh) * | 2022-06-22 | 2022-10-04 | 北京火山引擎科技有限公司 | 云服务实现方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108471366A (zh) * | 2018-02-02 | 2018-08-31 | 深圳市康拓普信息技术有限公司 | 一种面向云原生应用的立体监控系统 |
CN109788040A (zh) * | 2018-12-27 | 2019-05-21 | 北京航天智造科技发展有限公司 | 微服务授权与调度方法和系统 |
CN110457086A (zh) * | 2019-07-31 | 2019-11-15 | 维沃移动通信有限公司 | 一种应用程序的控制方法、移动终端及服务器 |
CN110557357A (zh) * | 2018-05-31 | 2019-12-10 | 华为技术有限公司 | 一种远程过程调用协议自适应方法、相关装置及服务器 |
CN111010304A (zh) * | 2019-12-23 | 2020-04-14 | 浪潮云信息技术有限公司 | 一种Dubbo服务与Kubernetes系统集成的方法 |
CN112000434A (zh) * | 2020-08-14 | 2020-11-27 | 苏州浪潮智能科技有限公司 | 一种基于Kubernetes动态管理服务治理规则配置方法和系统 |
US20210132959A1 (en) * | 2019-10-31 | 2021-05-06 | Red Hat, Inc. | Bootstrapping frameworks from a generated static initialization method for faster booting |
CN113010174A (zh) * | 2019-12-19 | 2021-06-22 | 北京沃东天骏信息技术有限公司 | 业务监控的方法和装置 |
US20210342252A1 (en) * | 2020-04-30 | 2021-11-04 | Red Hat, Inc. | Debugging a native compiled application from an integrated development environment |
US11188364B1 (en) * | 2020-08-28 | 2021-11-30 | International Business Machines Corporation | Compilation strategy for a sharable application snapshot |
-
2022
- 2022-02-25 CN CN202210181009.1A patent/CN114640610B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108471366A (zh) * | 2018-02-02 | 2018-08-31 | 深圳市康拓普信息技术有限公司 | 一种面向云原生应用的立体监控系统 |
CN110557357A (zh) * | 2018-05-31 | 2019-12-10 | 华为技术有限公司 | 一种远程过程调用协议自适应方法、相关装置及服务器 |
CN109788040A (zh) * | 2018-12-27 | 2019-05-21 | 北京航天智造科技发展有限公司 | 微服务授权与调度方法和系统 |
CN110457086A (zh) * | 2019-07-31 | 2019-11-15 | 维沃移动通信有限公司 | 一种应用程序的控制方法、移动终端及服务器 |
US20210132959A1 (en) * | 2019-10-31 | 2021-05-06 | Red Hat, Inc. | Bootstrapping frameworks from a generated static initialization method for faster booting |
CN113010174A (zh) * | 2019-12-19 | 2021-06-22 | 北京沃东天骏信息技术有限公司 | 业务监控的方法和装置 |
CN111010304A (zh) * | 2019-12-23 | 2020-04-14 | 浪潮云信息技术有限公司 | 一种Dubbo服务与Kubernetes系统集成的方法 |
US20210342252A1 (en) * | 2020-04-30 | 2021-11-04 | Red Hat, Inc. | Debugging a native compiled application from an integrated development environment |
CN112000434A (zh) * | 2020-08-14 | 2020-11-27 | 苏州浪潮智能科技有限公司 | 一种基于Kubernetes动态管理服务治理规则配置方法和系统 |
US11188364B1 (en) * | 2020-08-28 | 2021-11-30 | International Business Machines Corporation | Compilation strategy for a sharable application snapshot |
Non-Patent Citations (2)
Title |
---|
丁乙;李荣宽;汪敏;贲婷婷;朱勇;: "面向军用微服务的服务网格架构研究与设计", 指挥信息系统与技术, no. 01 * |
李文信;齐恒;徐仁海;周晓波;李克秋;: "数据中心网络流量调度的研究进展与趋势", 计算机学报, no. 04 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145683A (zh) * | 2022-06-22 | 2022-10-04 | 北京火山引擎科技有限公司 | 云服务实现方法及装置 |
CN115145683B (zh) * | 2022-06-22 | 2024-05-28 | 北京火山引擎科技有限公司 | 云服务实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114640610B (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9785476B2 (en) | Endpoint management system and virtual compute system | |
CN105468362B (zh) | 应用部署方法和云计算系统 | |
CN112035228B (zh) | 一种资源调度方法及装置 | |
US7640332B2 (en) | System and method for hot deployment/redeployment in grid computing environment | |
US8103760B2 (en) | Dynamic provisioning of service components in a distributed system | |
US20170171026A1 (en) | Configuring a cloud from aggregate declarative configuration data | |
EP3913859A1 (en) | Vnf life cycle management method and apparatus | |
CN111026414B (zh) | 一种基于kubernetes的HDP平台部署方法 | |
US11106641B2 (en) | Supporting graph database backed object unmarshalling | |
US10397051B1 (en) | Configuration and testing of network-based service platform resources using a service platform specific language | |
CN111045833B (zh) | 接口调用的方法和装置 | |
CN112311786B (zh) | 一种服务请求处理方法、装置、存储介质及计算设备 | |
CN111124589B (zh) | 一种服务发现系统、方法、装置及设备 | |
US11321090B2 (en) | Serializing and/or deserializing programs with serializable state | |
US20220156097A1 (en) | Systems and methods to pre-provision sockets for serverless functions | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
CN109104368B (zh) | 一种请求连接方法、装置、服务器及计算机可读存储介质 | |
CN112463290A (zh) | 动态调整计算容器的数量的方法、系统、装置和存储介质 | |
CN115103012B (zh) | 一种地理空间信息微服务集成系统及方法 | |
US11647103B1 (en) | Compression-as-a-service for data transmissions | |
US11314601B1 (en) | Automated capture and recovery of applications in a function-as-a-service environment | |
CN114640610A (zh) | 基于云原生的服务治理方法、装置及存储介质 | |
CN116204239A (zh) | 业务处理方法、装置和计算机可读存储介质 | |
US11379256B1 (en) | Distributed monitoring agent deployed at remote site | |
Ivanović et al. | A scalable distributed architecture for client and server-side software agents |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100102 201 / F, block C, 2 lizezhong 2nd Road, Chaoyang District, Beijing Applicant after: Beijing Shuidi Technology Group Co.,Ltd. Address before: 100102 201, 2 / F, block C, No.2 lizezhong 2nd Road, Chaoyang District, Beijing Applicant before: Beijing Health Home Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |