一种基于云原生能力网关的场景能力编排的装置及方法转让专利

申请号 : CN202011275416.6

文献号 : CN112468463B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 薛雄龙章学武

申请人 : 福建福诺移动通信技术有限公司

摘要 :

本发明涉及一种基于云原生能力网关的场景能力编排的装置及方法,用户通过控制台配置场景能力编排脚本并保存;用户配置场景能力,并将场景能力与编排脚本关联上;用户启用场景能力服务模块,通知容器编排引擎加载场景能力服务;场景能力服务模块根据场景能力配置初始化;外部应用通过能力网关发起场景能力调用;能力网关调用鉴权中心模块对发起的场景能力进行鉴权;鉴权通过后,能力网关调用场景能力服务模块;场景能力服务模块根据外部应用请求的负载,进行空调扩缩容,并根据编排脚本映射对应的原子能力服务;最后返回编排流程中原子能力的调用结果,并返回给应用。本发明通过脚本实现,无需硬编码方式实现原子能力编排成场景能力。

权利要求 :

1.一种基于云原生能力网关的场景能力编排的方法,其特征在于:包括基于云原生能力网关的场景能力编排的装置,该装置包括能力网关、鉴权中心模块、场景能力服务模块、控制台、场景能力编排脚本仓库和场景能力脚本;用户通过所述控制台进行基于原子能力的场景能力编排,生成编排脚本,并调用场景能力脚本仓库进行更新,初始化所述场景能力服务模块;外部应用调用场景能力请求达到能力网关,所述能力网关将所有能力的调用统一接入能力网关,由网关层负责接入和输出;之后所述能力网关调用鉴权中心模块,用以通过所述鉴权中心模块实现能力生成Token、校验Token、调用鉴权和接入控制;鉴权中心模块通过鉴权后,调用场景能力服务模块,所述场景能力服务模块通过脚本编排实现场景能力,新的场景能力重新纳入能力网关管理;场景能力服务模块根据编排脚本调用原子能力,并最终返回给应用侧;

包括以下步骤:

步骤S1:用户通过控制台配置场景能力编排脚本并保存,通知场景能力编排脚本仓库;

步骤S2:用户配置场景能力,并将场景能力与编排脚本关联上;

步骤S3:用户启用场景能力服务模块,通知容器编排引擎加载场景能力服务;

步骤S4:场景能力服务模块根据场景能力配置初始化;

步骤S5:外部应用通过能力网关发起场景能力调用;

步骤S6:能力网关调用鉴权中心模块对发起的场景能力进行鉴权;

步骤S7:鉴权通过后,能力网关调用场景能力服务模块;

步骤S8:场景能力服务模块根据外部应用请求的负载,进行动态扩缩容;

步骤S9:场景能力服务模块根据编排脚本映射对应的原子能力服务,并调用多个原子能力服务;

步骤S10:最后调用编排流程步骤S9中多个原子能力,并返回调用多个原子能力后的结果给外部应用;

启动场景能力服务与动态扩缩容的具体过程为:

步骤Sa:管理员登录控制台启动新增场景能力;

步骤Sb:控制台通过API向k8s集群ApiServer发起应用部署指令;

步骤Sc:K8s集群从镜像仓库拉取场景能力服务镜像,并启动场景能力服务;

步骤Sd:能力网关接受应用发起场景能力调用,最终请求路由到场景能力,场景能力根据场景脚本仓库执行编排流程,返回场景能力调用结果给外部应用;

步骤Se:当外部应用调用场景能力负载较高,K8S根据负载加上扩缩容配置策略,针对场景能力服务进行动态扩缩容;

步骤Se中所述进行动态扩缩容的具体内容为:

K8S平台定期检查场景能力服务pod监控的指标是否超过设定的阈值,一旦触发伸缩条件即超过设定的阈值,向k8s发送请求,修改运行场景能力服务的pod的数量;k8s响应请求,然后刷新一次伸缩对象的pod数量;伸缩对象被修改后,会通过list/watch机制增加或减少pod数量,达到动态伸缩的目的;否则不进行动作。

说明书 :

一种基于云原生能力网关的场景能力编排的装置及方法

技术领域

[0001] 本发明涉及通信和互联网技术领域,特别是一种基于云原生能力网关的场景能力编排的装置及方法。

背景技术

[0002] 随着通信与互联网行业的快速发展,现今越来越多企业打造中台以快速响应业务需求支持应用创新。而能力网关则是中台的一个重要组成部分,能力网关实现请求路由、调用鉴权、限流等功能,而前端应用则通过调用能力网关的API来完成数据交互。
[0003] 目前的能力网关大都基于开源的微服务框架Spring Cloud、Dubbo等实现。不同的微服务有不同的URL地址,且一个微服务一般提供若干个原子的API能力,例如在运营商权益营销场景下,一次权益兑换可能要调用权益推荐微服务、权益受理微服务、支付微服务、权益兑换微服务等。这样前端应用需要与能力网关交互多次而且这些微服务之间是有先后逻辑调用关系,甚至涉及到参数校验、参数映射等功能,现有方案一般采用前端应用硬编码方式实现,或者新开发一个微服务来实现能力的编排,最后新的微服务注册到能力网关对前端应用提供服务。
[0004] 基于Spring Cloud、Dubbo框架实现的能力网关对于高并发场景无法实现动态弹性伸缩,支持的服务类型单一,一般实现同步远程调用,不支持方法类型、条件类型、循环类型等服务调用。
[0005] 现有技术通常存在以下问题:
[0006] 仅实现原子API能力,能力编排采用硬编码方式或者通过新增能力适配方式;
[0007] 能力类型单一,仅支持同步远程服务节点,不支持条件节点、循环节点;
[0008] 微服务一般基于Spring Cloud或者Dubbo架构实现,缺乏弹性伸缩能力;
[0009] 编排流程一般基于文件方式存储,更新或者读取性能较低。

发明内容

[0010] 有鉴于此,本发明的目的是提供一种基于云原生能力网关的场景能力编排的装置及方法,能够通过脚本实现无需硬编码方式实现原子能力编排成场景能力。
[0011] 本发明采用以下方案实现:一种基于云原生能力网关的场景能力编排的装置,包括能力网关、鉴权中心模块、场景能力服务模块、控制台、场景能力编排脚本仓库和场景能力脚本;用户通过所述控制台进行基于原子能力的场景能力编排,生成编排脚本,并调用场景能力脚本仓库进行更新,初始化所述场景能力服务模块;外部应用调用场景能力请求达到能力网关,所述能力网关将所有能力的调用统一接入能力网关,由网关层负责接入和输出;之后所述能力网关调用鉴权中心模块,用以通过所述鉴权中心模块实现能力生成Token、校验Token、调用鉴权和接入控制;鉴权中心模块通过鉴权后,调用场景能力服务模块,所述场景能力服务模块通过脚本编排实现场景能力,新的场景能力重新纳入能力网关管理;场景能力服务模块根据编排脚本调用原子能力,并最终返回给应用侧。
[0012] 进一步地,本发明还提供一种基于云原生能力网关的场景能力编排的方法,包括以下步骤:
[0013] 步骤S1:用户通过控制台配置场景能力编排脚本并保存,通知场景能力编排脚本仓库;
[0014] 步骤S2:用户配置场景能力,并将场景能力与编排脚本关联上;
[0015] 步骤S3:用户启用场景能力服务模块,通知容器编排引擎加载场景能力服务;
[0016] 步骤S4:场景能力服务模块根据场景能力配置初始化;
[0017] 步骤S5:外部应用通过能力网关发起场景能力调用;
[0018] 步骤S6:能力网关调用鉴权中心模块对发起的场景能力进行鉴权;
[0019] 步骤S7:鉴权通过后,能力网关调用场景能力服务模块;
[0020] 步骤S8:场景能力服务模块根据外部应用请求的负载,进行动态扩缩容;
[0021] 步骤S9:场景能力服务模块根据编排脚本映射对应的原子能力服务,并调用多个原子能力服务;
[0022] 步骤S10:最后调用编排流程步骤S9中多个原子能力,并返回调用多个原子能力后的结果给外部应用。
[0023] 进一步地,启动场景能力服务与动态扩缩容的具体过程为:
[0024] 步骤Sa:管理员登录控制台启动新增场景能力;
[0025] 步骤Sb:控制台通过API向k8s集群ApiServer发起应用部署指令;
[0026] 步骤Sc:K8s集群从镜像仓库拉取场景能力服务镜像,并启动场景能力服务;
[0027] 步骤Sd:能力网关接受应用发起场景能力调用,最终请求路由到场景能力,场景能力根据场景脚本仓库执行编排流程,返回场景能力调用结果给外部应用;
[0028] 步骤Se:当外部应用调用场景能力负载较高,K8S根据负载加上扩缩容配置策略,针对场景能力服务进行动态扩缩容。
[0029] 进一步地,步骤Se中所述进行动态扩缩容的具体内容为:
[0030] K8S平台定期检查场景能力服务pod监控的指标是否超过设定的阈值,一旦触发伸缩条件即超过设定的阈值,向k8s发送请求,修改运行场景能力服务的pod的数量;k8s响应请求,然后刷新一次伸缩对象的pod数量;伸缩对象被修改后,会通过list/watch机制增加或减少pod数量,达到动态伸缩的目的;否则不进行动作。
[0031] 与现有技术相比,本发明具有以下有益效果:
[0032] (1)本发明通过脚本实现无需硬编码方式实现原子能力编排成场景能力。
[0033] (2)本发明支持多种节点类型包括:条件节点,循环节点等。
[0034] (3)本发明实现基于kubernetes的场景能力,并且可以根据负载弹性扩缩容。
[0035] (4)本发明基于分布式缓存编排脚本仓库,满足高并发场景。

附图说明

[0036] 图1为本发明实施例的技术架构图。
[0037] 图2为本发明实施例的场景能力服务的数据模型图。
[0038] 图3为本发明实施例的场景能力编排流程图。
[0039] 图4为本发明实施例的场景能力执行流程图。
[0040] 图5为本发明实施例的新增场景能力时序图。
[0041] 图6为本发明实施例的启动场景能力与动态扩缩容时序图。

具体实施方式

[0042] 下面结合附图及实施例对本发明做进一步说明。
[0043] 应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
[0044] 需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
[0045] 如图1所示,本实施例提供一种基于云原生能力网关的场景能力编排的装置,包括能力网关、鉴权中心模块、场景能力服务模块、控制台、场景能力编排脚本仓库和场景能力脚本;用户通过所述控制台进行基于原子能力的场景能力编排,生成编排脚本,并调用场景能力脚本仓库进行更新,初始化所述场景能力服务模块;外部应用调用场景能力请求达到能力网关,所述能力网关将所有能力的调用统一接入能力网关,由网关层负责接入和输出;之后所述能力网关调用鉴权中心模块,用以通过所述鉴权中心模块实现能力生成Token、校验Token、调用鉴权和接入控制;鉴权中心模块通过鉴权后,调用场景能力服务模块,所述场景能力服务模块通过脚本编排实现场景能力,新的场景能力重新纳入能力网关管理;场景能力服务模块根据编排脚本调用原子能力,并最终返回给应用侧。
[0046] 所述控制台用于提供可视化流程编辑界面,(web界面可拖拽编排),编排完成后生成编排脚本,并调用场景能力脚本仓库进行更新;所述场景能力编排脚本仓库用于提供脚本版本管理,统一更新、存储场景能力脚本,并加载分布式缓存;所述场景能力脚本用于描述包括场景能力由哪些原子能力编排、能力类型和调用流程。
[0047] 较佳的,本实施例还提供一种基于云原生能力网关的场景能力编排的方法,包括以下步骤:
[0048] 步骤S1:用户通过控制台配置场景能力编排脚本并保存,通知场景能力编排脚本仓库;
[0049] 步骤S2:用户配置场景能力,并将场景能力与编排脚本关联上;
[0050] 步骤S3:用户启用场景能力服务模块,通知容器编排引擎加载场景能力服务;
[0051] 步骤S4:场景能力服务模块根据场景能力配置初始化;
[0052] 步骤S5:外部应用通过能力网关发起场景能力调用;
[0053] 步骤S6:能力网关调用鉴权中心模块对发起的场景能力进行鉴权;
[0054] 步骤S7:鉴权通过后,能力网关调用场景能力服务模块;
[0055] 步骤S8:场景能力服务模块根据外部应用请求的负载,进行动态扩缩容;
[0056] 步骤S9:场景能力服务模块根据编排脚本映射对应的原子能力服务,并调用多个原子能力服务;
[0057] 步骤S10:最后调用编排流程步骤S9中多个原子能力,并返回调用多个原子能力后的结果给外部应用。
[0058] 在本实施例中,启动场景能力服务与动态扩缩容的具体过程为:
[0059] 步骤Sa:管理员登录控制台启动新增场景能力;
[0060] 步骤Sb:控制台通过API向k8s集群ApiServer发起应用部署指令;
[0061] 步骤Sc:K8s集群从镜像仓库拉取场景能力服务镜像,并启动场景能力服务;
[0062] 步骤Sd:能力网关接受应用发起场景能力调用,最终请求路由到场景能力,场景能力根据场景脚本仓库执行编排流程,返回场景能力调用结果给外部应用;
[0063] 步骤Se:当外部应用调用场景能力负载较高,K8S根据负载加上扩缩容配置策略,针对场景能力服务进行动态扩缩容。
[0064] 在本实施例中,K8S平台定期检查场景能力服务pod监控的指标是否超过设定的阈值(例如cpu超过80%则自动扩容;峰值请求下降了,cpu低于80%则不会触发自动缩容),一旦触发伸缩条件即超过设定的阈值,向k8s发送请求,修改运行场景能力服务的pod的数量;k8s响应请求,然后刷新一次伸缩对象的pod数量;伸缩对象被修改后,会通过list/watch机制增加或减少pod数量,达到动态伸缩的目的;否则不进行动作。
[0065] 较佳的,在本实施例中,如图1所示,基于云原生能力网关的场景编排的装置包括:
[0066] 1)能力网关:所有能力的调用统一接入能力网关,由网关层负责接入和输出,能力网关很好的解决了微服务下调用、统一接入等问题。一般包括接入控制、流量控制、能力鉴权、服务路由等功能。鉴权中心:提供能力生成Token、校验Token、调用鉴权、接入控制等功能;。
[0067] 2)场景能力服务:通过脚本编排实现场景能力,新的场景能力重新纳入能力网关管理。该组件加载脚本仓库存储的能力脚本,执行场景能力服务,该服务基于云原生思想设计,可以部署在kubernetes平台达到根据负载实现动态扩缩容。
[0068] 3)控制台:提供可视化流程编辑界面(web界面可拖拽编排),编排完成后生成编排脚本,并调用场景能力脚本仓库进行更新。
[0069] 4)场景能力编排脚本仓库:提供脚本版本管理,统一更新、存储场景能力脚本,并加载分布式缓存,提供高性能脚本执行能力。
[0070] 5)场景能力脚本:场景能力编排脚本,用于描述场景能力由那些原子能力编排、能力类型、调用流程等。
[0071] 较佳的,在本实施例中,场景能力编排具体为:
[0072] 如图2所示,(1)场景能力的数据模型,该模型用于支撑基于云原生能力网关的场景能力编排的实现;
[0073] 1)场景能力:场景能力唯一标识ID、场景能力名称、场景能力描述,关联编排流程、关联部署描述;
[0074] 2)编排流程模型:编排流程唯一标识ID、流程名称、请求参数、输出参数、流程描述;
[0075] 3)节点模型:节点标识ID、节点名称、节点描述、节点输入参数、节点类型、下一个执行节点;
[0076] 4)原子能力:原子能力唯一标识ID、能力名称、能力描述;
[0077] 5)部署模型:部署描述模型唯一标识ID、最小pod数量、最大pod数量、cpu使用百分比。
[0078] 业务逻辑被建模为场景能力、编排流程、节点、原子能力、部署描述。编排流程是协调逻辑的实现。节点是业务逻辑中特定任务的实现。编排流程和节点的实现是在场景能力中执行。场景能力通过调用编排流程或节点对应的原子能力实现来执行任务,并将任务结果返回给场景能力服务。场景能力服务可以实现为完全无状态的服务,以实现无限制的水平扩展。
[0079] 模型实现部分代码如下
[0080] 节点模型实现代码
[0081]
[0082]
[0083]
[0084]
[0085]
[0086]
[0087] 流程模型实现代码
[0088]
[0089]
[0090]
[0091]
[0092]
[0093]
[0094] 编排流程采用自定义能力流程定义语言(Ability Flow Define Language),简称AFDL。
[0095] 其中:
[0096] 1)scene_ability是场景编排的根节点,每个流程都默认对应两个变量,分别为in和out。in表示流程的输入变量,变量名称对应于输入报文XML或者json的元素名称。out表示流程的输出变量;
[0097] 2)service_flow是能力编排流程节点,是scene_ability的子节点;
[0098] 3)task_node是任务节点,一个能力编排流程可以包括多个任务节点;
[0099] 4)if节点与task_node节点组合成条件节点;
[0100] 5)for节点与task_node节点组合成循环节点;
[0101] 6)assign_value节点是变量或者参数赋值;
[0102] 7)call节点是原子能力调用;
[0103] 8)deployment是部署节点,配置场景能力的动态伸缩配置;
[0104] (2)编排流程执行
[0105] 编排流程执行我们需要把组件分的很细,最好是独立实现一个功能的类划分成一个组件,体现职责单一原则,把执行功能划分的很细,才能在流程执行的各个流程中灵活组合;
[0106] 一个场景能力编排流程定义是一个XML文档。例如:
[0107]
[0108]
[0109] 如图3所示,场景能力编排流程配置:
[0110] 流程说明:
[0111] 1)用户通过控制台配置场景能力编排脚本并保存,通知场景能力编排脚本仓库;
[0112] 2)用户配置场景能力,并讲场景能力与编排脚本关联上;
[0113] 3)用户启用场景能力服务,通知容器编排引擎加载场景能力服务;
[0114] 4)场景能力服务根据场景能力配置初始化;
[0115] 如图4所示,场景能力执行
[0116] 流程说明:
[0117] 1)外部应用通过能力网关发起场景能力调用;
[0118] 2)能力网关调用鉴权中心对发起的场景能力进行鉴权;
[0119] 3)鉴权通过后,能力网关调用场景能力服务;
[0120] 4)场景能力根据编排脚本映射对应的原子能力服务;
[0121] 5)最后返回编排流程中原子能力的调用结果,并返回给应用;
[0122] 本实施例中在做编排功能的时候下面这些场景是必须要考虑到的,这几个功能点主要从易用性、灵活性、扩展性、稳定性、一致性出发,最主要的还是要交易稳定,而且出现问题,能够快速定位问题。因此需要对调用流程进行监控,需要对异常应对机制,以及场景能力采用基于云原生技术,可以根据外部应用调用的负载可以动态扩缩容,以保证系统的高可用与稳定性。
[0123] (3)流程监控
[0124] 在复杂的编排逻辑里面出现问题我们怎么快速定位问题,采用调用链技术,流程执行了哪些节点,节点执行耗时,执行记录的结果是什么,在那个节点出现问题,都需要记录对应的日志,也可以对接监控平台,发生异常直接监控报警。
[0125] (4)异常机制
[0126] 整个流程出现异常,并记录异常日志,通过日志平台展示。
[0127] 场景能力服务部署与动态扩缩容流程:
[0128] (1)如图5所示,新增场景能力编排:
[0129] 流程说明:
[0130] 1)管理员登录控制台,更新(新增、删除、修改)场景能力编排脚本;
[0131] 2)控制台更新场景能力编排脚本;
[0132] 3)控制台通知场景能力编排脚本仓库,脚本仓库更新缓存中的编排脚本;
[0133] (2)如图6所示,启动场景能力服务与动态扩缩容
[0134] 基于云原生能力网关的场景能力编排装置能够根据某些指标(例如CPU负载指标)对在运行场景能力服务的pod数量进行动态伸缩,使运行在上面的服务对指标的变化有一定的自适应能力。系统定期检查监控的指标是否触发伸缩条件。一旦触发伸缩条件,向k8s发送请求,修改运行场景能力服务的pod的数量。k8s响应请求,然后会刷新一次伸缩对象的pod数量。伸缩对象被修改后,自然会通过list/watch机制增加或减少pod数量,达到动态伸缩的目的。
[0135] 流程说明:
[0136] 1)管理员登录控制台启动新增场景能力;
[0137] 2)控制台通过API向k8s集群ApiServer发起应用部署指令;
[0138] 3)K8s集群从镜像仓库拉取场景能力服务镜像,并启动场景能力服务;
[0139] 4)能力网关接受应用发起场景能力调用,最终请求路由到场景能力,场景能力根据场景脚本仓库执行编排流程,返回结果。
[0140] 5)场景能力服务根据负载加上扩缩容配置策略,进行动态扩缩容;
[0141] 较佳的,本实施例实现场景能力的数据模型与执行流程。
[0142] 较佳的,本实施例采用云原生技术并基于负载的动态扩缩容场景能力编排服务,基于分布式缓存脚本仓库。
[0143] 较佳的,本实施例提出了场景化能力概念,即对原子能力按一定的逻辑进行组合以满足某个业务场景的能力,并基于云原生技术,在原子能力基础上封装成场景能力,并基于原子能力通过脚本化编排生成场景能力,且可以基于容器化动态伸缩的方法与装置。
[0144] 以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。