1、設計目的nginx
從事.Net平臺開發系統已有8年多了,一直思考搭建.Net分佈式系統架構。基於window平臺搭建的大型分佈式系統很少,以前瞭解過myspace、stackoverflow等大型網站。搭建一個大型平臺須要綜合考慮不少方面,不單純是軟件架構,還包括網絡和硬件設備等。因爲現代大部分應用建設都面臨用戶多、高併發、高可用的需求,傳統軟件架構已不能知足需求,須要支持分佈式軟件架構,能支持橫向擴展,具備高可用、伸縮性、穩定性等特色。結合本人這些年的開發和設計經驗,搭建以下系統架構。web
2、系統軟件結構redis
系統軟件結構示意圖sql
系統基於SOA架構設計,系統總體劃分爲不一樣組件或者應用服務,支持分佈式的部署及擴展,並經過Nginx組件實現負載均衡。根據邏輯關聯劃分爲:表現層、應用層和數據層。表現層負責系統與用戶或者外部系統交互;應用層是服務於表現層,主要實現業務邏輯處理知足表現層的需求;數據層是負責系統數據的存儲。數據庫
(1)表現層設計模式
主要負責與用戶和外部系統交互,具體提供系統可操做WEB功能、數據交換程序或者數據接口。知足不一樣的場景使用。Web Layer主要用asp.net mvc5技術實現;Data Exchange根據需求實現數據交換程序;Data Interface主要基於http協議,用Web API技術實現。api
(2)應用層緩存
主要負責系統邏輯計算的實現,提供服務接口給展示層使用。此兩層之間通訊基於系統內部局域網tcp/ip協議,爲了提升數據傳輸效率。根據應用服務職責不一樣,將分兩大類,分別爲業務應用服務和基礎應用服務。業務應用服務實現業務需求的功能服務,好比用戶訂單、某類商品的管理功能等。基礎應用服務實現系統基礎公用的功能服務,好比:日誌服務、緩存服務、用戶認證服務功能等。本系統應用服務通常使用.NET平臺的通訊框架WCF技術實現,個別其餘組件除外,好比MQ組件、Redis緩存組件。安全
(3)數據層服務器
主要負責系統數據存儲、同步、緩存和備份管理。本系統數據分爲結構化數據和非結構化數據。對於結構化數據使用MSSQL2008以上數據庫存儲,基於MSSQL複製同步的機制,能夠進行數據讀寫分離的實現,提高數據層面的優化。對於本系統業務日誌數據的存儲選型,因爲考慮到業務日誌數據結構多樣化、數據量較大,因此選用MongoDB的NoSQL技術,同時系統面對着高併發的訪問,採起了緩存的機制提高性能,選用Redis緩存組件實現數據緩存存儲。對於非結構化數據存儲,好比文檔、圖片等數據,本系統基於Windows平臺NTFS文件系統實現文檔存儲和讀寫功能。
3、系統物理結構
系統物理結構示意圖
本系統網絡分爲:內部局域網和互聯網。服務器位於內部局域網,經過反向代理服務器對互聯網公佈系統,用戶經過互聯網訪問系統。從網絡層面安全進行隔離。用戶訪問系統基於http協議,系統內部之間服務器通訊基於tcp/ip協議。根據部署應用的劃分,將服務器分爲負載均衡服務器、Web服務器、應用服務器、數據服務器四大類。
(1)負載均衡服務器
基於Linux之CentOS平臺搭建Nginx服務,做Load Balance。
(2)Web服務器
基於window平臺下IIS web服務器。部署基於asp.net mvc、web api技術實現的程序。
(3)應用服務器
部署基於.net平臺通訊框架之WCF技術實現的服務接口,提供與展示層調用,其中部分公用組件,如MQ則根據組件的要求部署。
(4)數據服務器
本系統數據存儲選用:mssql數據庫、MongoDB、Redis緩存和文件存儲。根據項目狀況數據庫可作讀寫分離,同時結合redis作緩存策略提升系統性能。
本章節先大體介紹系統框架及物理結構狀況,因爲涉及幾個技術點,好比:nginx負載均衡搭建、asp.netmvc與WCF服務之間調用、redis分佈式緩存使用、MongoDB存儲日誌、MQ異步傳輸日誌數據、文件服務實現。後續逐步介紹。
微信號: