原標(biāo)題是<不懂可以問,但是不要裝逼>一:看系統(tǒng)架構(gòu),后來覺得不妥,還是改改吧。
所有內(nèi)容不涉及系統(tǒng)架構(gòu),只涉及設(shè)計架構(gòu)中注意的要素,方向有了,架構(gòu)自然就出來了。細(xì)節(jié)、代碼后續(xù)再貼出來,感謝大牛X-Ts提供后續(xù)代碼指導(dǎo),此部分內(nèi)容同樣借鑒之前的老師的指導(dǎo)。
從層次看網(wǎng)站系統(tǒng)架構(gòu):
一、前端架構(gòu)
1.瀏覽器優(yōu)化技術(shù):通過優(yōu)化響應(yīng)頁面,為瀏覽器頁面的加載和現(xiàn)實提速,常用的有頁面緩存,合并HTTP減少請求次數(shù)、頁面壓縮等。
2.前端的分布式:靜態(tài)資源,如JS、CSS等文件不是在專門的服務(wù)器集群上(開發(fā)過程中,可使用公共的二級域名,前期并非放在獨立的服務(wù)器上,為后續(xù)的業(yè)務(wù)擴(kuò)大化作擴(kuò)展),和Web應(yīng)用動態(tài)業(yè)務(wù)的相關(guān)內(nèi)容做分離,通過最短路徑獲取內(nèi)容。
3.圖片資源服務(wù):此處指用戶上傳的圖片,并非網(wǎng)站的按鈕以及LOGO(這些文件屬于上段提到的靜態(tài)資源)。
4.反響代理:提供頁面緩存。
5.DNS:將域名解析成地址,利用dns可以實現(xiàn)dns的負(fù)載均衡。
二、應(yīng)用層架構(gòu):業(yè)務(wù)邏輯的處理。
1、開發(fā)框架:一個好的開發(fā)框架是關(guān)注點分離的,各層各行其事,易于協(xié)作。頁面渲染,動態(tài)內(nèi)容和靜態(tài)頁面模板集成起來,最終集合一起顯示給用戶。一款優(yōu)秀的模板引擎能在開發(fā)中干凈、整潔、關(guān)注點分離透徹等。
2、負(fù)載均衡:將多臺應(yīng)用服務(wù)器組成一個集群,通過負(fù)載均衡將用戶請求分發(fā)到不同的服務(wù)器上,減少服務(wù)器壓力,通過冗余技術(shù),達(dá)到軟雙機(jī)熱備效果。
3、Seesion維護(hù):此目的實現(xiàn)高可用的應(yīng)用服務(wù)器集群,應(yīng)用服務(wù)器設(shè)置為無狀態(tài),不保存用戶請求的上下文,但需要保持用戶會話狀態(tài),可使用軟技術(shù)實現(xiàn)Seesion管理。。。
4、動態(tài)頁面靜態(tài)化:訪問量大而不頻繁更新的動態(tài)頁面,使其靜態(tài)化,根據(jù)請求HTTP的請求原理,到達(dá)優(yōu)化加速的手段,此處反向代理,CDN,瀏覽器緩存等。
5、業(yè)務(wù)拆分:業(yè)務(wù)增多,子系統(tǒng)新增,形成了規(guī)模小的子產(chǎn)品,獨立開發(fā)、實施、維護(hù),降低系統(tǒng)的耦合度,便于系統(tǒng)中數(shù)據(jù)庫分庫。
6、虛擬化服務(wù)器:將一臺物理機(jī)虛擬化多臺虛擬服務(wù)器,利用較少的資源構(gòu)建高可用的應(yīng)用服務(wù)器集群。微軟提供了Hyper-V
三、服務(wù)層架構(gòu):
1、分布式消息:利用消息隊列,實現(xiàn)業(yè)務(wù)之間,業(yè)務(wù)、服務(wù)之間的異步消息的傳遞,同時解決業(yè)務(wù)間低耦合的關(guān)系。
2、分布式服務(wù):SOA
3、分布式緩存:軟分布式緩存,不一定要從集群上解決,要盡可能的利用軟件、應(yīng)用程序。
4、分布式配置:動態(tài)配置分布式緩存等,例如,加入可配置參數(shù)列表,即可添加分布式緩存服務(wù)器。
四、存儲層架構(gòu):數(shù)據(jù)、文件持久化的存儲訪問與管理服務(wù)。
1、分布式文件:圖片或其他資源數(shù)量較大,如圖片,網(wǎng)頁,視頻,伸縮性設(shè)計分布式文件系統(tǒng),當(dāng)前有很成熟的相關(guān)的軟系統(tǒng)架構(gòu)。
2、關(guān)系型數(shù)據(jù)庫:通過在應(yīng)用程序的數(shù)據(jù)庫訪問層增加數(shù)據(jù)庫訪問路由功能,通過業(yè)務(wù)配置將數(shù)據(jù)庫的訪問路由到不同的物理數(shù)據(jù)庫上,為后續(xù)分布式也打下基礎(chǔ)。
3、NoSql:其讀寫速度非常快,遠(yuǎn)優(yōu)越于關(guān)系型數(shù)據(jù)庫,當(dāng)然各版本在內(nèi)存管理,數(shù)據(jù)模型等各有優(yōu)缺點,做緩存等毋庸置疑。
4、數(shù)據(jù)同步:數(shù)據(jù)庫同步技術(shù)已經(jīng)很成熟,多數(shù)據(jù)庫之間同步也存在很多的壓力。可通過DB的事務(wù)日志或者Nosql寫Log,同步到其他數(shù)據(jù)點,根據(jù)Log進(jìn)行重演。
五、后臺框架:
1、搜索引擎:網(wǎng)站內(nèi)部引擎,若對數(shù)據(jù)增量及全量更新、構(gòu)建索引,可通過后臺系統(tǒng)定時執(zhí)行,同時可以借鑒第三方成熟的框架,如Lucene.Net、HubbleDotNet等
2、數(shù)據(jù)倉庫:提供完整的離線數(shù)據(jù),提供數(shù)據(jù)分析以及數(shù)據(jù)挖掘服務(wù)。
3、數(shù)據(jù)采集與監(jiān)控:采集的數(shù)據(jù)以圖表的形式展示,對網(wǎng)站的監(jiān)控運作狀況有及時的了解,當(dāng)然還有更先進(jìn)的運維方式。
4、瀏覽器數(shù)據(jù)采集:在網(wǎng)頁中嵌入JS腳本或通過其他手段獲取采集用戶瀏覽器的環(huán)境以及操作行為,分析其行為,對用戶的友好度以及系統(tǒng)的安全性等做數(shù)據(jù)采集。
5、服務(wù)器業(yè)務(wù)數(shù)據(jù)采集:采集服務(wù)端用戶的操作日志。
6、系統(tǒng)監(jiān)控:采集的數(shù)據(jù)以圖表的形式展示,對網(wǎng)站的監(jiān)控運作狀況有及時的了解,當(dāng)然還有更先進(jìn)的運維方式。
7、系統(tǒng)預(yù)警:數(shù)據(jù)未正常采集,超過了系統(tǒng)的閾值,系統(tǒng)承載的負(fù)載過高,通過郵件、短信、語音電話等發(fā)出相關(guān)的信號。
六、安全架構(gòu):
Web攻擊:當(dāng)前,以Http請求的方式發(fā)起的攻擊,最大危害是XSS和SQL注入。代碼的規(guī)范性有待注意。
當(dāng)然還是有其他的一些CSRF攻擊、ErrorCode、HTML注釋、文件上傳、路徑遍歷、表單Token、
數(shù)據(jù)保護(hù):敏感信息加密傳送。
新聞熱點
疑難解答