ASP.NET Core微服務+Tabler前端框架搭建我的博客2--系統架構

  功能分析

  在整個微服務架構的搭建過程當中,咱們須要作的第一步就是對服務進行拆分,將一個完整的系統模塊化,經過對各個模塊互聯,共同完成一個系統的工做。既然要作到模塊化,那麼必須明白你的系統的需求究竟是什麼,即你要作的這個系統須要實現哪些功能,明確了功能之後,再對功能進行劃分,將具備類似做用的功能劃分爲一個模塊,最後再決定須要用什麼樣的方式去實現你的模塊,最後纔是正式開始敲代碼。數據庫

  在咱們的我的博客中,我將網站劃分爲瞭如下幾個部分:json

  • 主頁

  主頁裏面天然須要作一些概況展現,例如:文章總數、訪問總數、評論總數、最近文章、最近留言、最熱文章、做者推薦等,能夠說主頁裏面跨越了多個模塊的訪問,那麼簡單的實現方式就是經過多個Ajax去訪問不一樣的模塊來進行動態加載數據。安全

  • 技術隨筆

  技術隨筆中天然是要有文章列表,經過加載文章列表,瀏覽者能夠選擇本身感興趣的文章而後進行查看詳情,即文章詳情頁面。在技術隨筆頁面,也應該包含最熱文章和推薦文章,這樣能夠方便瀏覽者進行選擇。服務器

  • 文章詳情

  文章詳情重點展現的是文章的內容以及文章評論。架構

  • 個人書屋

  該模塊能夠說與技術隨筆模塊實現方式徹底一致,也擁有書籍列表、最熱書籍、推薦書籍、書籍詳情以及評論,因此能夠將它們概括爲一個模塊,只須要在Type列進行標記,便可分開。app

  • 留言板

  這裏對每一個瀏覽網站的用戶提供了留言功能,針對每一條留言,能夠有多條回覆,對於這種存儲結構,用Mo'ngodb存儲最爲適合。框架

  • 網站管理

  這部分包含了留言管理、文章發佈等功能,這部分模塊天然就須要有權限控制,只有網站管理員才能進行文章發佈、留言管理,而通常的用戶只有留言網站的權限。模塊化

  • 身份認證

  用於識別用戶的身份以及相應權限,爲了知足網站擴展性以及迎合目前趨勢,身份認證受權咱們固然是採用Identity Server4來實現。微服務

 

  模塊劃分

  有了上面的功能的分析,咱們接下來能夠進行服務劃分了。網站

  • Ocelot網關服務

  網關服務用於向外提供一個統一的訪問地址,而在內部進行請求的轉發,你須要在json文件中設置它的上游服務器和下游服務器,這樣,全部對上游地址的請求,都會被轉發到下游服務器,具體狀況等到搭建Ocelot網關服務器的時候再進行詳細解釋,如今只須要明白,Ocelot的做用就是對外提供一個統一的地址,能夠是你的域名,而後它會將請求按配置轉發到多個節點上。

  • IdentityServer4登錄服務

  該服務主要用於提供身份認證和受權,即OAuth2+OpenID Connect,在用戶訪問一些接口時,如留言等,會要求身份認證,這是就須要進行登錄處理,當驗證完畢後,會得到access-token和id-token,而後能夠用access-token對接口訪問,id-token表明了用戶身份。

  • 文章/書籍服務

  以前說過,文章和書籍服務實現方式徹底一致,包括文章/書評發佈、評論等,因此將它們歸爲一個模塊。注意,這部分的文章/書評的發佈和刪除,必須是管理員權限才能管理。

  • 留言服務

  留言服務歸爲一個單獨的模塊,選擇Mongodb存儲留言列表,留言服務與文章書籍服務交互甚多,引入HttpClient後,必定要用Polly庫保證服務的穩定性。留言刪除必須是管理員權限才能管理。

  • 日誌服務

  網站日誌,好比網站有什麼異常啊,或者記錄哪一個接口延時較大等,以便後續改進,須要注意這部分權限必須爲系統管理員才能訪問。

 

  • RabbitMQ服務

  微服務之間的消息不免須要進行通訊,例如,當其餘服務發生了異常,須要用日誌服務來進行異常記錄,可是兩個服務不在一個節點上,這種狀況就須要使用咱們的RabbitMQ來傳遞異常消息。其餘服務利用經過EventBus投遞消息,日誌服務只須要接收消息進行存儲便可。

  最後,你們都知道Redis很是適合用於作網站瀏覽量統計、熱度統計等,因此可使用Redis來爲主頁須要顯示的幾個部分提供支撐。

 

  系統架構

  整個系統架構以下圖所示:

 

  圖中,須要注意如下幾點:

  1. 微服務之間最脆弱的部分就是服務之間的Http調用,因此須要用Polly庫保證安全;
  2. 雖然查詢數據庫的框架其實效率差很少,可是我仍是喜歡原生的SQL,在ADO和Dapper中,仍是決定用Dapper,由於想學一下。。。

  今天就先這樣吧,下一篇會先把數據庫的表間關係設計好,第一次寫多多包涵。

相關文章
相關標籤/搜索