写点什么

架構師訓練營 week1 作業

用户头像
ilake
关注
发布于: 2020 年 09 月 20 日



1. 設計概述

食堂就餐卡系統是一個學校或企業內人員就餐的系統,是公司面對各種組織企業戰略的核心系統,承擔著公司對於未來拓展的各式組織的目標任務

1.1 功能概述

食堂就餐卡的主要功能包括:

  • 使用者可透過管理中心註冊開卡

  • 服務員可透過收款機查詢及收取消費金額

  • 管理者可透過後台管理系統管控每一筆出入金記錄

使用者包括:

  • 消費者、服務員、管理者

常用場景如下:



  1. Consumer 可以在 Card Center 註冊食堂卡,並且儲值

  2. Consumer 透過 Payment System 用卡片直接付款

  3. Waiter 可在 Payment System 輸入應付款項讓 Consumer 付款

  4. Card Center Manager 可透過 Card Center 管控每筆消費的情況

1.1 非功能約束



食堂就餐卡系統預計未來用戶量達100萬,日訂單量達50萬,日UV達到50萬

  1. 查詢性能目標:平均響應時間<300ms,95% 響應時間<500ms,單機 TPS>100

  2. 下單性能目標:平均響應時間<800ms,95% 響應時間<1000ms,單機 TPS>30

  3. 管控性能目標:平均響應時間<1000ms,95% 響應時間<1400ms,單機 TPS>30

  4. 系統核心功能可用性目標:>99.97%

  5. 系統安全性目標:系統可攔截DDOS攻擊,密碼數據散列加密,客戶端數據HTTPS加密,外部系統間通性加密。

  6. 數據持久化目標:>99.99999%

2. 系統佈署圖與整體設計

系統上線時預計佈署 4 台 AWS EC2,共有 Card Center 主系統(包含 User, Card, Data Collect System)以及 Front Desk System 並且和第三方的 Payment System 整合

2.1 系統佈署圖





  1. Card Center 主要負責使用者,食堂卡的管理,包含了三個子系統

  2. User System 負責註冊用戶相關操作

  3. Card System 負責註冊卡片,儲值,卡片消費,餘額查詢等操作

  4. Data Collect System 負責讓管理人員查詢使用者消費數據以及報表的產出

  5. Front Desk System 負責前台的各種操作

  6. 3rd party Payment System 為外部系統,支援其他第三方支付儲值。



2.2 使用者案例圖

2.2.1 Consumer - Card Center

  • Consumer 透過 User System

1. Create an account

2. Delete an account

3. Signin/signout/forget_password

  • Consumer 透過 Card System

1. Create a card

2. Delete a card

3. Check balance

  • Consumer 透過 Front Desk System

1. Pay

2. Show Balance

3. Deposit

2.2.2 Waiter - Front Desk System

  • Waiter 透過 Front Desk System

  1. Charge

  2. Create invoice

2.2.3 manage - Data Collect System



  • Card center manager 透過 Data collect system

  1. check user's balance

  2. Check shop's revenue

2.3 使用者註冊、卡片註冊、儲值、消費序列圖



  1. 用戶透過 Card Center (子系統 User System) 註冊帳戶

  2. 用戶透過 Card Center (子系統 User System)註冊卡片

2.1. User System 發送註冊卡片訊息到 Card System

  1. 用戶透過 Card Center (子系統 User System) 登入帳戶,透過(子系統 Card System)儲值卡片

3.1 透過 Card System 查詢卡片訊息

3.2 透過 Card System 發送儲值卡片訊息

3.3 可用第三方付款系統儲值到 Card System 帳戶

  1. 用戶透過 Front Desk System 消費

4.1 查詢卡片餘額

4.2 返回餘額

4.3 扣除消費金額

4.4 記錄消費資訊

  1. 用戶透過 Front Desk System 消費儲值

5.1 和 3.2, 3.3 步驟一樣

  1. Data Collect System 查詢訂單相關數據

6.1 透過 Card System 獲取卡片訂單消費數據

6.2 透過 User System 獲取用戶相關數

3. Card Center 與 Front Desk System 設計

Card Center 的主要職責是用戶管理、卡片管理、餘額管理以及統計數據報表的管理,其中主要包含

  1. User System

  2. Card System

  3. Data Collect System

3.1 Card Center 與 Front Desk System 組件圖



  • User management module 主要是用户信息的注册、更新、注销,余额的充值、消费。

  • Card management module 主要是卡片的儲值、消費。

  • Order management module 負責管理訂單,用戶訂單需要能夠獲取用戶的餘額,扣款成功後,訂單才能夠算完成。

  • Front Desk module 為前端介面,後端連結 Card management module,做餘額查詢,扣款以及儲值的交互介面。

  • Data Collect module 為統計資料模組,主要透過 Card management module 拿取資料。

3.1 Card Center 與 Front Desk System 設計類圖



  • Controller related: 主要負責將 request 導引到所對應的 services

  • UsersController 主要負責對外提供用戶資訊操作的介面,主要負責將 request 導引到 UsersService

  • CardsController 主要負責對外提供卡片資訊操作的介面,主要負責將 request 導引到 CardsService

  • OrdersController 主要負責對外提供訂單資訊操作的介面,主要負責將 request 導引到 OrdersService

  • Services related: 主要負責各種商業邏輯的操作,可針對各個操作的複雜度,切分成更細的多個 Services(naming rules: Verb + Identity name)

  • CreateUserService / UpdateUserService / DestroyUserService

  • CreateCardService / UpdateCardService / DestroyCardService

  • CreateOrderService / UpdateOrderService / DestroyOrderService

  • Models related User: 繼承 Rails 的 ActiveRecord,主要負責處理與資料庫相關的邏輯操作

  • User: id, name, email

  • Card: id, user_id, name, 3rd_payment_type

  • Order: id, card_id, user_id, amount

4. 3rd Party Payment System 設計

3rd Party Payment System 主要負責整合不同的第三方支付介面 (ex: 微信支付,Line Pay, Paypay),必須提供不同的 Adapter 來整合

  • WechatPayAdapter

  • LinePayAdapter

  • PapPayAdapter

4.1 3rd Party Payment System 組件圖





  • 3rd Party Payment System 有提供各種不同的第三方 Adapters

  • Card management module 只需要定義自己的 Payment 介面

4.1 3rd Party Payment System 設計類圖





  • BasicAdapter 定義基本的 new, 以及 run 方法 (負責轉換資料介面形式)

  • WechatPayAdapter, LinePayAdapter, PayPayAdapter overwrite 父類別的 run 方法,用各自的邏輯

  • 將對應的設定資料存到 Payments

5. 其他視圖模型

5.1 Logic View





5.2 Development View

5.3 Physical View





用户头像

ilake

关注

还未添加个人签名 2019.04.15 加入

还未添加个人简介

评论

发布
暂无评论
架構師訓練營 week1 作業