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