1. 程式人生 > 實用技巧 >12306售票系統後臺開發需求分析和概念設計

12306售票系統後臺開發需求分析和概念設計

火車售票後臺開發需求分析和概念模型

1.前言

本專案是立足於目前12306火車售票系統,對售票系統從資料庫的設計、介面實現,到與前端互動等,逐步分析,儘可能優化,以便提供一個高效能、高併發的售票系統。

2.專案簡介

題目基本要求

  • 參考12306站點進行售票系統建模設計,儘可能接近覆蓋真實線上系統,實現的功能有但不限於:
    • 使用者資訊註冊
    • 查詢餘票: 根據時間,車次,站點區間,座次(一等座,二等座,硬臥,硬座…)查詢餘票
    • 售票: 支援一次購買同一車次的多張車票(多人),支援訂單30分鐘內鎖定,超時釋放。支付介面可以mock。
    • 退票: 支援一個使用者賬戶下的批量退票
    • 改簽: 同一使用者一張車票只能改簽一次
  • 所有讀寫介面延遲要求 <= 500ms
  • 單機支援到500qps的併發請求

3.需求分析

  1. 使用者可以註冊賬號並登入12306客戶端軟體;
  2. 使用者可以檢視自己的相關資訊,包括待出行訂單、歷史訂單等;
  3. 使用者還可以檢視自己未支付的訂單,和正在搶票的訂單;
  4. 使用者可以通過多種條件進行查詢車票情況,比如起始站點、目的站點、時間和購票型別(高鐵和學生票)這些資訊來查詢車次有無餘票;
  5. 不僅可以查詢餘票,使用者還可以通過出發地+目的地+時間查詢相關的車次但是不顯示餘票、通過車次+時間查詢該車次經過的車站和到達的時間、通過車站+時間查詢當天在車站停留的車次
  6. 使用者查詢餘票之後可以選擇還有餘票的車次,選擇車位和乘車人然後支付票價進行購票
  7. 使用者通過選擇沒有餘票的車次來進行候補票
  8. 使用者可以退票或者改簽

4.人員分工

為了方便開展專案,我們對專案進行了粗略的分工,根據業務的邏輯進行了一定的拆分,不同的業務可能會執行在不同的伺服器上。每個業務都至少有兩個人蔘與,杜絕獨立實現專案,促進團隊合作。

  1. 個人資訊,包括了歷史記錄、登入、註冊、實名驗證
  2. 查詢車次,包括通過出發地起+目的地+時間查詢相關的車次但是不顯示餘票、通過車次+時間查詢該車次經過的車站和到達的時間、通過車站+時間查詢當天在車站停留的車次
  3. 查詢餘票,購票、改簽
  4. 候補、退票、支付

5.用例建模

6.業務建模

7.資料建模

為了達到高併發的效果,我們採用二級快取,將所有與車票相關,查詢頻率較高的資料都放在redis中儲存,資料會定時同步到mysql資料庫中。







8.總結

  本文主要對12306進行概念模型分析,對其各功能模組逐步設計,對工程實踐的實現有了更好的把握。