天天看點

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

0、前言

 整體架構目錄:

ASP.NET Core分布式項目實戰-目錄

一、準備

 前提需要下載下傳安裝consul,項目需要懂添加swagger

統一在網關中配置多個微服務的swagger,需要用到服務注冊和發現,當然ocelot裡面以及擁有了服務發現,是以需要把asp.net core項目先注冊到consul中。

樓主的項目是用到consul。下面的案例的我都是放在window系統上面弄的,正式環境需要把項目都部署到自己的伺服器上面。

1、講解:什麼叫服務注冊和發現

微服務的架構體系中,服務發現是不能不提的一個子產品。我相信了解或者熟悉微服務的童鞋應該都知道它的重要性。這裡我隻是簡單的提一下,畢竟這不是我們的重點。我們看下面的一幅圖檔:

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

圖中,用戶端的一個接口,需要調用服務A-N。用戶端必須要知道所有服務的網絡位置的,以往的做法是配置是配置檔案中,或者有些配置在資料庫中。這裡就帶出幾個問題:

  需要配置N個服務的網絡位置,加大配置的複雜性

  服務的網絡位置變化,都需要改變每個調用者的配置

  叢集的情況下,難以做負載(反向代理的方式除外)

總結起來一句話:服務多了,配置很麻煩,問題多多

既然有這些問題,那麼服務發現就是解決這些問題的。話說,怎麼解決呢?我們再看一張圖

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

與之前一張不同的是,加了個服務發現子產品。圖比較簡單,這邊文字描述下。服務A-N把目前自己的網絡位置注冊到服務發現子產品(這裡注冊的意思就是告訴),服務發現就以K-V的方式記錄下,K一般是服務名,V就是IP:PORT。服務發現子產品定時的輪詢檢視這些服務能不能通路的了(這就是健康檢查)。用戶端在調用服務A-N的時候,就跑去服務發現子產品問下它們的網絡位置,然後再調用它們的服務。這樣的方式是不是就可以解決上面的問題了呢?用戶端完全不需要記錄這些服務網絡位置,用戶端和服務端完全解耦!

這個過程大體是這樣,當然服務發現子產品沒這麼簡單。裡面包含的東西還很多。這樣表述隻是友善了解。

圖中的服務發現子產品基本上就是微服務架構中服務發現的作用了。

二、開始部署

首先先建立一個asp.net core web api 項目,我已經建立好了。然後添加nugut包 consul。

1、在項目裡面的 Startup.cs  檔案裡面寫上我們的服務注冊,我把注冊的資訊放在了appsetting.json 檔案裡頭了。

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

然後在ConfigureServices寫上服務注冊

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

Configure方法 寫上服務注冊。

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

ConsulApp方法:

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

注冊服務 RegisterService

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

至此,consul注冊已經OK。

2、配置swagger具體内容

我把swagger的微服務資訊放在appsetting.json 裡面了。

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

是以在startup.cs中的資料是從這裡面擷取的

ConfigureServices方法總填寫如下:

其中裡面的【】中的内容是可以替換的。

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

Configure 方法中填寫以下内容:

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

至此,swagger配置完成。

3、接下來就要部署Ocelot網關裡面的内容啦。

apigateway項目也是建立一個asp.net core web api 項目,然後添加swaggernuget包。

然後在 ConfigureServices方法中寫上

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

然後在Configure 方法中寫上:

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

路由表裡面寫的内容為:

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

 自此配置完成。

三、運作

 1、先運作consul

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

打開浏覽器url位址:consul運作成功。

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

 2、運作userapi項目和apigateway項目。

在consul中發現多了一個userapi的服務注冊

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

 然後打開apigateway的swagger項目,可以看到userapi的接口,至此完成配置。

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

 具體swagger怎麼配置,可以參考我之前的文章(努力編寫中)

參考網址:

http://www.cnblogs.com/focus-lei/p/9047410.html

asp.net core 交流群:787464275 歡迎加群交流

如果您認為這篇文章還不錯或者有所收獲,您可以點選右下角的【推薦】按鈕精神支援,因為這種支援是我繼續寫作,分享的最大動力!

作者:

LouieGuo http://www.cnblogs.com/stulzq

聲明:原創部落格請在轉載時保留原文連結或者在文章開頭加上本人部落格位址,如發現錯誤,歡迎批評指正。凡是轉載于本人的文章,不能設定打賞功能,如有特殊需求請與本人聯系!

微信公衆号:歡迎關注                                                 QQ技術交流群: 歡迎加群

Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作
Ocelot網關統一檢視多個微服務asp.net core項目的swagger API接口0、前言一、準備二、開始部署三、運作

繼續閱讀