为了账号安全,请及时绑定邮箱和手机立即绑定

Blinkit/Instamart即时配送平台的高级系统设计:一个可扩展且高效的方案

嗨,大家好!👋

我正在练习系统设计面试题,最近为一个类似于Blinkit()Instamart()的平台类应用设计了高级设计(HLD)。该系统旨在处理实时产品库存、下单和配送情况。

我很乐意听听你对这个设计的想法。如果你有任何改进建议,请分享一下。

这里有一个Excalidraw图表,以便更清晰地查看:
点击这里查看 Excalidraw链接

问题说明

设计一个像Blinkit/Instamart这样的生鲜配送平台的可扩展系统,该系统可以:

  1. 显示用户附近配送中心可提供的产品。
  2. 让用户可以轻松下单。
  3. 根据需要动态分配配送人员。
  4. 实时跟踪订单和配送情况。
高层次架构

  1. 用户挑选商品
  • 当用户打开应用时,他们会请求可用产品列表。
  • 这个请求会被 产品可用性服务 处理,该服务以用户的 位置 作为输入。
第二步:查找附近的派送点
  • 附近配送中心服务 确定距离用户附近的配送中心。
  • 该服务依赖于 Redis 快速检索配送中心信息,这些信息映射到 位置段
  • 选择 Redis 是因为:
  • 它支持 地理位置索引,从而能够高效地进行邻近搜索。
  • 配送中心的位置相对固定,使得 Redis 成为 读多写少的场景 的理想选择。
第 3 步:与第三方地图服务整合
  • 附近的 DC 服务与一个 第三方地图服务(如 Google Maps API)集成,以:

  • 确定 用户所在的位置段

  • 查找附近的配送中心位置段。

  • 这些位置段中的配送中心数据从 Redis 中获取并发送给 商品可用性服务
步骤 4: 检查产品是否可获得
  • 产品可用性服务 查询库存情况以确认哪些产品在哪些配送中心有货。
  • 用户收到可供订购的产品列表。
步骤五:接下来就是点单了
  • 当用户下单时,请求订单的服务将请求转发给订单服务,以创建数据库中的订单,查询库存服务以验证库存是否足够并减少库存。

第 6 步:找一个配送合作伙伴

  • 订单请求服务调用Delivery Partner Service来指派一名配送伙伴。
  • Delivery Partner Service查询Delivery Partner Location Service以寻找位于配送中心附近的配送伙伴。
  • 这一过程与寻找附近配送中心的逻辑类似。
第七步:更新配送伙伴的位置信息
  • 送餐伙伴会定期向送餐员定位服务发送他们的位置信号。
  • 此服务:
  • 第三方地图服务集成,以确定送餐伙伴的位置段
  • 在Redis中更新送餐伙伴的位置,以便快速检索。
第 8 步:送达状态
  • 一旦订单送达后,配送伙伴的位置服务会将派送状态发送到一个Kafka消息主题
  • 订单配送状态订阅者读取Kafka消息主题,并更新订单服务,后者则更新数据库里的订单状态。
设计亮点
  1. Redis 用于快速邻近搜索
  • Redis 用于存储配送中心及其配送合作伙伴位置的对应关系,以实现快速查找。
  • Redis 的 地理空间索引功能 确保了基于位置的查询处理效率。

2. 事件驱动型通信。

Kafka 用于服务间异步通信,确保此类事件的可靠性和可扩展性,如订单更新和配送追踪。

3. 可扩展的架构

  • 所有服务(例如,产品可用性服务、订单服务、配送伙伴服务)都是无状态,并设计成水平扩展

4. 第三方地图应用

我们整合了像 Google Maps API 这样的地图服务,用于定位地理位置、确定路线和优化行程。

技术堆栈
  • 后端技术:Java,Spring Boot
  • 数据库:PostgreSQL,Redis(用于订单和库存的位置映射)
  • 消息队列:Kafka用于事件驱动通信
  • 外部服务(如 Google Maps API):用于地理空间数据获取
  • 缓存系统:Redis用于快速数据检索
未来的改进
  1. 动态定价:根据需求和库存情况来实施动态定价。
  2. AI/ML集成:使用AI和机器学习模型来分配配送伙伴并优化路线。
  3. 分析仪表板:提供一个实时分析仪表板,以监控配送效率和用户行为。

这是 Blinkit/Instamart 的 高层次设计。请告诉我你对这个设计的看法,或者你觉得需要改进的地方吧!你的反馈对我们非常有帮助。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消