写点什么

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

  • 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:002972
用户头像

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

关注

评论

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

低代码技术分享官丨inBuilder使用有向无环图助力元数据工程依赖管理

inBuilder低代码平台

分布式系统常见问题

互联网工科生

分布式

如果AI能帮我 | 社区征文

六月的雨在InfoQ

AIGC ChatGPT 年中技术盘点 通义听悟

直播预告 | 博睿学院:海量数据实时可信认证

博睿数据

智能运维 博睿数据 数据要素 博睿学院

方言语音识别数据驱动人工智能的多元文化发展

数据堂

方言语音

人工智能的底层逻辑

博文视点Broadview

大学生活动社交小程序开发笔记(1)

CC同学

超级应用App的概念及构建思路

Onegun

小程序 小程序容器 超级应用

软件定义汽车场景中的数据流处理

EMQ映云科技

车联网 mqtt 数据流

为什么选择美国虚拟主机是你的明智之选?

一只扑棱蛾子

美国虚拟主机

MatrixOne悲观事务实现

MatrixOrigin

数据库 分布式 云原生 矩阵起源

2023年最具威胁的25种安全漏洞(CWE TOP 25)

华为云开发者联盟

安全 华为云 安全漏洞 华为云开发者联盟 企业号 7 月 PK 榜

从零开始构建一个电影知识图谱,实现KBQA智能问答[上篇]:本体建模、RDF、D2RQ、SPARQL endpoint与两种交互方式详细教学

汀丶人工智能

人工智能 自然语言处理 nlp 知识图谱 本体建模

创新引领!矩阵起源荣获中国信通院双重认可!

MatrixOrigin

数据库 分布式 云原生 超融合 矩阵起源

Cloud Kernel SIG月度动态:ANCK 5.10-016将落地kABI机制,5.10-015版本规划发布

OpenAnolis小助手

操作系统 内核 anck 龙蜥sig 版本规划

软件测试/测试开发丨Selenium环境安装配置

测试人

Python 程序员 软件测试 selenium chromedriver

【HDC.Cloud 2023】华为云区块链分论坛内容值得再读!

华为云开发者联盟

区块链 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

三问三答:细数GaussDB迁移的核心技术

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

沉潜蓄势,厚积薄发:StoneDB-5.7-V1.0.4版本正式发布!特性增强,稳定性大幅提升

StoneDB

数据库 版本发布 StoneDB

重塑未来的1课:组装式交付新引擎——华为云智能化低代码平台

云计算 低代码 华为云 华为开发者大会

GPT-4被破解!数智时代大突破!低代码开发平台揭秘:AI模型架构演进的利器

不在线第一只蜗牛

人工智能 低代码 模型调参 ChatGPT GPT-4

接口文档阅读方法:程序员必备的技术指南

Liam

程序员 接口文档 API

火热的低代码和无代码赛道

互联网工科生

软件开发 低代码 无代码 应用开发

从零开始构建一个电影知识图谱,实现KBQA智能问答[下篇]:Apache jena SPARQL endpoint及推理、KBQA问答Demo超详细教学

汀丶人工智能

人工智能 自然语言处理 知识图谱 智能问答 KBQA

实例分享| anyRTC 部署安徽某市应急实战指挥平台

anyRTC开发者

音视频 快对讲 融合会议 视频监控 综合调度

科兴未来|“追光逐电 才聚紫琅”光电产业创新创业大赛

科兴未来News

用友BIP全球司库“五大管家”,助力大型企业一流司库建设

用友BIP

全球司库

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