題目
1 設計概述
同城快遞系統是同一個城市裡面方便使用者快速寄送快遞的業務,公司作為新切入快遞業務,對使用者體驗,收發快遞的速度都要有競爭力。
1.1 功能概述
同城快遞系統主要功能包括使用者下單,使用者提供貨品,使用者收貨;快遞員搶單,快遞員去指定地點收貨,快遞員送貨達到目的地。常用場景如下:
* a) 使用者下訂單,快遞員搶單。
* b) 快遞員與使用者溝通取貨時間地點,快遞員按照資訊去取貨品,送回站點,重新規劃派送路徑。
* c) 快遞員從服務點拿取要送的貨品,送達目標客戶。
* d) 快遞員app自動上報位置。
* e) 有新訂單,搶單微服務給 5km 內的快遞員 發可以搶單資訊。
* 7)快遞員上班地理位置資訊。
以下為用例圖,主要角色有使用者,快遞員,貨品,訂單, 訊息系統。
1.2 ⾮功能約束
同城快遞系統上線3個月 日訂單超過1萬(按照2萬計),使用者量預計20萬,日UV達2萬;未來預計⼀年,日訂單超過50萬(按照100萬計),使用者量預計1000萬,⽇UV達到100萬。
- 查詢效能⽬標:平均響應時間<300m s,95% 響應時間<500m s,單機T PS>100;
- 下單效能⽬標:平均響應時間<800m s,95% 響應時間<1000m s,單機T PS>30;
- 監控效能⽬標:平均響應時間<800m s,95% 響應時間<1000m s,單機T PS>30;
- 系統核⼼功能可⽤性⽬標:>99.97% ;
- 系統安全性⽬標:系統可攔截DDDOS攻擊,密碼資料雜湊加密,使用者端資料HT T PS加密,外部系統間通訊對稱加密;
- 資料持久化⽬標:>99.99999% 。
2.系統部署圖與整體設計
系統上線時預計部署120臺物理機,需要閘道器伺服器,微服務伺服器,負載均衡,分散式快取,訊息佇列伺服器,訊息消費者伺服器,Redis記憶體資料庫,資料庫伺服器等。
2.1 系統部署圖
- 閘道器服務主要是使用者鑑權,防止攻擊,第一個面向使用者系統,需要10臺伺服器。
- 訊息佇列伺服器,負責快速響應使用者請求,需要5臺伺服器。
- 負責均衡伺服器,需要對流量進行均衡到業務伺服器,需要5臺伺服器。
- 分散式快取伺服器,這是減輕伺服器的重要手段,需要10臺伺服器。
- 使用者微服務,正常在註冊、登入才會存取,流量不是很大,需要5臺伺服器。
- 訂單微服務,大流量入口,使用者下單的時候,快遞搶單,使用者狀態等操作頻繁,需要50臺伺服器。
- 搶單微服務,使用者下單成功以後,搶單微服務給附近5km 的快遞員傳送新訂單推播;快遞員會搶單,通過搶單微服務,最終確定接單的快遞員;需要5臺伺服器;
- Redis 記憶體資料庫,記錄快遞員的最新地理位置資訊;需要5臺伺服器;
- 資料採集系統的功能職責為查詢使用者消費資料,生成統計報表,部署5臺伺服器,依賴使用者系統和訂單新系統,實現訂單資訊和報表統計功能。
- 資料庫系統,業務系統與資料採集服務資料分離,都需要主資料庫、重資料庫,需要20臺伺服器。
- 第三方支付系統為外部系統,支援使用者用微信、支付寶、銀聯等第三方支付充值。這裡是訂單微服務的一部分。
2.2 下單搶單場景系統序列圖
3. 使用者下單搶單場景系統設計
3.1 下單搶單場景的業務活動圖(角色領域泳道模型)
3.2 訂單狀態圖模型