1. 程式人生 > >Ocelot一款.NET下的API閘道器介紹

Ocelot一款.NET下的API閘道器介紹

在當前微服務技術盛行的年代,大家都在大談特談微服務架構,api閘道器等等配套技術,但是我們發現,大多都是java系的一些技術,那咋們.NET系難道沒有嗎?那今天就給大家介紹一款ap閘道器框架:Ocelot

什麼是閘道器

API閘道器—— 它是系統的暴露在外部的一個訪問入口。這個有點像代理訪問的傢伙,就像一個公司的門衛承擔著定址、限制進入、安全檢查、位置引導、等等功能。

什麼是Ocelot

Ocelot是一個用.NET Core實現並且開源的API閘道器,它功能強大,包括了:路由、請求聚合、服務發現、認證、鑑權、限流熔斷、並內建了負載均衡器與Service Fabric、Butterfly Tracing整合。這些功能只都只需要簡單的配置即可完成,下面我們會對這些功能的配置一一進行說明。

Ocelot的實現原理

簡單的來說Ocelot是一堆的asp.net core middleware組成的一個管道。當它拿到請求之後會用一個request builder來構造一個HttpRequestMessage發到下游的真實伺服器,等下游的服務返回response之後再由一個middleware將它返回的HttpResponseMessage對映到HttpResponse上。

Ocelot基本使用

在專案中通過Nuget命令新增Install-Package Ocelot

首先在.Net工程中新增一個ocelot.json檔案

Ocelot一款.NET下的API閘道器介紹

 

在啟動類中載入配置檔案:

Ocelot一款.NET下的API閘道器介紹

 

先指定Oclot的對外服務訪問的地址和埠號

Ocelot一款.NET下的API閘道器介紹

 

接下來才是Ocelot的核心配置:

{

"DownstreamPathTemplate": "/",

"UpstreamPathTemplate": "/",

"UpstreamHttpMethod": [

"Get"

],

"AddHeadersToRequest": {},

"AddClaimsToRequest": {},

"RouteClaimsRequirement": {},

"AddQueriesToRequest": {},

"RequestIdKey": "",

"FileCacheOptions": {

"TtlSeconds": 0,

"Region": ""

},

"ReRouteIsCaseSensitive": false,

"ServiceName": "",

"DownstreamScheme": "http",

"DownstreamHostAndPorts": [

{

"Host": "localhost",

"Port": 51876,

}

],

"QoSOptions": {

"ExceptionsAllowedBeforeBreaking": 0,

"DurationOfBreak": 0,

"TimeoutValue": 0

},

"LoadBalancer": "",

"RateLimitOptions": {

"ClientWhitelist": [],

"EnableRateLimiting": false,

"Period": "",

"PeriodTimespan": 0,

"Limit": 0

},

"AuthenticationOptions": {

"AuthenticationProviderKey": "",

"AllowedScopes": []

},

"HttpHandlerOptions": {

"AllowAutoRedirect": true,

"UseCookieContainer": true,

"UseTracing": true

},

"UseServiceDiscovery": false

}

配置屬性說明:

Downstream是下游服務配置

UpStream是上游服務配置

Aggregates 服務聚合配置

ServiceName, LoadBalancer, UseServiceDiscovery 配置服務發現

AuthenticationOptions 配置服務認證

RouteClaimsRequirement 配置Claims鑑權

RateLimitOptions為限流配置

FileCacheOptions 快取配置

QosOptions 服務質量與熔斷

DownstreamHeaderTransform頭資訊轉發

演示一個基本路由配置:

Ocelot一款.NET下的API閘道器介紹

 

ReRoutes:是一個數組,裡面包含了多組路由配置;

DownstreamPathTemplate:下游服務的真實地址;

DownstreamScheme:請求協議

DownstreamHostAndPorts:指定下游服務的ip,埠。這裡可以配置負載均衡,比如下游服務應用橫向部署在多臺伺服器上,這裡非常方便的就可以做到負載均衡配置;

UpstreamPathTemplate:對外服務的地址;

UpstreamHttpMethod:配置請求方式;

RateLimitOptions:限流配置

EnableRateLimiting:限流開關

Period:限流統計時間段

PeriodTimespan:多長時間之後,使用者可以再次訪問

Limit:最大允許訪問次數

好了,一個最基本的路由配置就完成了。

其他的功能點後