同城快递架构设计
背景
某上市公司全资投资成立的一家物流快递公司,主要进行同城快递业务,公司刚刚成立,组建 20 人技术部门,准备两个月后系统开发完成上线。
产品需求
l 用户通过 app 发起快递下单请求并支付
l 快递员通过自己的 App 上报自己的地理位置,每 30 秒上报一次
l 系统收到快递请求后,向距离用户直线距离 5km 内的所有快递员发送通知
l 快递员需要进行抢单,第一个抢单的快递员得到配单,系统向其发送用户详细地址
l 快递员到用户处收取快递,并记录到系统中:已收件
l 快递员将快递送到目的地,并记录到系统中:已送达
l 说明:预计上线后三个月日单超过 1 万,一年日单超过 50 万
系统用例图
通过系统用例图,可以看到系统用户分别是:寄件人、快递员。
寄件人功能包括:下单、支付。
快递员功能包括:抢单、取件、送达、位置上报。
下单、抢单业务活动图
下单、抢单时序图
系统部署图
部署说明:
CDN 加速静态资源文件访问。
采用 NGINX 作负载均衡。
寄件人微服务和快递员服务分开,保证功能互不影响,用户端流量激增时可以快速扩容。
订单服务和抢/配单服务独立部署,系统间采用 RPC 方式通讯。
消息队列采用 RocketMQ。
数据库采用 MySQL,主从架构,支持读写分离。
缓存服务采用 Redis,主从+哨兵模式。
订单状态图
版权声明: 本文为 InfoQ 作者【Mars】的原创文章。
原文链接:【http://xie.infoq.cn/article/d7a84a86e55b499f659188e56】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论