1. 程式人生 > >Net分布式系統之一:系統整體框架介紹

Net分布式系統之一:系統整體框架介紹

文件 和數 mongo lan 不能 結合 logs mssql mongodb

本文轉載收藏於:https://www.cnblogs.com/Andon_liu/p/5353488.html

 一、設計目的

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

Net分布式系統之一:系統整體框架介紹