再談設計高并發(fā)的電子商店
上次我發(fā)布了設計高并發(fā)的電子商店初稿,得到大家的很多優(yōu)秀建議和反饋,在此基礎上,我對設計做了調整,希望大家多多拍磚。
我會將實現(xiàn)的全過程記錄下來,并通過博客園分享給大家,當然最后也會把這個電子商店網(wǎng)站免費開源。
我們的電子商店都準備實現(xiàn)哪些功能模塊呢?
詳細描述,等我們下一個章節(jié)再說說道說道......
首先從架構上考慮,我們采用四層的面向服務的架構:
一個標準的四層架構包含如下四個部分:
-
商店應用程序展示層,負責商店應用程序與客戶的交互
-
服務層,負責與商店應用程序進行數(shù)據(jù)交互
-
業(yè)務邏輯層,負責處理系統(tǒng)的業(yè)務
-
數(shù)據(jù)訪問層,負責處理數(shù)據(jù),與不同的數(shù)據(jù)庫打交道
我們的目的就是伴隨著訪問量的增加,無需更改程序,只需增加服務器個數(shù),就可以達到高并發(fā)的目的。
客戶:
客戶從瀏覽器訪問我們的商店Web應用程序服務器;
商店web應用程序采用Windows_Server_AppFabric技術,緩存部分更改時效性不高的數(shù)據(jù),和共享sessionstate
同時,手機,winform程序等可以通過wcf技術,訪問通過分布式服務的AppFabric服務器獲取數(shù)據(jù)
將Web應用程序的分布式緩存和提供分布式服務的AppFabric服務器部署在一起,就是為了最大化的節(jié)省服務器資源
數(shù)據(jù)庫采取讀寫分離的原則:
-
對于商品評論的信息我們放在"從數(shù)據(jù)庫1"中,在商品詳細的頁面,直接從該數(shù)據(jù)庫獲取數(shù)據(jù)。
-
對于訂單的信息我們放在"從數(shù)據(jù)庫2"中,在訂單查詢的頁面,直接從該數(shù)據(jù)庫獲取數(shù)據(jù)。
-
"從數(shù)據(jù)庫1"和"從數(shù)據(jù)庫2"都會在合適的時機同步到主數(shù)據(jù)庫。
-
我們會根據(jù)業(yè)務開發(fā)出不同的服務,而不同的服務又可以使用更多的從數(shù)據(jù)庫,這樣方便以后的擴展。
圖片服務器采用二級域名的形式對外提供圖片共享服務
后臺管理人員:
管理人員從瀏覽器訪問我們的后臺應用程序服務器,通過后臺應用程序管理圖片服務器(圖片部分)和數(shù)據(jù)庫服務器(數(shù)據(jù)部分)的資源。
我想至此,你應該明白了(一)中,為什么后臺應用程序直接訪問業(yè)務邏輯層,而商店應用程序需要通過服務層訪問業(yè)務邏輯層了,因為伴隨數(shù)據(jù)訪問量增大,我們可以將服務根據(jù)功能需要,部署在多個服務器上,以緩解訪問壓力,而后臺應用程序不會出現(xiàn)訪問量增大的現(xiàn)象。
然后從項目組件上考慮,我們創(chuàng)建10個項目:
App——電子商店前臺頁面展示
是BS架構的項目,選擇最新的MVC4框架。
BLL——業(yè)務邏輯
業(yè)務邏輯的操作,包括業(yè)務處理,事務等。
DAL——數(shù)據(jù)訪問
數(shù)據(jù)庫訪問的操作,數(shù)據(jù)實體,數(shù)據(jù)校驗,使用Entity Framework。
IBLL——業(yè)務接口
業(yè)務邏輯層的方法對外暴露的接口和服務契約。如:App項目和Shop項目。
Common——公共組件
整個應用程序使用的公共輔助方法。
ModelingProject——模型設計
在此設計項目的圖例,如:架構圖。
WcfHost——服務宿主
為電子商店前臺系統(tǒng)的服務提供宿主,使用微軟WCF技術。
WFActivitys——工作流活動層
定義了工作流的活動,使用微軟WF技術。
WFDesigner——工作流設計器
實施人員自由配置工作流的設計器,使用微軟WPF技術。
Shop——電子商店后臺應用程序
是BS架構的項目,選擇最新的MVC4框架。使用EasyUI腳本庫。
選型
工具選擇VS2010 SP1 + SQL Server2008 + 狼奔代碼生成器
技術選擇EF + WF + WCF + MVC4 + EasyUI
參考資料
原文鏈接:http://www.cnblogs.com/angben/archive/2012/12/26/2833687.html#2587535