写点什么

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

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

评论

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

是观察者,也是实践者!|华为云开源开发者大前端技术论坛完满结束

OpenTiny社区

OpenTiny TinyVue TinyEngine 前端开源 DevUI

手把手教你华为鸿蒙开发之第十一节

The Wang

华为

手把手教你华为鸿蒙开发之第十二节

The Wang

华为

虚拟化世界,正上演一场「星际穿越」

脑极体

AI

一站式在线打字学习平台-巧手打字通

巧手打字通

键盘 打字练习 打字软件 打字练习软件 打字训练

HAMi已在云厂商、互联网等数十家企业应用 异构算力利用率提升5-10倍

极客天地

RAG分块策略:主流方法(递归、jina-seg)+前沿推荐(Meta-chunking、Late chunking、SLM-SFT)

汀丶人工智能

rag

最新 HUAWEI DevEco Studio 使用技巧

万少

ide 鸿蒙 HarmonyOS NEXT

加速 AI 应用落地!DataWorks 数据治理中心全新升级为数据资产治理

阿里云大数据AI技术

人工智能 大数据 数据分析 Dataworks

手把手教你华为鸿蒙开发之第十节

The Wang

华为 huawei

有哪些值得推荐的AI人工智能网站?这10个一定要知道!

职场工具箱

人工智能 效率工具 办公软件 AIGC AI生成PPT

为什么ETH 3.0需要Lumoz的ZK算力网络?

石头财经

文字稿 | MatrixOne2.0.0:AI向量与高可用能力的重磅升级

MatrixOrigin

数据库

Lumoz的ZK算力网络,加速以太坊3.0的到来

股市老人

为什么ETH 3.0需要Lumoz的ZK算力网络?

加密眼界

镜舟科技荣登 CCFA 2024 年度零售科技新锐企业榜单

镜舟科技

开源 数据分析 分析型数据库 StarRocks

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