Net分佈式系統之一:系統總體框架介紹

  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異步傳輸日誌數據、文件服務實現。後續逐步介紹。

 

 

做者:andon
出處: http://www.cnblogs.com/Andon_liu
關於做者:專一於微軟平臺項目架構、管理。熟悉設計模式、領域驅動、架構設計、敏捷開發和項目管理。現主要從事ASP.NET MVC、WCF/Web API、SOA、MSSQL、redis方面的項目開發、架構、管理工做。 若有問題或建議,請一塊兒學習討論!
本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
若有問題,能夠郵件:568773262@qq.com 聯繫我,謝謝。


微信號:

相關文章
相關標籤/搜索