Kstry框架一种服务编排的实现

article/2025/10/3 3:33:07

Kstry是什么?

  • 所见( 图示模型 )即所得( 代码执行 )的可视化流程编排框架
  • 可轻易将流程从串行升级到并行,支持任务拆分、任务重试、任务降级、子任务遍历、指定超时时间的并发框架
  • 共享能力平台侧的微服务业务整合框架
  • 类似阿里TMF2.0,可以做到平台与业务分离,业务与业务隔离的服务化框架
  • 基于Java语言,暂时依赖Spring环境,项目中接入成本极低的开源框架

如果感觉Kstry框架有可取之处,还请简单支持一个star,您的支持是项目前进最大的动力!

Kstry可以做什么?

如果您遇到了以下问题:

  • 业务模糊】代码复杂、模型文档更新不及时,致使新同学和非技术同学不能短时间内了解业务现状。技术和非技术间对同一业务理解存在分歧而不自知。甚至业务Owner也不能很流畅的描述出自己所负责的业务
  • 代码杂乱】项目中涉及到许多领域对象,对象间不仅存在复杂的前后依赖关系还相互掺杂没有明显边界,代码多次迭代后更是混乱不堪难以维护
  • 性能低下】某业务链路由一系列子任务组成,其中需要并行处理一些耗时长且数据间没有依赖的子任务,但苦于没有精简且无代码侵入的并发框架
  • 平台之殇】维护平台型产品,为众多上游业务线提供着基础服务,但在短时间内应对各个业务方的定制化需求捉襟见肘,更不知如何做好平台与业务、业务与业务之间的隔离
  • 回溯困难】业务流转数据状态追踪困难,只存在于线上环境的偶现问题更是难以排查。需要一种可以通过简单操作就能将重要节点数据都保存下来的能力,此能力堪比对链路精细化梳理后的系统性日志打印
  • 测试复杂】业务场景多样,不乏一些复杂的链路难以被测试覆盖。或者三方数据Mock困难,测试成本居高不下

那么可以尝试一下Kstry框架,因为其具备:

业务可视化

  • 框架引入了业界通用的BPMN流程编排语言
  • 使用事件节点、服务节点、网关节点等组件来描述业务动作和执行线路
  • 编排好的图示模型即为代码真实的执行链路,通过所见( 图示模型 )即所得( 代码执行 )的方式在技术和业务之间架起一道通用语言的桥梁,使彼此之间沟通更加顺畅
    在这里插入图片描述

服务编排

  • 框架通过定义服务节点来划分领域边界并实现业务功能,服务节点对应代码中Class的某个方法
  • 服务节点执行支持定义超时时间、重试次数、失败降级
  • 一个独立的服务节点理论上只承担着一种业务动作或领域能力
  • 输入完成任务所需参数的最小集,输出任务完成的结果或处理后的领域对象
  • 节点间使用箭头符号这种可视化编排手段来保证彼此间的相互作用有序,通过并行网关、包含网关、排他网关等来丰富节点间的执行依赖关系
  • 框架支持子流程的定义,可以为其设置超时时间。支持指定非严格模式,非严格模式下的子流程执行失败后不影响外围流程的执行
  • 子流程支持拦截器的定义,可以在子流程执行前、执行后、执行异常、最终一定执行四个阶段进行自定义操作
    在这里插入图片描述

支持并发

  • 无需改动代码,仅仅在并行网关或包含网关上配置 open-async=true,即可将其后的子链路并行化
    在这里插入图片描述

RBAC( Role-based access control )模式

  • 针对平台型服务,首先可以定义编排出通用的链路模型
  • 模型中的某个服务节点,应对不同业务场景或需求方的诉求时,可以扩展不同的服务能力( 比如A、B两个业务方都需要抽佣的服务,那么就可以定义一个抽佣的服务节点,然后A业务需要比例抽佣,而B业务需要阶梯式抽佣,这时就可以在抽佣的服务节点上再扩展两个不同的抽佣能力
  • 扩展出来的能力可视作资源,所有的资源都有着独一无二的资源名称,携带着包含某个资源名称的权限对象即可访问与之对应的资源( 资源也可称为:扩展出来的服务能力
  • 一批独立的权限对象有着较高的维护成本,所以可依次将某一业务场景所需的全部权限聚合起来组成角色对象
  • 提供平台能力时,根据参数标识判断出具体的业务场景或需求方,并找到与之对应的角色,携带该角色执行预设的链路模型,即可完成定制化的业务诉求
    在这里插入图片描述

详见:RBAC模式

流程回溯

流程回溯可以在链路执行完之后,拿到结果或者异常之前,打印节点执行日志或执行自定义回调方法,可以应对如下问题:

  • 查看运行过节点的信息如:执行顺序、节点耗时、入参、出参、异常信息等重要数据
  • 自定义流程回溯日志,或者可以在出现异常时才打印详情日志
  • 检查节点执行、参数设置等是否符合预期。因为有时结果确实没有报错,但并不代表过程一定没有问题
  • 如果链路中有自定义角色的操作,检查最终角色是否符合预期

简化测试

  • 不依赖业务方入参,而是通过Mock业务角色的方式。之后请求携带该角色即可完成对包含有待测试服务节点或者能力扩展点的个性化业务链路的测试

Kstry如何使用?

下面步骤仅为简单介绍,具体细节请参考使用文档

  • 项目主页
  • Kstry 使用文档
  • Kstry 使用demo
  • 功能测试

1、配置引入

<dependency><groupId>cn.kstry.framework</groupId><artifactId>kstry-core</artifactId><version>最新版本</version>
</dependency>

2、项目引入

@EnableKstry(bpmnPath = "./bpmn/*.bpmn")
@SpringBootApplication
public class KstryDemoApplication {public static void main(String[] args) {SpringApplication.run(KstryDemoApplication.class, args);}
}

3、编写组件代码

@TaskComponent(name = "goods")
public class GoodsService {@NoticeResult@TaskService(name = "init-base-info")public GoodsDetail initBaseInfo(@ReqTaskParam(reqSelf = true) GoodsDetailRequest request) {return GoodsDetail.builder().id(request.getId()).name("商品").build();}
}

4、定义bpmn配置文件

在这里插入图片描述

5、调用执行

@RestController
@RequestMapping("/goods")
public class GoodsController {@Resourceprivate StoryEngine storyEngine;@PostMapping("/show")public GoodsDetail showGoods(@RequestBody GoodsDetailRequest request) {StoryRequest<GoodsDetail> req = ReqBuilder.returnType(GoodsDetail.class).startId("kstry-demo-goods-show").request(request).build();TaskResponse<GoodsDetail> fire = storyEngine.fire(req);if (fire.isSuccess()) {return fire.getResult();}return null;}
}

6、请求测试

在这里插入图片描述


http://chatgpt.dhexx.cn/article/QlEx2Mej.shtml

相关文章

java接口服务编排_GOKU API Gateway CE V3.1.0 发布:新增服务编排、配置版本管理等...

Goku API Gateway (中文名&#xff1a;悟空 API 网关)是一个基于 Golang 开发的微服务网关&#xff0c;能够实现高性能 HTTP API 转发、服务编排、多租户管理、API 访问权限控制等目的&#xff0c;拥有强大的自定义插件系统可以自行扩展&#xff0c;并且提供友好的图形化配置界…

云原生服务编排技术

基于云原生的服务编排技术主要实现融合计算、存储和网络能力开放&#xff0c;通过云原生和云计算统一编排调度平台来实现底层资源的调度及上层服务编排。运用 OpenStack底层基础设施层的资源调度管理能力&#xff0c;对数据中心内的异构计算资源、存储资源和网络资源可以进行有…

Docker Compose 服务编排

微服务架构中一般会有多个微服务&#xff0c;每一个微服务一般都会部署多个实例&#xff0c;如果每一个服务都手动启动&#xff0c;工作量会很大。服务编排就是按照一定的业务规则进行批量管理容器。 docker基础请参考 Docker相关内容整理&#xff08;一&#xff09;_活水774的…

9_服务编排

是什么 微服务架构的应用系统中一般包含若干个微服务&#xff0c;每个微服务一般都会部署多个实例&#xff0c;如果每个微服务都要手动启 动停止&#xff0c;维护的工作量会很大。来看下我们日常工作&#xff1a; 要从Dockerfile build image 或者去 dockerhub 拉取 image要创…

Docker服务编排

概述 服务编排概念 微服务架构的应用系统中一般包含若干个微服务&#xff0c;每个微服务都会部署多个实例&#xff0c;如果每个微服务都要手动启停&#xff0c;维护的工作量会很大。 具体工作大概如下&#xff1a; 从Dockerfile build image或者取dockerhub拉取image。创建多…

详解微服务编排

你的组织是否使用微服务风格的体系结构来实现其业务功能&#xff1f;你使用什么方法来实现微服务的通信和编排&#xff1f;在过去的几年中&#xff0c;微服务一直是一个相当占主导地位的应用程序架构&#xff0c;通常与云平台&#xff08;例如&#xff0c;容器、K8s、FaaS&…

服务编排-前端应用和后端服务能力间关键衔接

转载自&#xff1a;https://www.toutiao.com/a6922250238791090691/?log_fromce077552cde8e_1635167920723 首先提出一个重要观点&#xff0c;即在当前微服务架构转型中&#xff0c;服务编排将成为一个大的技术发展趋势&#xff0c;其主要原因展开描述如下&#xff1a; 当前…

蚁群算法原理及Matlab实现

转自&#xff1a;https://blog.csdn.net/zuochao_2013/article/details/71872950 原 蚁群算法 2017年05月13日 20:23:13 阅读数&#xff1a;7821 蚁群算法(AG)是一种模拟蚂蚁觅食行为的模拟优化算法&#xff0c;它是由意大利学者Dorigo M等人于1991年首先提出&#xff0c;并首先…

蚁群算法讲解python

简介 蚁群算法&#xff08;Ant Clony Optimization&#xff0c; ACO&#xff09;作为一个启发式群智能算法&#xff0c;它是由一群无智能或有轻微智能的个体通过相互协作而表现出智能行为&#xff0c;从而为求解复杂问题提供了一个新的可能性。 ACO是一种仿生学算法&#xff…

蚁群算法详解(含例程)

该篇博客为课程学习的笔记&#xff0c;含一个例子可以帮助理解蚁群算法&#xff0c;主要为理论知识的总结。 蚁群算法详解 1.算法简介2.Ant System(蚂蚁系统)2.1 路径构建2.2 信息素更新 3. 改进的蚁群算法3.1 精英策略的蚂蚁系统(Elitist Ant System, EAS)3.2 基于排列的蚂蚁…

蚁群算法小结及算法实例(附Matlab代码)

目录 1、基本蚁群算法 2、基本蚁群算法的流程 3、关键参数说明 3.1 信息素启发式因子 α 3.2 期望启发因子 β 3.3 信息素蒸发系数 ρ 3.4 蚂蚁数目 m 3.5 信息素强度 Q 对算法性能的影响 3.6 最大进化代数 G 4、MATLAB仿真实例 4.1 蚁群算法求解旅行商问题&#xf…

蚁群算法代码实现

旅行商问题大都是用遗传算法求解&#xff0c;不过蚁群算法比它高效得多&#xff0c;在百度的蚁群算法吧里有人发了个注释清晰的代码&#xff0c;有兴趣的可以去研究一下蚁群算法和模拟退火算法&#xff0c;这两者都可以解决旅行商问题。而关于遗传算法和模拟退火算法&#xff0…

蚁群算法(ACO)

目录 ACO简介 基本原理 算法步骤 流程图 参数意义 构建路径 更新信息素 实例演示&#xff08;TSP问题&#xff09; ACO简介 蚁群是自然界中常见的一种生物&#xff0c;人们对蚂蚁的关注大都是因为“蚁群搬家&#xff0c;天要下雨”之类的民谚。然而随着近代仿生学的发展&…

蚁群算法及其应用

产生背景 20世纪90年代初&#xff0c;意大利科学家Marco Dorigo等受蚂蚁觅食行为的启发&#xff0c;提出蚁群算法(Ant Colony Optimization&#xff0c;ACO)。 一种应用于组合优化问题的启发式搜索算法。 在解决离散组合优化方面具有良好的性能。 基本思想 信息素跟踪&#…

蚁群算法原理及python代码实现

本文转载自&#xff1a;https://blog.csdn.net/fanxin_i/article/details/80380733 蚁群算法(AG)是一种模拟蚂蚁觅食行为的模拟优化算法&#xff0c;它是由意大利学者Dorigo M等人于1991年首先提出&#xff0c;并首先使用在解决TSP&#xff08;旅行商问题&#xff09;上。 之后…

蚁群算法原理以及应用

关键词:启发式算法 蚁群算法 迭代 正反馈 1.蚁群算法(ant colony algorithm,ACA)起源和发展历程 Marco Dorigo等人在研究新型算法的过程中,发现蚁群在寻找食物时,通过分泌一种称为信息素的生物激素交流觅食信息从而能快速的找到目标,于是在1991年在其博士论文中首次系统地提…

蚁群算法浅谈

本文参考&#xff1a;http://www.cnblogs.com/biaoyu/archive/2012/09/26/2704456.html http://blog.163.com/ykn_2010/blog/static/1420333362012111411258466/ 简介 蚁群算法(ant colony optimization, ACO)&#xff0c;又称蚂蚁算法&#xff0c;是一种用…

【转载】蚁群算法原理及实现

转自&#xff1a;https://blog.csdn.net/yy2050645/article/details/80820287 蚁群算法 蚁群算法&#xff0c;也是优化算法当中的一种。蚁群算法擅长解决组合优化问题。蚁群算法能够有效的解决著名的旅行商问题&#xff08;TSP&#xff09;&#xff0c;不止如此&#xff0c;在…

蚁群算法原理及c++实现

参考博客 https://blog.csdn.net/Oudasheng/article/details/84994336 https://blog.csdn.net/wayjj/article/details/72809344#commentsedit https://blog.csdn.net/Oudasheng/article/details/84994336 https://www.cnblogs.com/mahaitao/p/5572095.html https://www.cnblogs…

10分钟搞懂蚁群算法

蚂蚁几乎没有视力&#xff0c;但他们却能够在黑暗的世界中找到食物&#xff0c;而且能够找到一条从洞穴到食物的最短路径。它们是如何做到的呢&#xff1f; 蚂蚁寻找食物的过程 单只蚂蚁的行为及其简单&#xff0c;行为数量在10种以内&#xff0c;但成千上万只蚂蚁组成的蚁群却…