0、前言
整體架構目錄:ASP.NET Core分布式項目實戰-目錄
一、准備
前提需要下載安裝consul,項目需要懂添加swagger
統一在網關中配置多個微服務的swagger,需要用到服務注冊和發現,當然ocelot里面以及擁有了服務發現,因此需要把asp.net core項目先注冊到consul中。
樓主的項目是用到consul。下面的案例的我都是放在window系統上面弄的,正式環境需要把項目都部署到自己的服務器上面。
1、講解:什么叫服務注冊和發現
微服務的框架體系中,服務發現是不能不提的一個模塊。我相信了解或者熟悉微服務的童鞋應該都知道它的重要性。這里我只是簡單的提一下,畢竟這不是我們的重點。我們看下面的一幅圖片:
圖中,客戶端的一個接口,需要調用服務A-N。客戶端必須要知道所有服務的網絡位置的,以往的做法是配置是配置文件中,或者有些配置在數據庫中。這里就帶出幾個問題:
需要配置N個服務的網絡位置,加大配置的復雜性
服務的網絡位置變化,都需要改變每個調用者的配置
集群的情況下,難以做負載(反向代理的方式除外)
總結起來一句話:服務多了,配置很麻煩,問題多多
既然有這些問題,那么服務發現就是解決這些問題的。話說,怎么解決呢?我們再看一張圖
與之前一張不同的是,加了個服務發現模塊。圖比較簡單,這邊文字描述下。服務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 歡迎加群交流
如果您認為這篇文章還不錯或者有所收獲,您可以點擊右下角的【推薦】按鈕精神支持,因為這種支持是我繼續寫作,分享的最大動力!
微信公眾號:歡迎關注 QQ技術交流群: 歡迎加群