麦当劳送餐平台是如何处理每秒 20,000 个订单的

麦当劳送餐平台是如何处理每秒 20,000 个订单的-1

导读:这篇文章概述了麦当劳食品配送平台的架构。如果对各位有用,欢迎分享这篇文章。

本文将以故事形式描述麦当劳的架构流程与方法。

2024 年 3 月,德国柏林。Maria 在医院轮班结束后,正在午休。

但那天她没有带午餐,所以她又饿又累。于是她决定通过移动应用程序从麦当劳订餐。

麦当劳送餐平台是如何处理每秒 20,000 个订单的-2

麦当劳使用六边形架构来降低复杂性

可以将六边形架构想象为一种将核心应用程序与数据库和用户界面等外部服务分开的模式。

麦当劳送餐平台是如何处理每秒 20,000 个订单的-3

通过六边形架构连接外部服务

应用程序域位于六边形架构内部。业务逻辑遵循领域驱动设计(DDD )原则,这意味着它不应该泄漏到六边形的外面。

端口是应用程序与外部服务交互的接口。而适配器是端口的实现。这意味着端口定义契约或接口,而适配器提供实现来履行协议。

麦当劳送餐平台是如何处理每秒 20,000 个订单的-4

麦当劳送餐平台是如何处理每秒 20,000 个订单的-每日运维提高事件驱动架构的可靠性麦当劳使用模式注册表来维护定义明确的事件契约,这将有助于模式验证。此外,它们将事件模式缓存在服务中以提高系统性能。模式中描述了事件的预期数据字段和类型。此外,它们还运行备用数据库,以防止消息代理不可用时丢失数据。因此,事件会写入备用数据库,并在消息代理再次正常运行后发布回消息代理。此外,如果模式验证失败,它们会将事件路由到死信Topic,然后使用实用工具来修复这些事件。

麦当劳每天为大约 37000 个地区和 6400 万+用户提供服务。

系统可扩展性是一个难题。大规模分布式网络的可扩展性更加困难。然而他们将平台扩展到每秒 20,000 个订单,延迟低于 100 毫秒。

麦当劳后端架构

以下是麦当劳食品配送平台的架构与流程:

1. 从菜单中选择食物

Maria打开移动应用程序,将看到一个包含食品的菜单。

麦当劳送餐平台是如何处理每秒 20,000 个订单的-6

向用户展示菜单

他们使用反向代理服务器来托管所有 API 端点,并使用它将请求路由到微服务。这表示着架构具有 REST API 的API 网关模式。

系统将菜单和餐厅的工作时间存储在 SQL 数据库中。并使用无服务器函数查询 SQL 数据库,以创建 JSON 数据格式的菜单。

它们通过 HTTP 响应向用户显示可用食品的菜单与价格。

2. 通过忠诚度奖励获得折扣

Maria 从菜单中选择了巨无霸汉堡。然后她可以通过过去的购买积分购买。以及在后续中能够获得相关折扣。