HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

从单体到微服务的系统改造:采用事件驱动架构优化会员系统

  • 2023-09-19
    北京
  • 本文字数:1221 字

    阅读完需:约 4 分钟

大小:646.36K时长:03:40
从单体到微服务的系统改造:采用事件驱动架构优化会员系统

Baemin 是一家快速增长的送餐服务公司,它已经成功地从单体架构过渡到了更灵活的基于微服务的系统。这一转变的基石是事件驱动架构的实现,这是Baemin架构之旅的一个方面,正如最近的一篇博客文章所描述的那样。该架构的突出特点包括通过分层的事件订阅者细致地分离了关注点,以及战略性地使用事件存储来提高可靠性。Baemin 利用通用的关系数据库管理系统(RDBMS)并采用事务发件箱模式(Transactional Outbox Pattern),构建了一个可扩展且可靠的健壮框架。

 

最初,Baemin 努力克服单体架构的局限性,但随着公司规模的扩大,这种局限性变得越来越明显。系统无法处理激增的流量和订单,导致了大量的错误。向微服务的迁移于 2019 年 11 月完成,为下一阶段奠定了基础:采用事件驱动的架构。该架构对于实现各种微服务之间的松耦合、增强系统的弹性和灵活性至关重要。

 

Baemin 事件驱动架构的本质在于发布领域事件,而不是命令或请求。这种微妙但关键的区别可以减少不同系统之间的依赖关系。在传统的基于命令的系统中,一个服务的更改可能需要另一个服务也进行更改,从而导致紧密耦合的架构。通过关注领域事件,Baemin 确保每个微服务独立运行,并订阅与其领域相关的事件。

 

在 Baemin 的事件驱动架构中,事件和订阅者被组织为三层,以确保模块化和可扩展性。第一层,应用程序事件和第一订阅服务层,利用 Spring 框架的应用程序事件来管理内部、特定于领域的任务,并通过AWS简单通知服务(SNS)发布这些事件。第二层,内部事件和第二订阅服务层,处理的任务虽不是领域的核心,但却是必不可少的。例如,在登录过程中,该层负责一些次要任务,例如从其他设备中注销。最后,第三层称为外部事件和第三订阅服务层,用于发布外部系统将使用的事件。这些事件是通用的,以避免创建与外部系统的依赖关系。这种分层的方法允许 Baemin 在保持松耦合架构的同时确保了每个微服务都能独立运行。

 

事件驱动架构的挑战之一是确保事件发布的可靠性。Baemin 通过引入事件存储系统来解决这一问题。该存储系统使用与其领域存储相同的关系数据库管理系统(RDBMS),从而确保了事务数据的一致性。事件存储充当缓冲区,捕获事件并确保它们能可靠地发布。

 

该架构采用事务发件箱模式(Transactional Outbox Pattern)来确保数据一致性和可靠的事件发布。此模式对领域数据和事件数据使用相同的存储,从而实现可靠的事件发布机制。下图是其最终的设计,展示了不同类型的事件、事件存储系统和订阅者层之间的交互。

 


尽管如此,最终的设计还是值得注意的,因为它通过不同层次的事件订阅者细致地分离了关注点。使用事件存储来确保可靠性以及关注松耦合的领域事件是其突出的特点。

 

总而言之,Baemin 的架构转型为解决规模问题的组织提供了丰富的见解。通过对事件订阅者进行分层,并利用由通用 RDBMS 支持的事件存储,Baemin 精心打造了一个不仅满足其当前需求,而且非常适合未来的可扩展增强系统。

 

原文链接:

https://www.infoq.com/news/2023/09/delivery-hero-uses-eda/

 

2023-09-19 15:0639198

评论

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

写出一个复杂的SQL步骤

程序员万金游

#数据库 #java #Mysql #SQL

ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑

汀丶人工智能

Elastic Search 搜索系统

Hazelcast IMDG 概览

数新网络官方账号

数据库 #数据库

EVE-NG的环境导入IOL组件

小魏写代码

QCN9024 with IPQ4019|Wallys Dual Band Card DR9074E: Unleash the Power of Open Source Networking

wallyslilly

IPQ4019 QCN9074

如何选择安全又可靠的文件数据同步软件?

镭速

数据实时同步

Hadoop RPC简介

数新网络官方账号

大数据 hadoop hadoop rpc

多模态对比语言图像预训练CLIP:打破语言与视觉的界限

汀丶人工智能

人工智能 自然语言处理 计算机视觉 GPT 多模态大模型

中企出海 | 中建材、红狮、华润、华新都在做的事儿!

用友BIP

中企出海

3D模型如何添加金属贴图?

3D建模设计

材质 纹理 金属贴图

面向Three.js开发者的3D自动纹理化开发包

3D建模设计

AI 3D模型 three.js AI自动纹理

可视化(Visual) SQL初探

数新网络官方账号

数据库 sql #数据库

全球业务 | 用友废钢智能判级系统在日本成功通过验收

用友BIP

废钢智能判级

第18期 | GPTSecurity周报

云起无垠

专业好用的多媒体播放器Infuse 最新版中文

胖墩儿不胖y

Mac软件 多媒体播放器

企业通关必备,iPaaS应该这样搭建

RestCloud

应用集成 ipaas 应用与数据集成

独家特性 | 腾讯云大数据ES:一站式索引全托管,自治索引大揭秘!

腾讯云大数据

如何选择最适合你的香港服务器服务?五大优势你不可不知

一只扑棱蛾子

香港服务器

企业内部外网向内网传输文件如何实现高效安全?

镭速

内外网数据交换 内部外网隔离

Databend 开源周报第 117 期

Databend

数字化转型如何落地?

优秀

数字化转型 数字化业务转型

用友BIP,IoT在光伏行业的应用

用友BIP

物联网 智能制造

超2000个大模型应用,支持文心4.0!AI Studio星河大模型社区升级上新

飞桨PaddlePaddle

飞桨 AI Studio 星河社区 文心大模型4.0

HDFS架构介绍

数新网络官方账号

大数据 hdfs 架构-

如何为模型添加光照效果?

3D建模设计

材质 纹理 光照贴图

苹果mac电脑矢量插画设计推荐 Illustrator 2024 补丁激活版中文

mac大玩家j

Mac软件 矢量设计 Mac软件矢量工具

40 + 专家齐聚共谋数据未来,StarRocks Summit 2023 议程公布!更多精彩议题等你探索...

StarRocks

数据库 OLAP StarRocks

百度AICA首席AI架构师培养计划第七期毕业,大模型深入产业见成果

飞桨PaddlePaddle

架构师 大模型 AICA

用友BIP数智干部管理——数管干部 人才强企

用友BIP

数智干部管理

从单体到微服务的系统改造:采用事件驱动架构优化会员系统_微服务_A N M Bazlur Rahman_InfoQ精选文章