zoukankan      html  css  js  c++  java
  • 网关Ocelot

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

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

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

    Step1:Nuget上下载Ocelot的包

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

     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 限流 熔断

      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 负载均衡

      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"
        }
      }
  • 相关阅读:
    Java实现 LeetCode 413 等差数列划分
    Java实现 LeetCode 413 等差数列划分
    Java实现 LeetCode 412 Fizz Buzz
    简单字符设备驱动程序
    fork与vfork的区别
    进程创建函数fork()、vfork() ,以及excel()函数
    区分execl与system——应用程序中执行命令
    CMOS Sensor的调试经验分享
    嵌入式ARM-Linux开发工具下载地址合集
    嵌入式 linux 查看内存
  • 原文地址:https://www.cnblogs.com/xingzhu-nan/p/12594369.html
Copyright © 2011-2022 走看看