Springboot技术专家 从0到1基于责任链模式实现自己的服务编排框架

93 阅读2分钟

图片

OpenApi开放的场景下,需要提供一些服务编排的能力。服务编排是服务端接口的聚合。下面我们基于利用Spring的生命周期,采用责任链模式抽象执行器,自定义内置服务安全机制实现一套流程编排框架。

为什么需要编排的能力?

场景举例:

下单流程如下 点击确认下单->风控->校验库存->优惠券->扣款->发货

流水线代码
confirmOrder(){
 riskControl();
 verifyInventory();
 coupons();
 deduction();
 shipment();
}

服务编排可以完美的规避以下的风险点:

风控服务出错要求保业务需要先去掉风控流程,需要改动代码上线。 某一个小步骤业务变更如优惠券逻辑变更,会导致代码改动大 测试流程多。

流程编排的好处:

  1. 实现业务流程的可视化和可维护性,减少管理复杂性。 服务编排工具通常提供图形化界面或声明式配置语言,用于定义服务之间的交互流程。这种方式使得业务流程更加直观,便于团队成员理解和协作。
  2. 提高可靠性
    通过内置的重试机制、超时控制、熔断器等功能,能够自动处理这些异常情况,从而提高系统的可靠性。
  3. 支持动态扩展 当业务需求发生变化时,只需修改编排配置,而无需修改底层服务代码,从而提高了系统的可维护性。

市面上有很多开源的产品如LiteFlow等,知其所以然我们利用Springboot自己动手从0到1实现一个加深印象,理解流程。

思考流程,如何实现:

1.如何标识服务?自定义注解

2.如何实例化服务?利用Spring通过Bean工厂获取服务

3.执行流程?基于责任链模式

4.如何聚合服务接口?1.打标签 相同标签的是一组  2.上游传服务列表  3.配置文件配置

5.内置扩展机制?责任链执行时通过参数传递控制执行流程,例如同步/异步 报错重试等 

代码实现: 自定义注解(服务标识)

图片策略接口定义

图片

执行上下文

图片

服务实例化注册器图片

责任链执行器

模板执行方法

图片

优化内置执行策略

图片

图片服务接口

图片

图片

测试

图片

服务出错示例图片

服务超时示例图片成功示例图片

获取方式 扫码,关注后,


图片

发送:001