在整個微服務架構的搭建過程當中,咱們須要作的第一步就是對服務進行拆分,將一個完整的系統模塊化,經過對各個模塊互聯,共同完成一個系統的工做。既然要作到模塊化,那麼必須明白你的系統的需求究竟是什麼,即你要作的這個系統須要實現哪些功能,明確了功能之後,再對功能進行劃分,將具備類似做用的功能劃分爲一個模塊,最後再決定須要用什麼樣的方式去實現你的模塊,最後纔是正式開始敲代碼。數據庫
在咱們的我的博客中,我將網站劃分爲瞭如下幾個部分:json
主頁裏面天然須要作一些概況展現,例如:文章總數、訪問總數、評論總數、最近文章、最近留言、最熱文章、做者推薦等,能夠說主頁裏面跨越了多個模塊的訪問,那麼簡單的實現方式就是經過多個Ajax去訪問不一樣的模塊來進行動態加載數據。安全
技術隨筆中天然是要有文章列表,經過加載文章列表,瀏覽者能夠選擇本身感興趣的文章而後進行查看詳情,即文章詳情頁面。在技術隨筆頁面,也應該包含最熱文章和推薦文章,這樣能夠方便瀏覽者進行選擇。服務器
文章詳情重點展現的是文章的內容以及文章評論。架構
該模塊能夠說與技術隨筆模塊實現方式徹底一致,也擁有書籍列表、最熱書籍、推薦書籍、書籍詳情以及評論,因此能夠將它們概括爲一個模塊,只須要在Type列進行標記,便可分開。app
這裏對每一個瀏覽網站的用戶提供了留言功能,針對每一條留言,能夠有多條回覆,對於這種存儲結構,用Mo'ngodb存儲最爲適合。框架
這部分包含了留言管理、文章發佈等功能,這部分模塊天然就須要有權限控制,只有網站管理員才能進行文章發佈、留言管理,而通常的用戶只有留言網站的權限。模塊化
用於識別用戶的身份以及相應權限,爲了知足網站擴展性以及迎合目前趨勢,身份認證受權咱們固然是採用Identity Server4來實現。微服務
有了上面的功能的分析,咱們接下來能夠進行服務劃分了。網站
網關服務用於向外提供一個統一的訪問地址,而在內部進行請求的轉發,你須要在json文件中設置它的上游服務器和下游服務器,這樣,全部對上游地址的請求,都會被轉發到下游服務器,具體狀況等到搭建Ocelot網關服務器的時候再進行詳細解釋,如今只須要明白,Ocelot的做用就是對外提供一個統一的地址,能夠是你的域名,而後它會將請求按配置轉發到多個節點上。
該服務主要用於提供身份認證和受權,即OAuth2+OpenID Connect,在用戶訪問一些接口時,如留言等,會要求身份認證,這是就須要進行登錄處理,當驗證完畢後,會得到access-token和id-token,而後能夠用access-token對接口訪問,id-token表明了用戶身份。
以前說過,文章和書籍服務實現方式徹底一致,包括文章/書評發佈、評論等,因此將它們歸爲一個模塊。注意,這部分的文章/書評的發佈和刪除,必須是管理員權限才能管理。
留言服務歸爲一個單獨的模塊,選擇Mongodb存儲留言列表,留言服務與文章書籍服務交互甚多,引入HttpClient後,必定要用Polly庫保證服務的穩定性。留言刪除必須是管理員權限才能管理。
網站日誌,好比網站有什麼異常啊,或者記錄哪一個接口延時較大等,以便後續改進,須要注意這部分權限必須爲系統管理員才能訪問。
微服務之間的消息不免須要進行通訊,例如,當其餘服務發生了異常,須要用日誌服務來進行異常記錄,可是兩個服務不在一個節點上,這種狀況就須要使用咱們的RabbitMQ來傳遞異常消息。其餘服務利用經過EventBus投遞消息,日誌服務只須要接收消息進行存儲便可。
最後,你們都知道Redis很是適合用於作網站瀏覽量統計、熱度統計等,因此可使用Redis來爲主頁須要顯示的幾個部分提供支撐。
整個系統架構以下圖所示:
圖中,須要注意如下幾點:
今天就先這樣吧,下一篇會先把數據庫的表間關係設計好,第一次寫多多包涵。