【面试场景题】外卖点餐系统设计思路
文章目录
- 需求分析
- 外卖系统应该包含四个角色平台、商家、骑手、用户:
- 技术难点:
- 设计思路
- 整体架构设计
- 技术难点解决
需求分析
外卖系统应该包含四个角色平台、商家、骑手、用户:
平台管理:商家管理、用户管理、员工管理、营销管理、财务管理、客服系统
商家管理:入驻、审核、菜品管理、套餐管理、财务管理、员工管理、权限管理、优惠营销管理。
用户管理:查看商家、检索、优惠券、支付、退款、催单。
骑手管理:抢单、派单、配送管理、路径规划、结算、提现。
技术难点:
餐食信息频繁刷新读取、商家排序(按距离、按推荐系数、按好评、按历史偏好)、库存超卖、路径规划、抢单
设计思路
整体架构设计
- 按业务域划分,应该要将四个角色的业务划分隔离,后续方便扩展。
- 下沉部分通用服务:如短信、素材管理、支付、实名认证等
技术难点解决
- 餐食信息在点单高峰期会面临频繁刷新,那么使用缓存存储商家、菜品等基础信息,使用CDN缓存图片、视频等信息。
- 商家排序比较复杂的可能是多维度的排序场景,其中距离是实时计算出来的,可以先通过Redis GeoHash圈定一定范围内的店家,然后再使用其他指标进行排序。
- 库存超卖:可以通过redis做库存管理、或使用乐观锁管理库存,可参考市面通用库存超卖解决方案。
- 路径规划:可以使用第三方,如百度地图等开放能力。
- 抢单:与库存超卖类似,一个人抢了之后,另一个人就不能再抢单成功。
参考:
https://baijiahao.baidu.com/s?id=1833895772956860023&wfr=spider&for=pc