事件驱动架构(event-driven architecture,eda)是一种以事件的产生、检测、消费和响应为核心的分布式系统设计范式。其核心思想是组件通过异步事件通信解耦,实现高扩展性、实时性和灵活性。
请围绕“论事件驱动的架构”论题,依次从以下三个方面进行论述。
1、概要叙述你参与管理和开发的软件项目,以及你在其中承担的主要工作。
2、详细论述事件驱动架构的概念和特点。
3、结合你具体参与管理和开发的实际项目,说明是如何利用事件驱动的架构进行分析、设计开发的全过程的。
一、摘要
2024年12月,我参与了我司生鲜电商平台的订单支付系统重构项目,该项目旨在构建一个高可靠性的异步处理架构,以解决同步调用链导致的业务脆弱性问题。平台核心涵盖支付网关集成、库存管理、积分计算和消息通知等模块,旨在通过事件驱动模式提升系统扩展性和容错能力。在本次项目中,我担任系统架构设计师,全面主导事件驱动架构的落地实施,从痛点分析、技术选型到事件格式设计和消费者服务改造均起到核心决策作用。针对支付成功但订单状态异常的同步瓶颈,我引入apache rocketmq作为事件总线,通过事务后发事件机制、消费者幂等处理和分区键优化等方式,确保了系统在高并发场景下的最终一致性和顺序性。在我的带领下,项目于2025年02月上线,系统上线后运行稳定,有效支撑了平台业务的高效增长。本文将以该项目为例,深入探讨事件驱动架构在分布式系统解耦和可靠性提升中的应用策略和实践效果。
二、正文
在我司生鲜电商平台早期架构中,技术栈采用feignclient的同步调用设计。核心支付服务基于java语言和spring boot框架开发,后端使用mysql关系型数据库进行事务处理,并通过数据库连接池管理资源。其他服务如库存管理、积分计算、短信通知和数据分析,也都作为独立模块基于spring cloud微服务框架开发,并通过http restful api进行同步调用。
在2424年12月一次大型促销活动期间,当晚八点流量峰值到来,订单量快速上升产生了大量收款支付回调,当支付网关回调我们的系统时,支付服务会在先在数据库事务中更新订单状态,然后在一个主线程内依次调用库存服务、积分服务、短信服务和数据分析服务。但积分服务因其数据库查询响应慢,在大流量下响应时间从平均20毫秒上升到超过5秒,积分服务的响应延迟导致支付服务主线程大量阻塞,进而耗尽了支付服务资源导致oom,引发支付服务无法再处理新的支付回调,也无法更新订单状态,前端用户大量出现“支付超时”的提示,但事实上银行已经扣款成功。这次事故导致了超
本篇完!