二、.Net Core搭建Ocelot

2022-11-01 15:00:53

上一篇文章介紹了Ocelot的基本概念:https://www.cnblogs.com/yangleiyu/p/15043762.html

本文介紹在.net core中如何使用ocelot。

 

Ocelot是系統中對外暴露的一個請求入口,所有外部介面都必須通過這個閘道器才能向下遊API發出請求

1、Nuget參照Ocelot(注意版本,我用的是16.0.1)

2、根目錄新增組態檔Ocelot.json

{    
    "ReRoutes": [],    
    "GlobalConfiguration": {}
}

說明:ReRoutes是一個陣列,將會包含伺服器的路由設定,GlobalConfiguration則是一個全域性設定項。

3、修改Program.cs,參照新增的組態檔

 

4、修改Startup.cs註冊服務

 

5、組態檔

 設定如下:

{
  //全域性設定
  "GlobalConfiguration": {
    "BaseUrl": "http://192.168.50.118:8003/" //閘道器暴露的的地址。
  },
  //路由設定
  "routes": [
    {
      ///{url}轉發所有
      //"UpstreamHost": "localhost:4023"轉發特定服務
      "UpstreamPathTemplate": "/QiantoonService/Oam", //上游Api請求路由規則
      "DownstreamPathTemplate": "/QiantoonService/Oam/Oam", //閘道器轉發到下游路由規則
      "UpstreamHttpMethod": [ "GET", "POST" ], //上下游支援請求方法
      "DownstreamScheme": "http", //下游服務設定
      "DownstreamHostAndPorts": [
        {
          "Host": "192.168.50.118", //下游地址
          "Port": 8001 //下游埠號
        }
      ]
    },
    {
      "UpstreamPathTemplate": "/QiantoonService/SelfReg", //上游Api請求路由規則
      "DownstreamPathTemplate": "/QiantoonService/SelfReg/SelfReg", //閘道器轉發到下游路由規則
      "UpstreamHttpMethod": [ "GET", "POST" ], //上下游支援請求方法
      "DownstreamScheme": "http", //下游服務設定
      "DownstreamHostAndPorts": [
        {
          "Host": "192.168.50.118", //下游地址
          "Port": 8002 //下游埠號
        }
      ]
    }
  ]
}

其他說明:

GlobalConfiguration,它是一個全域性設定項,通常我們都要在這個設定項中新增一個屬性BaseUrl,BaseUrl就是Ocelot服務對外暴露的Url。

"GlobalConfiguration": {"BaseUrl": "http://localhost:4727"}

ReRoutes是一個陣列,其中的每一個元素代表了一個路由,而一個路由所包含的所有可設定引數如下:

{    
    "DownstreamPathTemplate": "/",    
    "UpstreamPathTemplate": "/",    
    "UpstreamHttpMethod": 
    [        
        "Get"
    ],    
    "AddHeadersToRequest": {},    
    "AddClaimsToRequest": {},    
    "RouteClaimsRequirement": {},    
    "AddQueriesToRequest": {},    
    "RequestIdKey": "",    
    "FileCacheOptions": 
    {        
        "TtlSeconds": 0,        
        "Region": ""
    },    
    "ReRouteIsCaseSensitive": false,    
    "ServiceName": "",    
    "DownstreamScheme": "http",    
    "DownstreamHostAndPorts": 
    [
        {            
        "Host": "localhost",            
        "Port": 8001,
        }
    ],    
    "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 頭資訊轉發設定

注意

組態檔中「routes」關鍵字為新版本,舊版本關鍵字為「ReRoutes

此處巨坑,小楊被坑了半天