架构师训练营大作业一
背景
通达是某上市公司全资投资成立的一家物流快递公司,主要进行同城快递业务,公司刚刚成立组建20人技术部门,准备两个月后系统开发完成上线,你是后端架构师,请你完成系统顶层架构设计,并组织架构评审会议。
说明:技术部没技术负责人,由产品负责人兼管(产品负责人为原某互联网大厂的产品总监, 研发出身),架构师(你)是技术部最资深的技术人员。
产品需求
用户通过app发起快递下单请求并支付
快递员通过自己的Ap上报自己的地理位置,每30秒上报一次
系统收到快递请求后,向距离用户直线距离5km内的所有快递员发送通知
快递员需要进行抢单,第一个抢单的快递员得到配单,系统向其发送用户详细地址
快递员到用户处收取快递,并记录到系统中:已收件
快递员将快递送到目的地,并记录到系统中:已送达
说明:预计上线后三个月日单超过1万,一年日单超过50万
用例图
系统中有3个角色:
用户:寄快递
快递员:收快递和送快递
调度系统:进行订单的调度和结算
下单活动图
系统部署模型
说明:
鉴于系统上线初期请求量有限,以及考虑到业务的复杂度,现在未拆分微服务,而是采用应用服务整体部署的方案。
最前端采用Nginx作为负载均衡服务器,把请求转发给后面的多台应用服务器。 多台应用服务器采用Redis作为Session服务器,保存用户session。
考虑到未来数据规模增长,数据库没有采用MySQL,而是直接采用了分布式的关系数据库系统TiDB,完全兼容MySQL的分布式New SQL数据库,数据量增长的时候可以方便进行水平扩展。
位置存储服务采用分布式Redis数据库结合TiDB数据库,Redis中存储用户最新的位置信息并借助Redis的GEO数据结构方便的进行位置筛选。TiDB中存储用户的所有历史位置信息,可以对用户的行踪进行跟踪记录和统计分析。
下单抢单场景时序图
订单状态图
评论