來源:Andon
鏈接:http://www.cnblogs.com/Andon_liu/p/5353488.html
一、設(shè)計目的
從事.Net平臺開發(fā)系統(tǒng)已有8年多了,一直思考搭建.Net分布式系統(tǒng)架構(gòu)?;趙indow平臺搭建的大型分布式系統(tǒng)不多,之前了解過myspace、stackoverflow等大型網(wǎng)站。搭建一個大型平臺需要綜合考慮很多方面,不單純是軟件架構(gòu),還包括網(wǎng)絡(luò)和硬件設(shè)備等。由于現(xiàn)代大部分應(yīng)用建設(shè)都面臨用戶多、高并發(fā)、高可用的需求,傳統(tǒng)軟件架構(gòu)已不能滿足需求,需要支持分布式軟件架構(gòu),能支持橫向擴(kuò)展,具有高可用、伸縮性、穩(wěn)定性等特點。結(jié)合本人這些年的開發(fā)和設(shè)計經(jīng)驗,搭建如下系統(tǒng)架構(gòu)。
二、系統(tǒng)軟件結(jié)構(gòu)
系統(tǒng)軟件結(jié)構(gòu)示意圖
系統(tǒng)基于SOA架構(gòu)設(shè)計,系統(tǒng)整體劃分為不同組件或者應(yīng)用服務(wù),支持分布式的部署及擴(kuò)展,并通過Nginx組件實現(xiàn)負(fù)載均衡。根據(jù)邏輯關(guān)聯(lián)劃分為:表現(xiàn)層、應(yīng)用層和數(shù)據(jù)層。表現(xiàn)層負(fù)責(zé)系統(tǒng)與用戶或者外部系統(tǒng)交互;應(yīng)用層是服務(wù)于表現(xiàn)層,主要實現(xiàn)業(yè)務(wù)邏輯處理滿足表現(xiàn)層的需求;數(shù)據(jù)層是負(fù)責(zé)系統(tǒng)數(shù)據(jù)的存儲。
?。?)表現(xiàn)層
主要負(fù)責(zé)與用戶和外部系統(tǒng)交互,具體提供系統(tǒng)可操作WEB功能、數(shù)據(jù)交換程序或者數(shù)據(jù)接口。滿足不同的場景使用。Web Layer主要用asp.net mvc5技術(shù)實現(xiàn);Data Exchange根據(jù)需求實現(xiàn)數(shù)據(jù)交換程序;Data Interface主要基于http協(xié)議,用Web API技術(shù)實現(xiàn)。
(2)應(yīng)用層
主要負(fù)責(zé)系統(tǒng)邏輯計算的實現(xiàn),提供服務(wù)接口給展現(xiàn)層使用。此兩層之間通信基于系統(tǒng)內(nèi)部局域網(wǎng)tcp/ip協(xié)議,為了提高數(shù)據(jù)傳輸效率。根據(jù)應(yīng)用服務(wù)職責(zé)不同,將分兩大類,分別為業(yè)務(wù)應(yīng)用服務(wù)和基礎(chǔ)應(yīng)用服務(wù)。業(yè)務(wù)應(yīng)用服務(wù)實現(xiàn)業(yè)務(wù)需求的功能服務(wù),比如用戶訂單、某類商品的管理功能等?;A(chǔ)應(yīng)用服務(wù)實現(xiàn)系統(tǒng)基礎(chǔ)公用的功能服務(wù),比如:日志服務(wù)、緩存服務(wù)、用戶認(rèn)證服務(wù)功能等。本系統(tǒng)應(yīng)用服務(wù)一般使用.NET平臺的通信框架WCF技術(shù)實現(xiàn),個別其他組件除外,比如MQ組件、Redis緩存組件。
(3)數(shù)據(jù)層
主要負(fù)責(zé)系統(tǒng)數(shù)據(jù)存儲、同步、緩存和備份管理。本系統(tǒng)數(shù)據(jù)分為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。對于結(jié)構(gòu)化數(shù)據(jù)使用MSSQL2008以上數(shù)據(jù)庫存儲,基于MSSQL復(fù)制同步的機(jī)制,可以進(jìn)行數(shù)據(jù)讀寫分離的實現(xiàn),提升數(shù)據(jù)層面的優(yōu)化。對于本系統(tǒng)業(yè)務(wù)日志數(shù)據(jù)的存儲選型,由于考慮到業(yè)務(wù)日志數(shù)據(jù)結(jié)構(gòu)多樣化、數(shù)據(jù)量較大,所以選用MongoDB的NoSQL技術(shù),同時系統(tǒng)面對著高并發(fā)的訪問,采取了緩存的機(jī)制提升性能,選用Redis緩存組件實現(xiàn)數(shù)據(jù)緩存存儲。對于非結(jié)構(gòu)化數(shù)據(jù)存儲,比如文檔、圖片等數(shù)據(jù),本系統(tǒng)基于Windows平臺NTFS文件系統(tǒng)實現(xiàn)文檔存儲和讀寫功能。
三、系統(tǒng)物理結(jié)構(gòu)
系統(tǒng)物理結(jié)構(gòu)示意圖
本系統(tǒng)網(wǎng)絡(luò)分為:內(nèi)部局域網(wǎng)和互聯(lián)網(wǎng)。服務(wù)器位于內(nèi)部局域網(wǎng),通過反向代理服務(wù)器對互聯(lián)網(wǎng)公布系統(tǒng),用戶通過互聯(lián)網(wǎng)訪問系統(tǒng)。從網(wǎng)絡(luò)層面安全進(jìn)行隔離。用戶訪問系統(tǒng)基于http協(xié)議,系統(tǒng)內(nèi)部之間服務(wù)器通信基于tcp/ip協(xié)議。根據(jù)部署應(yīng)用的劃分,將服務(wù)器分為負(fù)載均衡服務(wù)器、Web服務(wù)器、應(yīng)用服務(wù)器、數(shù)據(jù)服務(wù)器四大類。
(1)負(fù)載均衡服務(wù)器
基于Linux之CentOS平臺搭建Nginx服務(wù),作Load Balance。
(2)Web服務(wù)器
基于window平臺下IIS web服務(wù)器。部署基于asp.net mvc、web api技術(shù)實現(xiàn)的程序。
(3)應(yīng)用服務(wù)器
部署基于.net平臺通信框架之WCF技術(shù)實現(xiàn)的服務(wù)接口,提供與展現(xiàn)層調(diào)用,其中部分公用組件,如MQ則根據(jù)組件的要求部署。
(4)數(shù)據(jù)服務(wù)器
本系統(tǒng)數(shù)據(jù)存儲選用:mssql數(shù)據(jù)庫、MongoDB、Redis緩存和文件存儲。根據(jù)項目情況數(shù)據(jù)庫可做讀寫分離,同時結(jié)合redis做緩存策略提高系統(tǒng)性能。
本章節(jié)先大致介紹系統(tǒng)框架及物理結(jié)構(gòu)情況,由于涉及幾個技術(shù)點,比如:nginx負(fù)載均衡搭建、asp.netmvc與WCF服務(wù)之間調(diào)用、redis分布式緩存使用、MongoDB存儲日志、MQ異步傳輸日志數(shù)據(jù)、文件服務(wù)實現(xiàn)。后續(xù)逐步介紹。
聯(lián)系客服