2.3微服务-ocelot

网关 ocelot

负载均衡

安全问题:端口太多,调用关系复杂、不能直接调用实例,

服务治理:鉴权授权、限流、缓存、熔断、超时

 

一、项目安装ocelot nuget包

<PackageReference Include="Ocelot" Version="19.0.2" />

 

二、注释原来api管道模型,ocelot接管,添加配置文件configuration.json文件

 //builder.Services.AddControllers(); //app.UseAuthorization(); //app.MapControllers();

builder.Services.AddOcelot(); //添加ocelot服务组件
await app.UseOcelot();//替换管道模型
builder.Configuration.AddJsonFile("configuration.json", optional: false, reloadOnChange: true);//添加配置文件

 

三、编写网关配置文件configuration.json

 -- /通配路由

 -- "Priority": 0 // 路由权重,通配默认0,不可修改

 -- 负载均衡策略:RoundRobin 轮询 / LeastConnection 最少连接数 / NoLoadBalance 不负载均衡 / CookieStickySessions 会话粘滞

 

{
  "Routes": [
    {
      "DownstreamPathTemplate": "/api/{url}", //服务地址 url变量
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [ //转发地址
        {
          "Host": "127.0.0.1",
          "Port": 5000
        }
      ],
      "UpstreamPathTemplate": "/T5000/{url}", //网关地址 url变量
      "UpstreamHttpMethod": [ "Get", "Post" ] //支持请求类型
    },
    {
      "UpstreamPathTemplate": "/{url}",
      "UpstreamHttpMethod": [ "Get", "Post" ],
      "DownstreamPathTemplate": "/{url}", //通配路由
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "127.0.0.1",
          "Port": 5001
        },
        {
          "Host": "127.0.0.1",
          "Port": 5002
        },
        {
          "Host": "127.0.0.1",
          "Port": 5003
        }
      ],
      "LoadBalancerOptions": { //负载均衡策略
        "Type": "RoundRobin"   //RoundRobin 轮询 / LeastConnection 最少连接数 / NoLoadBalance 不负载均衡 / CookieStickySessions 会话粘滞
      },
      //"LoadBalancerOptions": {
      //  "Type": "CookieStickySessions",
      //  "Key": "ASP.NET_SessionId",
      //  "Expiry": 1800000
      //},
      "Priority": 0 // 路由权重,通配默认0,不可修改
    }
  ]
}

 

四、启用网关实例、测试成功

posted @ 2023-06-17 23:35  有只烤鸡  阅读(20)  评论(0编辑  收藏  举报