【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

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

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

关注

评论

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

涨知识!Android面试真题解析火爆全网,搞懂这些直接来阿里入职

欢喜学安卓

android 程序员 面试 移动开发

区块链技术如何真实有效的赋能智慧交通?

CECBC

区块链

大作业2

走走,停停……

使用Github Actions部署静态网站

玉龙BB

GitHub Pages Hugo Github Actions

MySQL蜜罐获取攻击者微信ID

Java架构师迁哥

波场链智能合约DAPP系统开发技术

薇電13242772558

智能合约 dapp

干货速递,百度BML自动超参搜索技术原理揭秘与实战攻略!

百度大脑

性能测试思考分析

Andy

量化机器人管理系统开发|市值管理机器人模式系统开发

W13902449729

市值管理机器人开发 市值管理系统开发

同城快递系统设计文档

业哥

3轮技术面+总监面+HR面轻松砍下阿里口碑Offer!

Java架构追梦

Java 面试 架构师 口碑Offer

真牛!成功跳槽百度工资从15K涨到28K,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

如何使用ClickHouse实现时序数据管理和挖掘?

京东科技开发者

数据库 数据采集 数据库管理工具

更新完IOS14,网络工程师又开始背锅了

接口测试--获取动态参数进阶

测试人生路

接口测试

这些面试题你会吗?为什么有人说Android开发不再吃香?最全的BAT大厂面试题整理

欢喜学安卓

android 程序员 面试 移动开发

通过 Oracle 变量更新公司名称

Flychen

ml-agents项目实践(一)

行者AI

模型训练

视频混剪怎么准备素材?会声会影视频消音操作步骤详解!

奈奈的杂社

视频剪辑 视频后期 混剪 视频消音

全球台式机CPU市场份额AMD超越Intel?别再混淆视听,误导消费者了!

E科讯

中国用户规模最大教育科技独角兽作业帮再获投资机构青睐

阿里云技术专家解读:2021 年六大容器技术发展趋势

阿里巴巴云原生

云计算 阿里云 容器 云原生 k8s

OpenYurt 入门 - 在树莓派上玩转 OpenYurt

阿里巴巴云原生

阿里云 开源 容器 云原生 中间件

揭秘人民日报创作大脑:百度大脑智能创作平台助力打造“十八般武艺”

百度大脑

有奖话题 | 2021 新年Flag,牛转乾坤!

InfoQ写作社区官方

话题讨论 热门活动

深入讲解拉链表,还怕面试官问?

大数据老哥

大数据 数据模型 数仓项目

大作业一

走走,停停……

全球台式机CPU市场二八分定型,英特尔仍旧占据全球最大份额

E科讯

实物资产卡片多数量拆分流程整理2021.01.06

Flychen

简述CAP原理

Andy

别无分号只此一家,Python3接入支付宝身份认证接口( alipay.user.certify)体系(2021年最新攻略)

刘悦的技术博客

Python 支付宝 身份认证 刷脸 实名认证

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