在微服务场景怎么做服务编排

一直在上市公司做基础平台研发、架构设计和解决方案,熟悉的领域有:架构设计、基础框架、微服务、解决方案、设计模式、ddd思想、单元化架构。

文章正文

编排出现的背景

微服务是一种新的软件架构风格,在微服务体系结构中,可以将应用分解为多个较小服务, 各个服务可以由独立的团队进行开发、部署。一个系统采用了微服务架构后,会拆分成很多新的微服务,但原有的业务可能还是没有变化,如何在微服务架构下实现原有的业务?相对于传统架构,微服务架构下更需要通过各微服务之间的协作来实现一个完整的业务流程,可以说服务编排是微服务架构下的必备技能。特别是在 DDD 领域编程模型之后服务更是按照领域划分,原本的 application 做服务编排的理念不谋而合。

服务编排有两种方式:

  • 编制(Orchestration):通过一个可执行的流程来协同内部及外部的服务交互。通过中心流程 Orchestrator 负责来调用和组合这些服务,是一种集中式的服务编排,事务也是由中心流程控制。
  • 编排(Choreography):通过消息的交互序列来控制各个部分资源的交互。参与交互的资源都是对等的,没有集中的控制,是一种去中心化的编排方式。

在这里插入图片描述

在这里插入图片描述

常见的编排框架

Activiti

官网:https://www.activiti.org/

GitHub:https://github.com/activiti/activiti

说明:Activiti 一套完整的方便的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。

Cadence

官网:https://cadenceworkflow.io/

GitHub:https://github.com/uber/cadence

说明:Cadence 是 Uber 工程师开发的一个分布式、可扩展、持久和高可用性的编排引擎,以可伸缩和弹性的方式执行异步长时间运行的业务逻辑。

Camunda

官网:https://camunda.com/

GitHub:https://github.com/camunda/camunda-bpm-platform

说明:Camunda 是一个基于 Java 的框架,支持用于工作流和流程自动化的 BPMN、用于案例管理的 CMMN 和用于业务决策管理的 DMN。

Zeebe

官网: https://zeebe.io

GitHub:https://github.com/zeebe-io/zeebe

说明:Zeebe 提供了对跨多个微服务的业务流程的可见性和控制。

Netflix Conductor

官网:https://netflix.github.io/conductor/

GitHub:

作者正在撰写中...
隐藏内容 支付可见
内容互动
写评论
加载更多
评论文章
¥2.99 购买
× 订阅 Java 精选频道
¥ 元/月
订阅即可免费阅读所有精选内容