02-02 .net core 3.1 使用 Ocelot搭建api网关实现负载均衡

本文详细介绍如何在Ocelot API网关中配置负载均衡,包括使用DownstreamHostAndPorts属性进行多节点配置,以及LeastConnection、RoundRobin和NoLoadBalancer三种负载均衡策略的设置方法。通过实际操作演示,展示如何在不同下游服务间实现有效负载分发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

负载均衡

在阅读本文之前,建议先阅读 02-01 .net core 3.1 使用 Ocelot搭建api网关

1、修改configuration.json,当下游有多个节点时,可以使用DownstreamHostAndPorts配置
{
  //全局baseUrl,即网关的baseUrl
  "GlobalConfiguration": {
    "BaseUrl": "http://localhost:5000/"
  },
  "ReRoutes": [
    {
      "UpstreamPathTemplate": "/api/{controller}/{action}", //上游Api请求格式
      "DownstreamPathTemplate": "/{controller}/{action}", //网关转发到下游格式
      "UpstreamHttpMethod": [ "GET", "POST", "DELETE", "PUT" ], //上下游支持请求方法
      "DownstreamScheme": "http", //下游服务配置
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost", //下游地址
          "Port": 5001 //下游端口号
        },
        {
          "Host": "localhost",
          "Port": 5002
        }
      ],
      /**配置负载
      LeastConnection: 最少连接,跟踪哪些服务正在处理请求,并把新请求发送到现有请求最少的服务上。该算法状态不在整个Ocelot集群中分布。
      RoundRobin: 轮询可用的服务并发送请求。 该算法状态不在整个Ocelot集群中分布。
      NoLoadBalancer: 不负载均衡,从配置或服务发现提供程序中取第一个可用的下游服务。
      最新版本Ocelot配置轮询方式如下:
      **/
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      }
      //老版本Ocelot配置轮询方式如下:
      //"LoadBalancer": "RoundRobin"
    }
  ]
}
LoadBalancer是来决定负载的算法
  • LeastConnection:最少连接,跟踪哪些服务正在处理请求,并把新请求发送到现有请求最少(最空闲)的服务上。该算法状态不在整个Ocelot集群中分布。配置方式:"LoadBalancer":"LeastConnection"
  • RoundRobin:轮询可用的服务并发送请求,即轮询网关的节点下的服务器,直到请求到目标api。 该算法状态不在整个Ocelot集群中分布。需要注意的是老版本的"LoadBalancer": "RoundRobin" 在最新版本中无效,应该为"LoadBalancerOptions": { "Type":"RoundRobin"},其他两种配置还是继续沿用的老版本配置方式。
  • NoLoadBalance:不负载均衡,从配置或服务发现提供程序中取第一个可用的下游服务。配置方式:"LoadBalancer":"NoLoadBalance"
2、请求api看效果

(1)请求http://localhost:5000/api/secondapi/getmessage,第一次没有请求到
在这里插入图片描述
再请求一次就请求到了
在这里插入图片描述
轮询过程
在这里插入图片描述
(2)请求http://localhost:5000/api/firstapi/getmessage也是同理,第一次能请求到,第二次就请求不到了
在这里插入图片描述

参考文章

.Net Core使用Ocelot网关(一) -负载,限流,熔断,Header转换
Asp.Net Core + Ocelot 网关搭建:负载均衡的配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值