Biz-SIP中间件实现服务编排的机制

article/2025/10/3 2:25:18

微服务架构的系统中存在着大量的服务编排,常见的有三种模式:

  • Orchestration(编制):通过一个可执行的流程来协同内部及外部的服务交互,通过流程来控制总体的目标、涉及的操作、服务调用顺序。这种模式必须有一个流程控制服务,用来接收请求,组织服务间的调用,并最终完成业务逻辑。这种方案中大多是同步调用,虽然在某个时刻能够很清晰的知道服务的执行情况,但当业务复杂,服务很多的情况下,在控制服务中会存在大量的耦合,难以维护;
  • Choreography(编排):通过消息的交互序列来控制各个部分资源的交互,参与交互的资源都是对等的,没有集中的控制。可以看作一种消息驱动模式,或者说是订阅发布模式,不同的服务之间通过消息机制串联起来,这种方式大多都是异步的。好处就是耦合度低,但也会带来一些问题,比如:业务流程是通过订阅的方式来体现的,很难直接监控每笔业务的处理,因此难于调试;由于没有预定义流程,所以很难在事前保证流程正确性,基本靠事后分析数据来判断等;
  • API网关:API网关是一种简单的接口聚合/拆分的方式:业务组件的请求后先到达网关,网关调用各微服务,并最终聚合/拆分需反馈的结果。API网关其实就是一个适配网关,比如对于 Web端,可以一个页面同时发起几十个请求,而对于移动端,最好是一个页面就几个请求。而采用API 网关,后面的微服务可以是相同的。但只能应对一些逻辑简单的场景。

结合上面方式各自的优点,Biz-SIP中间件实现服务编排的实现思路如下:

  1. 一个应用服务可以拆解为一个或多个原子服务,每个原子服务可以抽象成一个通用模型;
  2. 每个原子服务提供 API 接口;
  3. 对原子服务接入提供基于配置的通讯接入适配和消息格式适配,支持多种原子服务接入方式和原子服务调用方式;
  4. 提供针对服务的全生命周期事件监听机制,实现分布式事务;
  5. 同时提供同步的服务编制和异步的服务编排;
  6. 提供标准的API网关,并支持二次定制。

在领域驱动设计DDD中,把整个系统分为适配层、应用层、领域层和基础层,Biz-SIP中间件的source层、app层、sink层分别对应上面的三层:在这里插入图片描述
所有的应用服务,都是在应用层进行封装的,在Biz-SIP中称为app服务,每个app服务都有自己的入参和出参,在一个服务编排的请求上下文中会随着执行的阶段不同,动态组织参数,来调用不同的原子服务(sink服务)。

所有的原子服务,都是在领域层进行封装的,在Biz-SIP中称为sink服务,sink服务只做一件事情,通过一个sink服务或多个sink服务,可以组装出来各种不同功能的app服务,通过app服务的服务编排,让sink服务之间彻底解耦,以便能够灵活组装。

随着服务的增多,调用链会变得越来越复杂,当一个应用服务(app服务)编排整个处理完后,调用链会形成一个复杂网络,这对排查问题造成很大的麻烦。我们采用全链路跟踪来解决这个问题,在一个完整的应用服务调用开始时,会生成一个唯一 traceId,存放在中间件标准报文头中,这个 trancdId 会一直存储在调用上下文中,每个app服务中traceId相同。

sink服务可以被同步执行,也可以被异步调用,这个在sink服务的配置文件中,分别是采用rest和rabbitmq类型来实现的:

- id: sink1type: resturl: http://bizsip-sample-sink/sink1converter:type: simple-jsonconnector:type: sink-beanclass-name: com.bizmda.bizsip.sample.sink.controller.CrmServer- id: sink15type: rabbitmqexchange: exchange.dircect.bizsip.sinkrouting-key: key.bizsip.sink15converter:type: simple-jsonconnector:type: sink-beanclass-name: com.bizmda.bizsip.sample.sink.controller.EchoServer

假设现在用户已编排了一个复杂的业务,当某个环节出现问题时候,我们需要保证数据的最终一致性。常用的一种方式就是提供补偿机制。

Biz-SIP补偿模式,是采用延迟服务的方式来实现的,核心思想是:在系统出现异常后,会触发一个封装好的延迟服务,对原有已经完成的操作进行补偿(撤销)操作,并且能约定这个延迟服务的重复调用次数和间隔时间。

Biz-SIP的延迟服务,能很好地支持向前补偿和向后补偿。

Biz-SIP官方网站:http://bizsip.bizmda.com
Gitee:https://gitee.com/szhengye/biz-sip


http://chatgpt.dhexx.cn/article/9FwVb9pv.shtml

相关文章

超强K8s服务编排指南,快来围观!

前置说明 k8s_host192.168.214.50 #定义k8s_host变量,此ip为k8s管理机 yaml_host192.168.214.100:9999 #相关服务的配置存放机 操作步骤 Step1: 登录100 jenkins 的机器 该机器是有初始化相关脚本的机器,且与k8s机器互相免密访问 Step2: 初始化项…

RestCloud服务编排平台,API可视化编排

RestCloud服务编排平台通过无代码化来统一编排和调度API服务,通过可视化的拖、拉、拽对API进行编排并实现分布式事务控制、故障自动转移、断点续跑等功能可大幅提升API服务的敏捷化交付能力。API将成为企业的数字化资产且API会越来越多,而企业随着前后端…

esb 服务编排_在ESB中进行路由和编排之间的选择

esb 服务编排 介绍 如今,企业服务总线确实是有用的解决方案,它结合了一系列工具,可以解决应用程序和服务集成领域中的实际问题。 但是,它们给工具箱带来了轻微的不便,给工具箱用户带来了不便,后者知道解决问题的方法必须在工具箱中,但出于他的原因,他不知道是哪一种!…

服务编排:conductor学习(一)

一.Conductor介绍 conductor官方文档:https://netflix.github.io/conductor/conductor介绍:主要是帮助我们在Netflix上编制基于微服务的流程。conductor架构: 4.conductor的安装和运行: 从github查看源代码https://github.co…

如何做服务编排/数据聚合?(使用Goku API Gateway实现)

什么是服务编排/数据聚合? 服务编排/数据聚合 指的是可以通过一个请求来依次调用多个微服务,并对每个服务的返回结果做数据处理,最终整合成一个大的结果返回给前端。 例如一个服务是“查询用户预定的酒店”,前端仅需要传一个订单…

k8s 使用 yaml 进行服务编排

K8s 是一个容器编排引擎,使用 YAML 文件编排要部署应用,因此在学习之前,应该了解 YAML 语法格式: 缩进表示层级关系不支持制表符 “tab” 缩进,使用空格缩进通常开头缩进 2 个空格字符后缩进 1 个空格,如冒…

Netty学习五:Netty框架之服务编排

一、核心编排组件:ChannelPipeLine ChannelPipeLine是Netty的核心编排组件,负责调度各类ChannelHandler,实际的加工处理由ChannelHandler完成。 ChannelPipeLine可以看做是ChannelHandler的容器,包含一组ChannelHandler实例&…

企业级低代码服务编排库 - Commander

写在前面。低代码最近被炒的火热,各种争议不断,我们且不去添油加醋,仔细想来,在一些特定的场景,在整体架构的特定层面,低代码平台确实是可以发挥其长处的,足矣。 一.微服务编排的必…

资源调度和服务编排技术架构

从传统云网融合的角度出发,结合边缘计算、网络云化及智能控制的优势,在算力网络连接下实现更加广泛的算力资源纳管和动态调度。算力网络正是为了提高云、边、端三级计算的协同工作效率而出现的。算力网络资源调度和服务编排整体技术架构如图1所示。 图1 …

如何通过网关做服务编排?

什么是服务编排/数据聚合? 服务编排/数据聚合 指的是可以通过一个请求来依次调用多个微服务,并对每个服务的返回结果做数据处理,最终整合成一个大的结果返回给前端。 例如一个服务是“查询用户预定的酒店”,前端仅需要传一个订单…

零代码平台中的服务编排思路

先打个广告,我们的第三场零代码实践的直播在本周五( 11 月 5 日 )晚8点准时开始,扫描下面二维码,直接预约直播,到时间微信会自动提醒。 随着企业数字化转型的进程加快,零代码平台的的应用越来越…

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

Kstry是什么? 所见( 图示模型 )即所得( 代码执行 )的可视化流程编排框架可轻易将流程从串行升级到并行,支持任务拆分、任务重试、任务降级、子任务遍历、指定超时时间的并发框架共享能力平台侧的微服务业务…

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

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

云原生服务编排技术

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

Docker Compose 服务编排

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

9_服务编排

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

Docker服务编排

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

详解微服务编排

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

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

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

蚁群算法原理及Matlab实现

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