每當太陽西沉,我坐在河邊破舊的碼頭上,遙望新澤西上方遼闊的天空,我感到彷佛有未經開墾的土地,全部的道路,全部的人都在難以想象地走向西部海岸。直到如今我才知道,在衣阿華,小夥子們老是不停地騷動喧鬧,由於是那片土地使他們如此沒法平靜。——《在路上》前端
在傳統的B/S 架構的系統裏,技術架構每每是一個工程項目,各個邏輯分層都是該工程的業務邏輯模塊,可是有些網站,如電商系統或全國性服務平臺,用戶羣龐大,網站併發量高,且需求變化大,以及網站處於對安全的考慮,以上的邏輯分層在技術架構上的實現也會複雜的多。java
那麼考慮採用分佈式架構,將系統拆分紅多個子系統。mysql
分佈式系統定義:
組件分佈在網絡計算機上
組件之間僅僅經過消息傳遞來通訊並協調行動android
咱們這個項目叫staro2,主要分爲如下5個模塊:
(1)staro2-manager——後臺管理系統
(2)staro2-portal——前臺門戶系統
(3)staro2-rest——應用服務層
(4)移動端——Android、iOS、微信平臺
(5)MySQL——數據庫web
下面介紹各個模塊的功能與設計結構。sql
傳統的工程結構:
傳統項目是一個項目,三層架構控制層、業務邏輯層和數據訪問層。數據庫
考慮後期的可拓展性與並行開發,本文采用分散式的開發方式,採用maven管理項目。編程
後臺管理系統的項目結構設計以下:json
staro2-portal前臺門戶系統主要包括控制層和視圖層staro2-portal-controller和邏輯層staro2-portal-service。邏輯層調用應用服務層(staro2-rest)請求數據。安全
star-rest應用服務層對外提供rest形式的服務,供其餘系統如web前端、android、iOS和微信公衆號調用。使用http協議傳遞json數據。主要分爲三層:數據訪問層、業務邏輯層和控制層。
目前是單庫多表設計,隨着業務的增大,考慮分庫分表以下。