API网关—Ocelot之负载均衡

本文介绍了Ocelot作为API网关如何实现负载均衡,包括RoundRobin、LeastConnection等策略,并展示了自定义负载均衡策略的步骤。同时,讲解了Ocelot的请求缓存功能,通过FileCacheOptions配置实现对下游服务的缓存,提高接口访问速度。

API网关—Ocelot之负载均衡

1. 负载均衡

分布式架构中,当后端同一个应用的实例较多,负载均衡是非常必要的,否则前端对后端 API 的请求,可能只命中其中的几个应用实例,这几个实例压力会很大,而其他实例一直处于空闲状态,达不到分布式架构中利用服务器资源换取性能的效果。

Ocelot 网关提供了负载均衡功能,通过配置文件即可实现,下面是 Ocelot 负载均衡功能的 demo。

  1. 启动 CustomerService 的两个实例,修改以下之前的演示 api 让其返回不同的结果

    启动实例1:
    在这里插入图片描述
    在这里插入图片描述
    启动实例2:
    在这里插入图片描述
    在这里插入图片描述
    在 Nacos 也可以看到注册上了 CustomerService 的两个实例
    在这里插入图片描述

  2. 修改 Ocelot 网关配置

    负载均衡主要配置 LoadBalancerOptions 节点,可以配置在 Routes 节点各个服务路由中,这将对单个服务起作用,也可以配置在 GlobalConfiguration 中,官方文档中说明 GlobalConfiguration 中的配置,将会覆盖Routes 中各个路由的配置,但是 17.0.1 版本下经过测试发现并不起作用,在 Routes 节点有配置的情况下,必须针对每个服务进行配置,无法通过全局配置作用于所有的服务。

    这里我依旧沿用上一节的动态路由,在 Routes 节点没有内容的情况下,在 GlobalConfiguration 中配置 LoadBalancerOptions 是可以的。

    "GlobalConfiguration": {
         
         
        "RequestIdKey": null,
        "ServiceDiscoveryProvider": {
         
         
          "Type": "Nacos",
          // 为了使用动态路由必须配置Host和Port,查看DownstreamRouteFinderMiddleware中的IDownstreamRouteProviderFactory获取时,
          // 只有存在Host和Port的时候,才会获取到DownstreamRouteCreator,才能从url中解析出ServiceName
          "Host": "0.0.0.0",
          "Port": 8500
        },
        "DownstreamScheme": "http",
        "LoadBalancerOptions"
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值