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 歡迎加群交流
如果您認為這篇文章還不錯或者有所收獲,您可以點選右下角的【推薦】按鈕精神支援,因為這種支援是我繼續寫作,分享的最大動力!
作者:
LouieGuo http://www.cnblogs.com/stulzq聲明:原創部落格請在轉載時保留原文連結或者在文章開頭加上本人部落格位址,如發現錯誤,歡迎批評指正。凡是轉載于本人的文章,不能設定打賞功能,如有特殊需求請與本人聯系!
微信公衆号:歡迎關注 QQ技術交流群: 歡迎加群