当前位置: 首页 > news >正文

【面试场景题】外卖点餐系统设计思路

文章目录

  • 需求分析
    • 外卖系统应该包含四个角色平台、商家、骑手、用户:
    • 技术难点:
  • 设计思路
    • 整体架构设计
    • 技术难点解决

需求分析

外卖系统应该包含四个角色平台、商家、骑手、用户:

平台管理:商家管理、用户管理、员工管理、营销管理、财务管理、客服系统
商家管理:入驻、审核、菜品管理、套餐管理、财务管理、员工管理、权限管理、优惠营销管理。
用户管理:查看商家、检索、优惠券、支付、退款、催单。
骑手管理:抢单、派单、配送管理、路径规划、结算、提现。

技术难点:

餐食信息频繁刷新读取、商家排序(按距离、按推荐系数、按好评、按历史偏好)、库存超卖、路径规划、抢单

设计思路

整体架构设计

  1. 按业务域划分,应该要将四个角色的业务划分隔离,后续方便扩展。
  2. 下沉部分通用服务:如短信、素材管理、支付、实名认证等

技术难点解决

  1. 餐食信息在点单高峰期会面临频繁刷新,那么使用缓存存储商家、菜品等基础信息,使用CDN缓存图片、视频等信息。
  2. 商家排序比较复杂的可能是多维度的排序场景,其中距离是实时计算出来的,可以先通过Redis GeoHash圈定一定范围内的店家,然后再使用其他指标进行排序。
  3. 库存超卖:可以通过redis做库存管理、或使用乐观锁管理库存,可参考市面通用库存超卖解决方案。
  4. 路径规划:可以使用第三方,如百度地图等开放能力。
  5. 抢单:与库存超卖类似,一个人抢了之后,另一个人就不能再抢单成功。

参考:
https://baijiahao.baidu.com/s?id=1833895772956860023&wfr=spider&for=pc

http://www.dtcms.com/a/297237.html

相关文章:

  • mysql 和oracle的选择
  • Android Studio 2024 内嵌 Unity 3D 开发示例
  • Oracle转Mysql建表脚本
  • Android studio自带的Android模拟器都是x86架构的吗,需要把arm架构的app翻译成x86指令?
  • 【Android Studio】安装Trae插件后Android Studio 启动崩溃问题处理
  • 瑞萨电子RA-T MCU系列新成员RA2T1——电机控制专家
  • CPU(中央处理器)和GPU(图形处理器)的区别
  • vscode npm run build打包报ELIFECYCLE
  • 一文解析公平锁、非公平锁、悲观锁、乐观锁、可重入锁和锁的升级(含详细代码实例)
  • MJ11032G和MJ11033G是对管由onsemi/安森美公司研发的一款高性能、低功耗的达林顿晶体管
  • 能源管理网页的碳中和视觉语言:数据图表中的环保色彩体系创新
  • 基于51单片机的光照强度检测系统Protues仿真设计
  • 卸油管连接检测误报率↓78%:陌讯多模态融合算法实战解析
  • 信息学奥赛一本通 1593:【例 2】牧场的安排 | 洛谷 P1879 [USACO06NOV] Corn Fields G
  • 机器学习——KNN算法
  • SpringBoot与ApacheSpark、MyBatis实战整合
  • DeepSeek FlashMLA 技术拆解,AI 推理迎来颠覆性突破
  • 黑马点评常见面试题
  • Apache Ranger 权限管理
  • Python之--字典
  • CMake进阶: 检查函数/符号存在性、检查类型/关键字/表达式有效性和检查编译器特性
  • LP-MSPM0G3507学习--11ADC之二双通道高速DMA采样
  • rtpengine的docker化
  • Linux进程信号——信号保存
  • 在幸狐RV1106板子上用gcc14.2本地编译安装ssh客户端/服务器、vim编辑器、sl和vsftpd服务器
  • OSI 七层模型和五层模型
  • Vue3 学习教程,从入门到精通,Vue3 监听属性(Watchers)语法知识点及案例代码(16)
  • Unity编辑器拓展 IMGUI与部分Utility知识总结(代码+思维导图)
  • JAVA-09(2025.07.25学习记录)
  • MMRotate ReDet ReFPN 报错 `assert input.type == self.in_type`