0、前言
整體架構目錄:ASP.NET Core分布式項目實戰-目錄
一、準備
前提需要下載安裝consul,項目需要懂添加swagger
統一在網關中配置多個微服務的swagger,需要用到服務註冊和發現,當然ocelot裡面以及擁有了服務發現,因此需要把asp.net core項目先註冊到consul中。
樓主的項目是用到consul。下面的案例的我都是放在window系統上面弄的,正式環境需要把項目都部署到自己的伺服器上面。
1、講解:什麼叫服務註冊和發現
微服務的架構體系中,服務發現是不能不提的一個模組。我相信瞭解或者熟悉微服務的童鞋應該都知道它的重要性。這裡我只是簡單的提一下,畢竟這不是我們的重點。我們看下面的一幅圖片:
圖中,用戶端的一個介面,需要調用服務A-N。用戶端必須要知道所有服務的網路位置的,以往的做法是配置是設定檔中,或者有些配置在資料庫中。這裡就帶出幾個問題:
需要配置N個服務的網路位置,加大配置的複雜性
服務的網路位置變化,都需要改變每個調用者的配置
叢集的情況下,難以做負載(反向 Proxy的方式除外)
總結起來一句話:服務多了,配置很麻煩,問題多多
既然有這些問題,那麼服務發現就是解決這些問題的。話說,怎麼解決呢?我們再看一張圖
與之前一張不同的是,加了個服務發現模組。圖比較簡單,這邊文字描述下。服務A-N把當前自己的網路位置註冊到服務發現模組(這裡註冊的意思就是告訴),服務發現就以K-V的方式記錄下,K一般是服務名,V就是IP:PORT。服務發現模組定時的輪詢查看這些服務能不能訪問的了(這就是健全狀態檢查)。用戶端在調用服務A-N的時候,就跑去服務發現模組問下它們的網路位置,然後再調用它們的服務。這樣的方式是不是就可以解決上面的問題了呢?用戶端完全不需要記錄這些服務網路位置,用戶端和服務端完全解耦!
這個過程大體是這樣,當然服務發現模組沒這麼簡單。裡麵包含的東西還很多。這樣表述只是方便理解。
圖中的服務發現模組基本上就是微服務架構中服務發現的作用了。
二、開始部署
首先先建立一個asp.net core web api 項目,我已經建立好了。然後添加nugut包 consul。
1、在項目裡面的 Startup.cs 檔案裡面寫上我們的服務註冊,我把註冊的資訊放在了appsetting.json 檔案裡頭了。
然後在ConfigureServices寫上服務註冊
Configure方法 寫上服務註冊。
ConsulApp方法:
註冊服務 RegisterService
至此,consul註冊已經OK。
2、配置swagger具體內容
我把swagger的微服務資訊放在appsetting.json 裡面了。
所以在startup.cs中的資料是從這裡面擷取的
ConfigureServices方法總填寫如下:
其中裡面的【】中的內容是可以替換的。
Configure 方法中填寫以下內容:
至此,swagger配置完成。
3、接下來就要部署Ocelot網關裡面的內容啦。
apigateway項目也是建立一個asp.net core web api 項目,然後添加swaggernuget包。
然後在 ConfigureServices方法中寫上
然後在Configure 方法中寫上:
路由表裡面寫的內容為:
自此配置完成。
三、運行 1、先運行consul
開啟瀏覽器url地址:consul運行成功。
2、運行userapi項目和apigateway項目。
在consul中發現多了一個userapi的服務註冊
然後開啟apigateway的swagger項目,可以看到userapi的介面,至此完成配置。
具體swagger怎麼配置,可以參考我之前的文章(努力編寫中)
參考網址:
http://www.cnblogs.com/focus-lei/p/9047410.html
asp.net core 交流群:787464275 歡迎加群交流
如果您認為這篇文章還不錯或者有所收穫,您可以點擊右下角的【推薦】按鈕精神支援,因為這種支援是我繼續寫作,分享的最大動力!
LouieGuo
聲明:原創部落格請在時保留原文連結或者在文章開頭加上本人部落格地址,如發現錯誤,歡迎批評指正。凡是於本人的文章,不能設定打賞功能,如有特殊需求請與本人聯絡!