2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

从单片应用转向微服务架构

  • 2017-01-05
  • 本文字数:1159 字

    阅读完需:约 4 分钟

Joris Kuipers 在一次演讲中声称,将现有系统迁移到微服务与构建一个新的系统迥然不同。该演讲描述了一个正在进行中的将大型单片应用重构成更加分布式的或基于微服务的架构的过程。

Kuipers 是 Trifork Amsterdam 的一名架构师,他所描述的应用是一个医疗保障的电子病历系统。它于六年前创建,头两年是一个带有少量 B2B 集成的单片应用。从一开始,它就是使用 Trifork 开发的开源框架 Axon 基于命令查询责任隔离(CQRS)构建的。它运行得很好,但是随着系统和用户数量的增长,新需求出现了,包含针对保险开支的需求,保险开支必须是一个单独的应用,但是仍然需要使用当前应用的数据。因为他们现在不得不转向共享状态的多个应用,这是一个巨大的改变。

今天,核心应用仍然相当庞大,周围围绕着三个独立的保险开支应用,在十多个可部署的应用中,一共包含了近 40 个第三方集成功能。它拥有约 65 个租户和 12,000 个用户。

许多集成的生命周期比核心应用短得多,所以他们转向微服务的主要原因是因为需要扩展开发以适应集成的不同的生命周期。扩展开发团队和加大开发步伐是这一转变的真实动力。

因为在开始重构的时候他们的应用是基于 CQRS 和事件的,他们决定使用事件作为集成点,通过消息代理向其它集成应用广播所有事件。他们将所有存在的 B2B 集成相关的代码抽取到单独的应用中,将它们连接到代理上以获取所有发送的事件。针对抽取出来的应用,需要与核心应用通信的,他们使用了核心应用中已经存在的 CQRS 命令。

数据流的典型例子是用户使用核心应用更新一些数据。该更新进而会引起事件的发布,然后集成应用异步读取事件,基于这种逻辑,这会发送通知给外部应用。Kuipers 把这看作一个轴辐式架构,核心应用是 hub,被几个更小的应用围绕。他指出这种通过消费者解藕的方式是一种非常适合他们的转向微服务的方式。

对于 Kuipers 来讲,事件对于拆分一个系统有非常大的帮助,因为它们本质上是异步的,描述已经发生的事情,并且其它系统能够监听并响应它。他指出使用事件也会引入一些挑战,当事件成为集成的支柱时,考虑这些挑战尤其重要。这些挑战有:

  • 既然事件是共享的数据结构,它们可能导致耦合
  • 一些事件可能需要在一个应用或者一个服务内私有
  • 需要考虑类型粒度和数据量,它们能够防止事件处理器请求更多的数据
  • 不破坏客户端的情况下事件如何随着时间演化

作为结论,Kuipers 指出,他们现在能快速开发和部署与主应用隔离的新集成功能,这也意味着风险的降低,因为核心系统没有被动过,Kuipers 声称所有这些让他们有了重要的竞争优势。

查看英文原文: Moving a Monolithic Application towards a Microservices Architecture


感谢张卫滨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-01-05 18:002908
用户头像

发布了 33 篇内容, 共 13.0 次阅读, 收获喜欢 10 次。

关注

评论

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

要体验 AI 编程助手吗?

亚马逊云科技 (Amazon Web Services)

亚马逊云科技 AIGC

MySQL innoDB 间隙锁产生的死锁问题 | 京东云技术团队

京东科技开发者

MySQL innodb 死锁 Mysql死锁 企业号10月PK榜

开源即时通讯IM框架 MobileIMSDK v6.4 发布

JackJiang

网络编程 即时通讯 IM

从 Greenplum 到 YMatrix,某头部动力电池厂商核心业务数据的迁移实践

YMatrix 超融合数据库

greenplum 迁移数据 超融合数据库 YMatrix 电池厂商

3D孪生场景搭建:模拟仿真

3D建模设计

数字孪生 3D应用场景 3D编辑器

DeFi 的兴起:与加密货币交易所应用程序开发的协同作用

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

【AI模型】首个Joy 模型诞生!!!全民生成Joy大片 | 京东云技术团队

京东科技开发者

AI模型 企业号10月PK榜 京东joy

软件测试/测试开发丨接口测试学习笔记-常见的接口协议

测试人

软件测试 HTTP 接口测试 接口协议

电力行业首个自主可控的大模型发布了!百度飞桨、文心大模型提供支持

飞桨PaddlePaddle

飞桨 大模型 文心大模型

EMQ 云边协同的 IIoT 解决方案架构,亮相 2023 工博会

新消费日报

3D孪生场景搭建:模型区域摆放

3D建模设计

数字孪生 3D场景编辑器

OWASP Top 10漏洞解析(3)- A3:Injection 注入攻击

云计算 软件开发 华为云

位移贴图和法线贴图的区别

3D建模设计

材质修改 纹理贴图

多数据源管理:掌握@DS注解的威力 | 京东云技术团队

京东科技开发者

mybatis Mybatis Plus 企业号10月PK榜 DS注解

递归解析Json,实现生成可视化Tree+快速获取JsonPath | 京东云技术团队

京东科技开发者

json tree 企业号10月PK榜 JsonPath

实现动态表单的一种思路 | 京东云技术团队

京东科技开发者

元数据 动态表单 前后端交互 企业号10月PK榜

对于数字化转型,数据代表了什么?

IT民工大叔

数据 数字化转型 数字化

身为产品经理该如何向客户推广API商品数据接口,该如何跟进项目和程序员对接?

Noah

API 接口 API 文档

解读亚马逊云服务器 EC2 预留实例与按需实例的区别,及其在成本节约的优势

亚马逊云科技 (Amazon Web Services)

sdk 云服务器 Amazon EC2

火山引擎DataLeap一站式数据治理解决方案及平台架构

字节跳动数据平台

大数据 数据中台 数据安全 数据研发 企业号10月PK榜

3D孪生场景搭建:参数化模型

3D建模设计

模型 数字孪生 参数化模型

3D孪生场景搭建:3D漫游

3D建模设计

数字孪生 3D编辑器 3D漫游

小白修图必备Topaz Photo AI for Mac图像智能处理工具

展初云

图像处理 Mac 软件 修图软件

苹果Mac视频编辑软件 Final Cut Pro

展初云

Mac软件 视频编辑工具 FCPX软件 fcpx

像win一样使用Mac的鼠标右键:MouseBoost Pro

展初云

Mac软件 鼠标扩展

零售业:别让数据安全成为业务的绊脚石!

极盾科技

数据安全 零售行业

透明度和透明贴图制作玻璃水杯

3D建模设计

3D模型 材质修改 纹理贴图

3D孪生场景SDK:Viwer 孪生世界

3D建模设计

数字孪生

Embedding技术与应用 (2) :神经网络的发展及现代Embedding方法简介

Baihai IDP

人工智能 神经网络 AI 嵌入 白海科技

从单片应用转向微服务架构_语言 & 开发_Jan Stenberg_InfoQ精选文章