一、設計目的 從事.Net平臺開發系統已有8年多了,一直思考搭建.Net分散式系統架構。基於window平臺搭建的大型分散式系統不多,之前瞭解過myspace、stackoverflow等大型網站。搭建一個大型平臺需要綜合考慮很多方面,不單純是軟體架構,還包括網路和硬體設備等。由於現代大部分應用建設 ...
一、設計目的
從事.Net平臺開發系統已有8年多了,一直思考搭建.Net分散式系統架構。基於window平臺搭建的大型分散式系統不多,之前瞭解過myspace、stackoverflow等大型網站。搭建一個大型平臺需要綜合考慮很多方面,不單純是軟體架構,還包括網路和硬體設備等。由於現代大部分應用建設都面臨用戶多、高併發、高可用的需求,傳統軟體架構已不能滿足需求,需要支持分散式軟體架構,能支持橫向擴展,具有高可用、伸縮性、穩定性等特點。結合本人這些年的開發和設計經驗,搭建如下系統架構。
二、系統軟體結構
系統軟體結構示意圖
系統基於SOA架構設計,系統整體劃分為不同組件或者應用服務,支持分散式的部署及擴展,並通過Nginx組件實現負載均衡。根據邏輯關聯劃分為:表現層、應用層和數據層。表現層負責系統與用戶或者外部系統交互;應用層是服務於表現層,主要實現業務邏輯處理滿足表現層的需求;數據層是負責系統數據的存儲。
(1)表現層
主要負責與用戶和外部系統交互,具體提供系統可操作WEB功能、數據交換程式或者數據介面。滿足不同的場景使用。Web Layer主要用asp.net mvc5技術實現;Data Exchange根據需求實現數據交換程式;Data Interface主要基於http協議,用Web API技術實現。
(2)應用層
主要負責系統邏輯計算的實現,提供服務介面給展現層使用。此兩層之間通信基於系統內部區域網tcp/ip協議,為了提高數據傳輸效率。根據應用服務職責不同,將分兩大類,分別為業務應用服務和基礎應用服務。業務應用服務實現業務需求的功能服務,比如用戶訂單、某類商品的管理功能等。基礎應用服務實現系統基礎公用的功能服務,比如:日誌服務、緩存服務、用戶認證服務功能等。本系統應用服務一般使用.NET平臺的通信框架WCF技術實現,個別其他組件除外,比如MQ組件、Redis緩存組件。
(3)數據層
主要負責系統數據存儲、同步、緩存和備份管理。本系統數據分為結構化數據和非結構化數據。對於結構化數據使用MSSQL2008以上資料庫存儲,基於MSSQL複製同步的機制,可以進行數據讀寫分離的實現,提升數據層面的優化。對於本系統業務日誌數據的存儲選型,由於考慮到業務日誌數據結構多樣化、數據量較大,所以選用MongoDB的NoSQL技術,同時系統面對著高併發的訪問,採取了緩存的機制提升性能,選用Redis緩存組件實現數據緩存存儲。對於非結構化數據存儲,比如文檔、圖片等數據,本系統基於Windows平臺NTFS文件系統實現文檔存儲和讀寫功能。
三、系統物理結構
系統物理結構示意圖
本系統網路分為:內部區域網和互聯網。伺服器位於內部區域網,通過反向代理伺服器對互聯網公佈系統,用戶通過互聯網訪問系統。從網路層面安全進行隔離。用戶訪問系統基於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非同步傳輸日誌數據、文件服務實現。後續逐步介紹。
作者:andon
出處:http://www.cnblogs.com/Andon_liu
關於作者:專註於微軟平臺項目架構、管理。熟悉設計模式、領域驅動、架構設計、敏捷開發和項目管理。現主要從事ASP.NET MVC、WCF/Web API、SOA、MSSQL、redis方面的項目開發、架構、管理工作。 如有問題或建議,請一起學習討論!
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。
如有問題,可以郵件:[email protected] 聯繫我,謝謝。