AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

从微服务迁移到工作流的经验之谈

  • 2019-02-16
  • 本文字数:1182 字

    阅读完需:约 4 分钟

从微服务迁移到工作流的经验之谈

Jet公司的订单管理系统(OMS)负责处理很多业务功能,最初是由一系列微服务组成的。随着公司的发展,这种架构所面临的挑战也越来越大,直到他们决定构建一个新的基于工作流的平台。Jet 工程师 James Novino 在一篇博文中介绍了旧系统面临的挑战、对新平台的概述以及新平台运行一年多后所总结的经验。


OMS 最初使用了发布与订阅、事件溯源和其他技术的组合。每个服务都使用相同的样板实现,包含了三个步骤:


  • 解码——从输入流中读取领域事件,并将事件转换为输入类型。

  • 处理——检查输入并获取任何所需的数据。

  • 解释——执行副作用。


随着公司的发展和需求的增长,架构的复杂性也在增加,使得维护系统变得更加困难。服务的数量也增加了,并且由于功能通常分布在多个服务中,因此导致开发周期变得更长。Novino 认为这是一个很复杂的过程,需要大量的样板代码。他还指出,随着系统的发展,构建和维护这种架构的复杂性对系统和团队都带来了负面影响。


因此,他们开始创建一个能够以更有效的方式处理所有业务工作流的新平台。他们决定设计和构建一个基于工作流的系统,其灵感来自 Pat Helland 和他的论文:Life Beyond Distributed Transactions。新系统的核心设计基于两个保证:


  • 幂等性——避免重复事件。

  • 一致性——支持多个不同的存储,但由于它们必须能够读取自己的写入,因此存储需要实现强一致性模型。


这些保证为系统带来了多个特性,包括:


  • 事件溯源——所有状态变更都存储在日记中。

  • 简单的实现,由工作流定义和相应的步骤组成。这样有助于开发人员优先考虑业务流程并强制执行系统的模块化。

  • 工作流的幂等性保证。

  • 工作流版本控制,可以将变更部署到工作流中,而无需担心当前正在执行的东西。

  • 伸缩性——通过使用每个服务的多个实例,可以并行执行工作流。


Novino 将新架构描述为其早期管道(解码->处理->解释)的抽象版本,并在每个操作之间具有明确的服务边界:


  • 工作流触发器,对应于解码;

  • 工作流执行器,用于处理;

  • 副作用执行器,相应的解释。


为了定义工作流,他们创建了一个领域特定语言(DSL),用于定义所需的一系列执行步骤。他们还提供一个可视化工具,可以显示正在运行和已经运行过的工作流。


Novino 指出,有一些现成的工作流编排和设计替代方案,但他们决定构建自己的方案,原因如下:


  • 能够为工作流事件维护单独的数据存储;

  • 能够在执行过程的任何时刻重放或可视化状态;

  • 可扩展性和伸缩性。


在生产环境中运行了一年多后,它们创建了大约 2200 万个日志,完成了大约 9300 万个工作流。


最后,Novino 指出,从基于分布式微服务的架构迁移到基于工作流的架构,在设计、开发和支持过程中对其开销产生了巨大影响。他还指出,使用 DSL 设计工作流并将其作为单个响应步骤实现的能力提高了他们构建复杂新系统的能力。在未来的文章中,他将更详细地介绍他们的新设计。


查看英文原文https://www.infoq.com/news/2019/02/migrate-microservices-workflows


2019-02-16 08:005757
用户头像

发布了 731 篇内容, 共 450.4 次阅读, 收获喜欢 2002 次。

关注

评论

发布
暂无评论
发现更多内容

幸福里基于 Flink & Paimon 的流式数仓实践

Apache Flink

大数据 flink

创新性与自主性的融合

百度开发者中心

AIGC #人工智能 生成式AI

从理解到实现:一种强大的AI技术

百度开发者中心

深度学习 #人工智能 生成式AI

香港站群服务器构建多站点网络的利器,将业务推向新高度

一只扑棱蛾子

站群服务器

文心一言 VS 讯飞星火 VS chatgpt (95)-- 算法导论9.2 4题

福大大架构师每日一题

福大大架构师每日一题

卡奥斯第二届1024程序员节重磅预告!

Openlab_cosmoplat

开源 低代码

简单好用的音频播放器:Infuse 激活中文最新版

胖墩儿不胖y

媒体播放器 Mac软件 播放器推荐

第1期 | 抚今 现代企业已步入新的项目制管理时代

用友BIP

项目管理

流动性质押挖矿系统开发技术说明

V\TG【ch3nguang】

支持适配国产化平台的云管理软件你给推荐哪家?

行云管家

云计算 云服务 国产化 云管理

SDK或低代码运行时,提示找不到某些库文件

矩视智能

深度学习 机器视觉

人民日报发文祝贺,这位作者是藏不住了!

博文视点Broadview

未来社交媒体的变革者

百度开发者中心

媒体服务 #人工智能 生成式AI

Xojo 2023 Release for mac(跨平台编程开发工具) v23.2.0.3.60612中文激活版

mac

windows 苹果mac Xojo 软件开发工具

晋级揭晓!华秋第九届中国硬件创新创客大赛-华东分赛区决赛成功举办!

华秋电子

创业

磁盘垃圾清理软件推荐 Magic Disk Cleaner 激活中文版

mac大玩家j

Mac软件 磁盘清理工具 磁盘清理优化软件

从过去5年CWE TOP 25的数据看软件缺陷的防护

华为云PaaS服务小智

云计算 软件开发 代码

杀死Node.js!全新JS运行时“快到飞起”!

高端章鱼哥

node.js js Bun

一文详解数据仓库的物理细粒度备份恢复

华为云开发者联盟

数据库 大数据 华为云 华为云开发者联盟 企业号9月PK榜

大模型开发:从数据挖掘到智能应用

百度开发者中心

AIGC #人工智能 大模型微调

国密算法是什么意思?支持国密算法的云管平台哪家好?

行云管家

云计算 云管平台 云管理 国密 国密浏览器

基于Falcon-7B模型的QLoRA微调实操:构建面向心理健康领域的Chatbot

Baihai IDP

AI LLM 白海科技 大模型微调实践 QLoRA实践

什么是高刷LED屏?

Dylan

刷新 LED显示屏 led显示屏厂家

SmartNews 基于 Flink 的 Iceberg 实时数据湖实践

Apache Flink

大数据 flink 实时计算

基于开源IM即时通讯框架MobileIMSDK:RainbowChat v10.0版已发布

JackJiang

网络编程 即时通讯 IM

ReentrantLock源码解析

Khirye

源码解析 Java源码 ReentrantLock

用友iuap 技术平台:创新基础架构,赋能企业数智化转型

用友BIP

数智底座 2023全球商业创新大会

应用场域的深度融合与创新构想

百度开发者中心

#人工智能 ChatGPT 大模型微调

如何使用Vcluster实现Kubernetes中的多租户

互联网工科生

Kubernetes 集群

大咖云集腾讯DevSecOps实践研讨会,共话落地实践经验

Geek_2d6073

从微服务迁移到工作流的经验之谈_软件工程_Jan Stenberg_InfoQ精选文章