服务聚合方法、装置、电子设备以及计算机可读存储介质转让专利

申请号 : CN202110874780.2

文献号 : CN113726855B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 柯登科

申请人 : 北京奇艺世纪科技有限公司

摘要 :

本发明实施例提供了一种服务聚合方法、装置、电子设备以及计算机可读存储介质,该方法提供定义对象用于定义聚合服务对应的基础服务的启动参数,通过部署可以对定义对象的更新事件进行监听的控制器,在定义对象发生更新事件的情况下,可以直接通过控制器创建包括至少一个基础服务的调用接口的模板服务,并根据定义对象定义的启动参数在模板服务中聚合对应的基础服务的调用接口,从而可以对聚合服务对应的基础服务进行聚合,此时,只需要通过定义对象定义聚合服务对应基础服务的启动参数,即可创建包括该基础服务的聚合服务,无需手动开发聚合服务,降低了服务开发、维护的成本,提高了服务开发的效率。

权利要求 :

1.一种服务聚合方法,其特征在于,所述方法包括:部署定义对象对应的控制器,所述定义对象用于定义聚合服务对应的至少一个基础服务的启动参数;

在所述控制器监听到所述定义对象发生更新事件的情况下,通过所述控制器新建模板服务,所述模板服务中包括至少一个基础服务的调用接口;

在所述模板服务中聚合所述启动参数对应所述基础服务的所述调用接口,以对所述聚合服务对应的基础服务进行聚合,所述聚合服务是通过聚合接口实现的,所述聚合接口在被访问时分别访问所述启动参数对应所述基础服务的所述调用接口,并聚合各所述基础服务的访问结果返回。

2.根据权利要求1所述的方法,其特征在于,所述定义对象还用于定义所述聚合服务的访问路径,所述在所述模板服务中启动所述启动参数对应所述基础服务的所述调用接口,以对所述聚合服务对应的基础服务进行聚合之后,还包括:通过所述控制器创建转发对象,所述转发对象用于根据所述访问路径向所述聚合服务转发流量。

3.根据权利要求1所述的方法,其特征在于,所述通过所述控制器新建模板服务之前还包括:在模板服务中封装至少一个基础服务的调用接口;

将所述模板服务打包成模板服务镜像;

所述通过所述控制器新建模板服务,包括:

通过所述控制器根据所述模板服务镜像新建所述模板服务。

4.根据权利要求1所述的方法,其特征在于,所述部署定义对象对应的控制器之后,还包括:将所述控制器打包成控制器镜像。

5.根据权利要求1所述的方法,其特征在于,所述更新事件包括增加事件、删除事件和修改事件中的至少一种。

6.一种服务聚合装置,其特征在于,所述装置包括:控制器部署模块,用于部署定义对象对应的控制器,所述定义对象用于定义聚合服务对应的至少一个基础服务的启动参数;

模板服务创建模块,用于在所述控制器监听到所述定义对象发生更新事件的情况下,通过所述控制器新建模板服务,所述模板服务中包括至少一个基础服务的调用接口;

基础服务聚合模块,用于在所述模板服务中聚合所述启动参数对应所述基础服务的所述调用接口,以对所述聚合服务对应的基础服务进行聚合,所述聚合服务是通过聚合接口实现的,所述聚合接口在被访问时分别访问所述启动参数对应所述基础服务的所述调用接口,并聚合各所述基础服务的访问结果返回。

7.根据权利要求6所述的装置,其特征在于,所述定义对象还用于定义所述聚合服务的访问路径,所述装置还包括:转发对象创建模块,用于通过所述控制器创建转发对象,所述转发对象用于根据所述访问路径向所述聚合服务转发流量。

8.根据权利要求6所述的装置,其特征在于,所述装置还包括:基础服务封装模块,用于在模板服务中封装至少一个基础服务的调用接口;

模板服务打包模块,用于将所述模板服务打包成模板服务镜像;

所述模板服务创建模块,具体用于通过所述控制器根据所述模板服务镜像新建所述模板服务。

9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现权利要求1~5任一所述的方法步骤。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1~5中任一所述的方法。

说明书 :

服务聚合方法、装置、电子设备以及计算机可读存储介质

技术领域

[0001] 本发明涉及计算机技术领域,特别是涉及一种服务聚合方法、装置、电子设备以及计算机可读存储介质。

背景技术

[0002] 随着网络业务的丰富发展,同一业务服务可能需要调用多个基础服务,而不同业务服务调用的基础服务可能相同,也可能不同。如社交账号中可能存在用户原创、名人认证、信用分、粉丝、评论等多个基础服务,有的业务服务中需要用户原创、名人认证等基础服务的数据,有的业务服务中需要用户原创、信用分等基础服务的数据。
[0003] 当前,为了满足不同业务服务的要求,需要开发人员手动开发业务服务对应的代理接口,通过该代理接口逐个请求业务服务对应多个的基础服务,从而获得对应的结果,多个基础服务的结果聚合后返回前端,从而得到业务服务对应的聚合结果。
[0004] 但是,针对不同的每个业务服务手动开发代理接口,使得业务服务开发、维护成本高,效率低。

发明内容

[0005] 本发明实施例的目的在于提供一种服务聚合方法、装置、电子设备以及计算机可读存储介质,以实现降低多个基础服务对应的业务服务开发、维护成本,提高效率的效果。具体技术方案如下:
[0006] 在本发明实施的第一方面,首先提供了一种服务聚合方法,该方法可以包括:
[0007] 部署定义对象对应的控制器,所述定义对象用于定义聚合服务对应的至少一个基础服务的启动参数;
[0008] 在所述控制器监听到所述定义对象发生更新事件的情况下,通过所述控制器新建模板服务,所述模板服务中包括至少一个基础服务的调用接口;
[0009] 在所述模板服务中聚合所述启动参数对应所述基础服务的所述调用接口,以对所述聚合服务对应的基础服务进行聚合。
[0010] 可选地,所述定义对象还用于定义所述聚合服务的访问路径,所述在所述模板服务中启动所述启动参数对应所述基础服务的所述调用接口,以对所述聚合服务对应的基础服务进行聚合之后,还包括:
[0011] 通过所述控制器创建转发对象,所述转发对象用于根据所述访问路径向所述聚合服务转发流量。
[0012] 可选地,所述通过所述控制器新建模板服务之前还包括:
[0013] 在模板服务中封装至少一个基础服务的调用接口;
[0014] 将所述模板服务打包成模板服务镜像;
[0015] 所述通过所述控制器新建模板服务,包括:
[0016] 通过所述控制器根据所述模板服务镜像新建所述模板服务。
[0017] 可选地,所述部署定义对象对应的控制器之后,还包括:
[0018] 将所述控制器打包成控制器镜像。
[0019] 可选地,所述更新事件包括增加事件、删除事件和修改事件中的至少一种。
[0020] 在本发明实施的第二方面,还提供了一种服务聚合装置,该装置可以包括:
[0021] 控制器部署模块,用于部署定义对象对应的控制器,所述定义对象用于定义聚合服务对应的至少一个基础服务的启动参数;
[0022] 模板服务创建模块,用于在所述控制器监听到所述定义对象发生更新事件的情况下,通过所述控制器新建模板服务,所述模板服务中包括至少一个基础服务的调用接口;
[0023] 基础服务聚合模块,用于在所述模板服务中聚合所述启动参数对应所述基础服务的所述调用接口,以对所述聚合服务对应的基础服务进行聚合。
[0024] 可选地,所述定义对象还用于定义所述聚合服务的访问路径,所述装置还包括:
[0025] 转发对象创建模块,用于通过所述控制器创建转发对象,所述转发对象用于根据所述访问路径向所述聚合服务转发流量。
[0026] 可选地,所述装置还包括:
[0027] 基础服务封装模块,用于在模板服务中封装至少一个基础服务的调用接口;
[0028] 模板服务打包模块,用于将所述模板服务打包成模板服务镜像;
[0029] 所述模板服务创建模块,具体用于通过所述控制器根据所述模板服务镜像新建所述模板服务。
[0030] 可选地,所述装置还包括:
[0031] 控制器打包模块,用于将所述控制器打包成控制器镜像。
[0032] 可选地,所述更新事件包括增加事件、删除事件和修改事件中的至少一种。
[0033] 在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的服务聚合方法。
[0034] 在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的服务聚合方法。
[0035] 本发明实施例提供的定义对象用于定义聚合服务对应的基础服务的启动参数,通过部署可以对定义对象的更新事件进行监听的控制器,在定义对象发生更新事件的情况下,可以直接通过控制器创建包括至少一个基础服务的调用接口的模板服务,并根据定义对象定义的启动参数在模板服务中聚合对应的基础服务的调用接口,从而可以对聚合服务对应的基础服务进行聚合,此时,只需要通过定义对象定义聚合服务对应基础服务的启动参数,即可创建包括该基础服务的聚合服务,无需手动开发聚合服务,降低了服务开发、维护的成本,提高了服务开发的效率。

附图说明

[0036] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
[0037] 图1是本发明实施例提供的一种服务聚合方法的步骤流程图;
[0038] 图2是本发明实施例提供的另一种服务聚合方法的步骤流程图;
[0039] 图3是本发明实施例提供的一种服务聚合方的操作实例流程示意图;
[0040] 图4是本发明实施例提供的一种外部流量访问聚合服务的访问路径示意图;
[0041] 图5是本发明实施例提供的一种服务聚合装置的结构框图;
[0042] 图6是本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

[0043] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
[0044] 图1是本发明实施例提供的一种服务聚合方法的步骤流程图,如图1所示,该方法可以包括:
[0045] 步骤101、部署定义对象对应的控制器,所述定义对象用于定义聚合服务对应的至少一个基础服务的启动参数。
[0046] 本发明实施例中,控制器用于在Kubernetes(k8s)集群中监听至少一种k8s资源,并控制该资源的当前状态接近该资源对象定义的期望状态,其中,k8s集群是一个可移植的、可扩展的资源平台,用于管理容器化的工作负载和服务,可以实现声明式的自动化配置;k8s资源可以是k8s集群中不同内容的抽象,如k8s资源可以是ervice(服务)、node(节点)、deployment(配置)等等,对象则为前述资源的实例,是持久化的实体,用来具体的定义资源的期望状态。
[0047] 本发明实施例中,聚合服务是可以提供至少一个基础服务的信息的服务,根据业务需求可以通过访问聚合服务直接获得至少两个基础服务的聚合结果,无需逐个访问不同的基础服务,而基础服务是k8s集群中预先配置的可供不同聚合服务重复调用的、实现基础功能的服务,不同的基础服务具有对应的启动参数;此时,定义对象可以指k8s集群中服务资源的对象,通过在定义对象中定义聚合服务对应的基础服务的启动参数,从而能够定义聚合服务的期望状态为对启动参数对应的基础服务进行聚合,此时,可以在k8s集群中预先部署定义对象对应的控制器,以使控制器对定义对象进行监听,从而控制服务资源的状态,可选地,启动参数可以是基础服务对应的名称、地址等。
[0048] 步骤102、在所述控制器监听到所述定义对象发生更新事件的情况下,通过所述控制器新建模板服务,所述模板服务中包括至少一个基础服务的调用接口。
[0049] 本发明实施例中,控制器可以对定义对象进行监听,以确定定义对象是否发生更新事件,在定义对象发生更新事件的情况下,控制器可以确定聚合服务的期望状态发生变化,此时,可以通过控制器创建新的模板服务,模板服务可以指封装至少一个基础服务的服务,具体的,可以在模板服务中隐藏至少一个基础服务的属性和实现细节,并公开该基础服务的调用接口,使得通过调用接口聚合、调用对应的基础服务时无需了解其属性和实现细节,并限制了对基础方服务的公开读取、修改,在增强数据安全性的基础上,有效简化了服务开发流程,提高了服务开发的效率。
[0050] 步骤103、在所述模板服务中聚合所述启动参数对应所述基础服务的所述调用接口,以对所述聚合服务对应的基础服务进行聚合。
[0051] 本发明实施例中,模板服务可以根据定义对象中定义的启动参数对基础服务的调用接口进行聚合,具体的,可以定义聚合服务对应的聚合接口,该聚合接口被访问时能够分别访问启动参数对应的基础服务的调用接口,并聚合各基础服务的访问结果返回,从而通过该聚合接口实现聚合至少一个基础服务的聚合服务。
[0052] 本发明实施例提供的定义对象用于定义聚合服务对应的基础服务的启动参数,通过部署可以对定义对象的更新事件进行监听的控制器,在定义对象发生更新事件的情况下,可以直接通过控制器创建包括至少一个基础服务的调用接口的模板服务,并根据定义对象定义的启动参数在模板服务中聚合对应的基础服务的调用接口,从而可以对聚合服务对应的基础服务进行聚合,此时,只需要通过定义对象定义聚合服务对应基础服务的启动参数,即可创建包括该基础服务的聚合服务,无需手动开发聚合服务,降低了服务开发、维护的成本,提高了服务开发的效率。
[0053] 图2是本发明实施例提供的另一种服务聚合方法的步骤流程图,如图2所示,该方法可以包括:
[0054] 步骤201、部署定义对象对应的控制器,所述定义对象用于定义聚合服务对应的至少一个基础服务的启动参数。
[0055] 本发明实施例中,步骤201可对应参照步骤101的相关描述,具体的,可以先在k8s集群中创建CRD(Custom Resource Definition,自定义资源类型),再编写控制器对应的执行逻辑代码,如通过执行逻辑代码定义监听的事件类型、以及定义根据不同事件执行的操作等,从而创建定义对象对应的控制器。
[0056] 可选地,所述步骤201之后,还包括:
[0057] 步骤S11、将所述控制器打包成控制器镜像。
[0058] 本发明实施例中,可以将定义对象对应的控制器打包成控制器镜像,在使用时基于控制器镜像在集群中部署控制器,从而无需在每次部署时进行控制器的开发,简化了控制器的部署操作,提高了服务开发的效率。可选地,depolyment是k8s中的一种资源类型,可以将镜像部署到集群中运行,此时,可以通过depolyment的方式根据控制器镜像在集群中部署控制器。
[0059] 步骤202、在模板服务中封装至少一个基础服务的调用接口。
[0060] 本发明实施例中,可以预先开发模板服务,即在模板服务中封装至少一个基础服务的调用接口,其中,模板服务中的基础服务可以包括当前所有业务中所有最基本的模块、功能,也可以根据模块、功能被不同业务重复调用的频率、时长等选择不同的基础服务;不同的基础服务可以对应唯一的启动参数,可选地,启动参数可以是基础服务的名称、编号、地址等可以唯一标识基础服务的参数,本发明实施例对此不作具体限制。
[0061] 如,可以在模板服务中分别封装有基础服务passport(通行证)、auth(认证)、interactive(互动)的调用接口,其中,passport可以提供nickname(用户昵称)、age(用户年龄)、avatar(用户头像)的信息;auth可以提供original(用户原创认证)、vertical(垂直领域认证)的信息;interactive可以提供fans(用户粉丝数量)、up(用户点赞数量)、follow(用户关注数量)的信息。
[0062] 步骤203、将所述模板服务打包成模板服务镜像。
[0063] 本发明实施例中,步骤203可以对应参照前述步骤S11的相关说明,模板服务也可以打包成模板服务镜像,可选地,可以通过dockerfile基于模板服务构建模板服务镜像,并将模板服务镜像提交到镜像仓库以便后续调用,dockerfile是一个用来构建镜像的文本文件,该文本的内容中包含了构建镜像所需的指令和说明。
[0064] 步骤204、在所述控制器监听到所述定义对象发生更新事件的情况下,通过所述控制器根据所述模板服务镜像新建所述模板服务,所述模板服务中包括至少一个基础服务的调用接口。
[0065] 本发明实施例中,步骤204可对应参照前述步骤102的相关描述,为避免重复,在此不再赘述。
[0066] 本发明实施例中,定义对象可以是通过yaml文件定义的AggregationApi(聚合接口)资源的对象,其中,可以定义聚合服务对应的基础服务的启动参数,如在yaml文件中定义ServiceList字段,ServiceList字段是一个数组对象,可以用于定义至少一个基础服务的启动参数,可选地,还可以在yaml文件中定义name字段从而定义聚合服务的名称,本发明实施例对此不做具体限制。
[0067] 本发明实施例中,在k8s集群中informer机制是一种对资源对象的当前状态进行监测的机制,此时,控制器可以通过informer机制确定资源对象的当前状态,并在定义对象中声明的期望状态与当前状态不同时确定定义对象发生更新事件,在定义对象发生更新事件的情况下,控制器可以根据模板服务镜像创建模板服务,从而无需在每次开发聚合服务时进行模板服务的封装,简化了模板服务的部署操作,提高了聚合服务开发的效率,可选地,可以通过depolyment的方式根据模板服务镜像在集群中创建模板服务。
[0068] 可选地,所述所述更新事件包括增加事件、删除事件和修改事件中的至少一种。
[0069] 本发明实施例中,定义对象的更新事件可以包括增加事件、删除事件和修改事件中的至少一种,可选地,增加事件可以是增加新的定义对象,删除事件可以是删除已有的定义对象,修改事件可以是对已有的定义对象的字段进行修改,如修改name字段或在servicelist字段中添加新的基础服务的启动参数,或删除已有的基础服务的启动参数等,本发明实施例对此不作具体限制。
[0070] 图3是本发明实施例提供的一种服务聚合方的操作实例流程示意图,如图3所示,在部署定义对象对应的控制器后,该方法可以包括:
[0071] 在k8s集群中,获取通过在yaml文件中定义以下字段创建的定义对象:
[0072]
[0073] 其中,“apiVersion”表示定义对象的资源版本,该定义对象中通过键值对定义“apiVersion”为“apps.iqiyi.com/v1alpha2”;“kind”表示资源的类型,该定义对象中通过键值对定义“kind”为“AggregationApi(聚合接口)”;“metadata”表示资源的属性,该定义对象中定义聚合服务的“name”为“Biz(业务)A”,命名空间“namespace”为“default(默认)”;“spec”表示资源的内容,该定义对象中定义聚合服务的“path”为“pathA”,以及定义该聚合服务包括启动参数“BaseServiceA”和“BaseServiceB”。
[0074] 控制器controller通过informer机制监听定义对象发生更新事件(AggregationApi Event),并对定义对象进行解析,获得启动参数。
[0075] 控制器通过deployment的方式创建(create)模板服务(template server)。
[0076] 具体的,在用户个人空间页需要展示用户头像、用户昵称、用户原创认证、垂直领域认证等信息,启动参数为基础服务的名称的情况下,可以在yaml文件中定义name字段为person_space,servicelist字段包括passport、auth;以及,
[0077] 在用户个人关注页需要展示用户头像、用户昵称、用户粉丝数量、用户关注数量等信息,启动参数为基础服务的名称的情况下,可以在yaml文件中定义name字段为follow_space,servicelist字段包括passport、interactive。
[0078] 在控制器监听到yaml文件前述更新事件的情况下,可以分别根据模板服务镜像创建封装有passport、auth、interactive的调用接口的模板服务。
[0079] 步骤205、在所述模板服务中聚合所述启动参数对应所述基础服务的所述调用接口,以对所述聚合服务对应的基础服务进行聚合。
[0080] 本发明实施例中,步骤205可对应参照前述步骤103的相关描述,为避免重复,在此不再赘述。
[0081] 本发明实施例中,可以通过控制器解析发生更新事件后的定义对象,从而获得基础服务的启动参数,并将Servicelist字段定义的启动参数传递给控制器新建的模板服务中,此时,可以在模板服务中对启动参数对应基础服务的调用接口进行聚合,并暴露对应的聚合接口,从而使得访问该聚合接口时可以获得对应基础服务的调用接口的聚合结果,此时,不同的聚合服务通过创建对应的模板服务后根据对应的启动参数聚合得到,使得不同聚合服务可以相对独立运行,相互无干扰。
[0082] 可选地,所述定义对象还用于定义所述聚合服务的访问路径。
[0083] 本发明实施例中,还可以在定义对象中定义聚合服务的访问路径,具体的为该聚合服务被访问时的请求路径,可选地,访问路径可以是聚合服务对应的URL(Uniform Resource Locator,统一资源定位器)使得集群外部能够通过访问路径请求聚合服务。
[0084] 如图3所示,该方法还可以包括:
[0085] 根据启动参数“BaseServiceA”、“BaseServiceB”在模板服务中聚合对应基础服务的调用接口,获得聚合服务(BizA)。
[0086] 具体的,封装有passport、auth、interactive的调用接口的模板服务根据servicelist字段中定义的启动参数passport、auth,对基础服务passport、auth的调用接口进行聚合,获得聚合服务person_space的聚合接口,此时,访问person_space即可获得返回的json形式的用户头像、用户昵称、用户原创认证、垂直领域认证的聚合结果;以及,[0087] 封装有passport、auth、interactive的调用接口的模板服务根据servicelist字段中定义的启动参数passport、interactive,对基础服务passport、interactive的调用接口进行聚合,获得聚合服务follow_space的聚合接口,此时,访问follow_space即可获得返回的json形式的用户头像、用户昵称、用户年龄、用户粉丝数量、用户关注数量的聚合结果。
[0088] 可选地,所述步骤205之后,还包括:
[0089] 步骤206、通过所述控制器创建转发对象,所述转发对象用于根据所述访问路径向所述聚合服务转发流量。
[0090] 本发明实施例中,在获得聚合服务,可以通过控制器创建转发对象向外部暴露该聚合服务,可选地,转发对象可以根据定义对象中path字段定义的访问路径以及聚合服务的信息创建,从而使得转发对象可以引导从网关进入的以path字段为前缀的流量通过访问路径进入聚合服务中,其中,转发对象可以是k8s中的ingress对象,ingress对象可以定义聚合服务与访问路径的匹配规则,从对可以将对应请求路径的流量转发至对应的聚合服务。可选地,在已有ingress对象的情况下,可以不创建新的ingress对象,而是将聚合服务与请求对象的访问路径更新到已有的ingress对象中,从而使得多个聚合服务可以通过一个转发对象暴露,降低了开发、维护的成本,进一步提高了业务开发的效率。
[0091] 本发明实施例中,在聚合服务较多的情况下,可以通过反向代理负载均衡器配置ingress对象定义的聚合服务与访问路径的匹配规则,以根据访问路径与聚合服务的匹配规则向聚合服务进行流量的转发,从而在转发流量的同时达到流量负载均衡的效果,提高流量的处理效率,可选地,反向代理负载均衡器可以包括nginx,haproxy,traefik等。
[0092] 如图3所示,该方法还可以包括:
[0093] 控制器在ingress对象中更新(update)访问路径“pathA”与聚合服务“BizA”的匹配规则,向k8s集群外部暴露该聚合接口。
[0094] 图4是本发明实施例提供的一种外部流量访问聚合服务的访问路径示意图,如图4所示,k8s集群外部传入访问请求(request)的数据流量,ingress nginx可以接收该数据流量,并根据聚合服务与访问路径的匹配规则,将pathA的数据流量导向聚合服务BizA,将pathB的数据流量导向聚合服务BizB,将pathC的数据流量导向聚合服务BizC。
[0095] 其中,BizA的模板服务(template server)根据启动参数聚合了BaseService(基础服务)A和BaseServiceB,则可以返回josn形式的BaseServiceA和BaseServiceB的聚合结果;BizB的模板服务根据启动参数聚合了BaseServiceA和BaseServiceC,则可以返回josn形式的BaseServiceA和BaseServiceC的聚合结果;BizC的模板服务根据启动参数聚合了BaseServiceB和BaseServiceD,则可以返回josn形式的BaseServiceB和BaseServiceD的聚合结果。
[0096] 本发明实施例中,在k8s集群中也可以采用Nodeport Service方式对聚合服务进行暴露以供外部访问,其中,Nodeport Service是通过在k8s集群每一节点的相同端口上对服务进行暴露以供外部访问集群内部服务的一种方式;或者,在部署了Istio服务网格的k8s集群中也可以采用Istio Ingress Gateway(Istio入口网关)向服务引导外部流量,在部署定义对象对应的控制器中,可以在控制器中添加VistualService(虚拟服务)配置逻辑,具体的,Ingress Gateway是Istio服务网格中重要的资源类型之一,可以用于管理网格外部引入的流量,VistualService包括流量的路由规则即聚合服务的访问路径,在创建聚合服务的过程中,可以创建Ingress Gateway并为Ingress Gateway配置包含聚合服务的访问路径的VistualService,从而可以根据访问路径转发该聚合服务对应的流量,本发明实施例对聚合服务对集群外部暴露的方式不作具体限制。
[0097] 本发明实施例提供的定义对象用于定义聚合服务对应的基础服务的启动参数,通过部署可以对定义对象的更新事件进行监听的控制器,在定义对象发生更新事件的情况下,可以直接通过控制器创建包括至少一个基础服务的调用接口的模板服务,并根据定义对象定义的启动参数在模板服务中聚合对应的基础服务的调用接口,从而可以对聚合服务对应的基础服务进行聚合,此时,只需要通过定义对象定义聚合服务对应基础服务的启动参数,即可创建包括该基础服务的聚合服务,无需手动开发聚合服务,降低了服务开发、维护的成本,提高了服务开发的效率。
[0098] 图5是本发明实施例提供的一种服务聚合装置30的结构框图,如图5所示,该装置可以包括:
[0099] 控制器部署模块301,用于部署定义对象对应的控制器,所述定义对象用于定义聚合服务对应的至少一个基础服务的启动参数;
[0100] 模板服务创建模块302,用于在所述控制器监听到所述定义对象发生更新事件的情况下,通过所述控制器新建模板服务,所述模板服务中包括至少一个基础服务的调用接口;
[0101] 基础服务聚合模块303,用于在所述模板服务中聚合所述启动参数对应所述基础服务的所述调用接口,以对所述聚合服务对应的基础服务进行聚合。
[0102] 可选地,所述定义对象还用于定义所述聚合服务的访问路径,所述装置还包括:
[0103] 转发对象创建模块,用于通过所述控制器创建转发对象,所述转发对象用于根据所述访问路径向所述聚合服务转发流量。
[0104] 可选地,所述装置还包括:
[0105] 基础服务封装模块,用于在模板服务中封装至少一个基础服务的调用接口;
[0106] 模板服务打包模块,用于将所述模板服务打包成模板服务镜像;
[0107] 所述模板服务创建模块302,具体用于通过所述控制器根据所述模板服务镜像新建所述模板服务。
[0108] 可选地,所述装置还包括:
[0109] 控制器打包模块,用于将所述控制器打包成控制器镜像。
[0110] 可选地,所述更新事件包括增加事件、删除事件和修改事件中的至少一种。
[0111] 本发明实施例提供的定义对象用于定义聚合服务对应的基础服务的启动参数,通过部署可以对定义对象的更新事件进行监听的控制器,在定义对象发生更新事件的情况下,可以直接通过控制器创建包括至少一个基础服务的调用接口的模板服务,并根据定义对象定义的启动参数在模板服务中聚合对应的基础服务的调用接口,从而可以对聚合服务对应的基础服务进行聚合,此时,只需要通过定义对象定义聚合服务对应基础服务的启动参数,即可创建包括该基础服务的聚合服务,无需手动开发聚合服务,降低了服务开发、维护的成本,提高了服务开发的效率。
[0112] 本发明实施例还提供了一种电子设备,如图6所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
[0113] 存储器403,用于存放计算机程序;
[0114] 处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:
[0115] 部署定义对象对应的控制器,所述定义对象用于定义聚合服务对应的至少一个基础服务的启动参数;
[0116] 在所述控制器监听到所述定义对象发生更新事件的情况下,通过所述控制器新建模板服务,所述模板服务中包括至少一个基础服务的调用接口;
[0117] 在所述模板服务中聚合所述启动参数对应所述基础服务的所述调用接口,以对所述聚合服务对应的基础服务进行聚合。
[0118] 可选地,所述定义对象还用于定义所述聚合服务的访问路径,所述在所述模板服务中启动所述启动参数对应所述基础服务的所述调用接口,以对所述聚合服务对应的基础服务进行聚合之后,还包括:
[0119] 通过所述控制器创建转发对象,所述转发对象用于根据所述访问路径向所述聚合服务转发流量。
[0120] 可选地,所述通过所述控制器新建模板服务之前还包括:
[0121] 在模板服务中封装至少一个基础服务的调用接口;
[0122] 将所述模板服务打包成模板服务镜像;
[0123] 所述通过所述控制器新建模板服务,包括:
[0124] 通过所述控制器根据所述模板服务镜像新建所述模板服务。
[0125] 可选地,所述部署定义对象对应的控制器之后,还包括:
[0126] 将所述控制器打包成控制器镜像。
[0127] 可选地,所述更新事件包括增加事件、删除事件和修改事件中的至少一种。
[0128] 本发明实施例提供的定义对象用于定义聚合服务对应的基础服务的启动参数,通过部署可以对定义对象的更新事件进行监听的控制器,在定义对象发生更新事件的情况下,可以直接通过控制器创建包括至少一个基础服务的调用接口的模板服务,并根据定义对象定义的启动参数在模板服务中聚合对应的基础服务的调用接口,从而可以对聚合服务对应的基础服务进行聚合,此时,只需要通过定义对象定义聚合服务对应基础服务的启动参数,即可创建包括该基础服务的聚合服务,无需手动开发聚合服务,降低了服务开发、维护的成本,提高了服务开发的效率。
[0129] 上述终端提到的通信总线可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0130] 通信接口用于上述终端与其他设备之间的通信。
[0131] 存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non‑volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0132] 上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0133] 在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的服务聚合方法。
[0134] 在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的服务聚合方法。
[0135] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
[0136] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0137] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0138] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。