写点什么

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

  • 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:0642319

评论

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

如何通过微软AD域来管理企业用户?

ServiceDesk_Plus

AD域 #运维

成长-最佳实践-奖励自己

南山

成长

成长-最佳实践-高效学习-认知科学

南山

成长

KWDB 开源社区走进天津大学

KaiwuDB

智算筑基,九章云极DataCanvas公司闪耀2024年服贸会

九章云极DataCanvas

九章云极DataCanvas公司荣获2024年服贸会“科技创新服务示范案例”

九章云极DataCanvas

2024年必试:七大免费货币转换API推荐

幂简集成

API 货币

VMware Fusion Pro 12 Mac vm虚拟机激活版

Mac相关知识分享

软件 虚拟机

成长-最佳实践-多与人交流

南山

成长

成长-最佳实践-高效学习-开源项目

南山

成长

成长-最佳实践-管理情绪V3

南山

成长

部署SD-WAN时会遇到什么问题及应对策略

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商 SDWAN SD-WAN国际专线

NTFS Disk by Omi NTFS for mac(NTFS 磁盘管理器)中文版

Mac相关知识分享

小说

喜报!望繁信科技荣获中国信通院“流程挖掘智能工具能力要求检验证书”

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能 望繁信科技

【论文速读】|PROMPTFUZZ:利用模糊测试技术对大语言模型中的提示注入进行鲁棒性测试

云起无垠

成长-最佳实践-高效学习-新技术

南山

FxFactory 8 Pro for Mac(视觉特效处理包)激活版

Mac相关知识分享

1688 跨境代采系统:助力外贸工作者的反向海淘利器详解

tbapi

1688 agent 1688代采系统 反向海淘系统 逆向海淘系统 1688跨境代采系统

鸿蒙开发案例:区字棋

zhongcx

成长-最佳实践-保持耐心

南山

成长

大模型后训练时代,“呼唤”普惠算力服务新范式

九章云极DataCanvas

AI 赋能大模型:从 ChatGPT 到国产大模型的角逐与发展契机

GPU算力

HPC 算力 高性能计算 LLM 大语言模型

成长-最佳实践-避免自以为是

南山

成长

发力聚焦主营业务,OSL 的增长空间几何? | Techub 财报解读

TechubNews

成长-最佳实践-活在当下

南山

成长

成长-最佳实践-高效学习-基础知识

南山

成长

从一个事故中理解Redis(几乎)所有知识点

阿里技术

redis 大Key

KaiwuDB 亮相第二十四届中国国际工业博览会

KaiwuDB

KWDB 正式捐赠给开放原子开源基金会

KaiwuDB

混合WAN与SD-WAN:两种架构的利与弊

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

成长-最佳实践-定义成功

南山

成长

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