大作业 1
背景:
通达是某上市公司全资投资成立的一家物流快递公司,主要进行同城快递业务,公司刚刚成立,组建 20 人技术部门,准备两个月后系统开发完成上线,你是后端架构师,请你完成系统顶层架构设计,并组织架构评审会议。
说明:技术部没技术负责人,由产品负责人兼管(产品负责人为原某互联网大厂的产品总监,研发出身),架构师(你)是技术部最资深的技术人员。
产品需求:
用户通过 app 发起快递下单请求并支付
快递员通过自己的 App 上报自己的地理位置,每 30 秒上报一次
系统收到快递请求后,向距离用户直线距离 5km 内的所有快递员发送通知
快递员需要进行抢单,第一个抢单的快递员得到配单,系统向其发送用户详细地址
快递员到用户处收取快递,并记录到系统中:已收件
快递员将快递送到目的地,并记录到系统中:已送达
说明:预计上线后三个月日单超过 1 万,一年日单超过 50 万
技术方案:
一、以下是系统部署图:
用户通过 app 客户端访问系统,先经过 nginx 反向代理层再经过站点层-->缓存层->服务层->数据层,反向代理层和站点层确保是无状态这样扩展集群比较简单,且各层都可以做负载均衡来分摊访问压力。
二、以下分别是用户下单和快递员抢单的时序图:
用户登录 app 后点击快递下单功能后系统会生成一个快递订单,支付成功后,系统会更新订单并且向距离用户直线距离 5km 内的所有快递员发送通知。
用户下单后会通知快递员,快递员收到 app 通知消息后进入订单画面进行抢单,如果抢单成功系统会发送该订单对应所属的客户地址信息给抢单成功的快递员,快递员随后就可以到该地址进行揽件并派送。
三、以下是用例图
用户可以使用下单、评价、付款、退款功能。快递员可以使用抢单、位置上报功能。订单由系统根据事件触发自动生成和更新。
四、以下是订单状态图
新订单的状态:待支付、付款中、已付款、已完成、未付款。
退款订单的状态:待退款、退款中、已退款。
五、以下是下单、抢单的活动图
总结:
以上架构图其实是偏向中后期业务量上来的场景,如果早期业务量很少的话可以采取单体架构即不引入负载均衡层、缓存层,随着后续业务量提升再扩展架构这样在时间和金钱成本上都比较划算。
版权声明: 本文为 InfoQ 作者【简简单单】的原创文章。
原文链接:【http://xie.infoq.cn/article/e9be07689fdd006455a893051】。未经作者许可,禁止转载。
评论