大作业
系统使用者包括下单用户和快递员
包括订单,位置,推送三个部分
订单模块管理接受新订单,支持抢单,维护订单状态
位置模块存储快递员当前位置,可查询给定位置附近的快递员
推送服务把抢单消息发给快递员,抢单成功后把订单地址发给快递员
下单/抢单业务活动图,用户新建订单,系统通知快递员,快递员参与抢单/送货
网关接受请求,交给负载均衡服务器,转发给应用服务器
负载均衡至少部署两个,保证高可用
应用服务器降位置信息存储进redis,订单信息存进DB
DB主主复制提供高可用,读写分离提高性能
订单创建写主库,保证逻辑正确。订单状态更新发消息,用consumer异步更新,在高并发时缓解DB压力
订单/位置/推送服务无状态,易扩容,可fail over。每个app server上都部署一个副本。
用户下单的时序图
先写DB,成功告知用户。接着查寻周围的快递员并推送有新订单的消息。
订单状态图:
用户新建/支付后订单可以被快递员抢单,被抢单后待快递员取件,配送成功则订单完成。未被抢单/取件配送失败会回到等待快递员抢单的状态。
评论