网关Ocelot

 

 

网关Ocelot

 

Ocelot作为网关,功能有很多:负载均衡,限流,熔断,缓存....

而作为使用者的我们,只需要在configuration.json中配置即可,配置文件在官网上都有,站在巨人的肩膀上是真滴舒服。

下面简单记录几个功能的使用

Step1:Nuget上下载Ocelot的包

网关Ocelot

 

 Step2:添加configuration.json文件,配置在官网或者自己网上搜索

网关Ocelot

 

 

 Step3:services.AddOcelot();      app.UseOcelot();     

 功能一:路由,设置后网关请求的.good/{goodId}会转向服务的/api/good/goodId

 

{
    "DownstreamPathTemplate": "/api/good/{goodId}",//下游路由模板
    "DownstreamScheme": "http",//下游路由请求的方式
    "DownstreamHostAndPorts": [//下游路由的Host以及端口
            {
                "Host": "localhost",
                "Port": 1001,
            }
        ],
    "UpstreamPathTemplate": "/good/{goodId}",//上游路由请求的模板
    "UpstreamHttpMethod": [ "Put", "Delete" ]//上游路由请求的方式
}

功能二:+Polly 限流 熔断

网关Ocelot

 

  services.AddOcelot().AddPolly();

限流

 "RateLimitOptions": {
          "ClientWhitelist": [], //白名单
          "EnableRateLimiting": true, //是否启用限流
          "Period": "5m", //1s, 5m, 1h, 1d
          "PeriodTimespan": 20, //多少秒之后客户端可以重试
          "Limit": 5, //在统计时间段内允许的最大请求数量

          //在 GlobalConfiguration下我们还可以进行以下配置
          "DisableRateLimitHeaders": false, //Http头  X-Rate-Limit 和 Retry-After 是否禁用
          "QuotaExceededMessage": "Too  many!!!", //当请求过载被截断时返回的消息
          "HttpStatusCode": 666, //当请求过载被截断时返回的http status
          "ClientIdHeader": "Test" //用来识别客户端的请求头,默认是 ClientId
        }

熔断

"QoSOptions": {
        "ExceptionsAllowedBeforeBreaking": 0, //允许多少个异常请求
        "DurationOfBreak": 0, // 熔断的时间,单位为秒
        "TimeoutValue": 0 //如果下游请求的处理时间超过多少秒则自如将请求设置为超时
      }

功能三:+Consul 负载均衡

网关Ocelot

 

  services.AddOcelot().AddConsul();

 "ReRoutes": [
    {
      //万能模板:"/{url}"  ;万能模板的优先级最低,只要有其它的路由模板,其它的路由模板则会优先生效
      "UpstreamPathTemplate": "/T/{url}", //上游请求地址模板
      "UpstreamHttpMethod": [ //上游请求方式
        "Get",
        "Post"
      ],
      "DownstreamPathTemplate": "/{url}", //下游跳转地址模板;将用户的请求 /post/1 转发到 localhost/api/post/1
      "DownstreamScheme": "http",
      "UseServiceDiscovery": true,
      "ServiceName": "shenqing",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      }
}]
 "GlobalConfiguration": {
    "BaseUrl": "http://127.0.0.1:6299",
    "ServiceDiscoveryProvider": {
      "Host": "localhost",
      "Port": 8500,
      "Type": "Consul"
    }
  }

 

上一篇:VS 设置显示错误列表


下一篇:集合与编码