1. 负载均衡
分布式架构中,当后端同一个应用的实例较多,负载均衡是非常必要的,否则前端对后端 API 的请求,可能只命中其中的几个应用实例,这几个实例压力会很大,而其他实例一直处于空闲状态,达不到分布式架构中利用服务器资源换取性能的效果。
Ocelot 网关提供了负载均衡功能,通过配置文件即可实现,下面是 Ocelot 负载均衡功能的 demo。
-
启动 CustomerService 的两个实例,修改以下之前的演示 api 让其返回不同的结果
启动实例1:


启动实例2:


在 Nacos 也可以看到注册上了 CustomerService 的两个实例

-
修改 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"

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

被折叠的 条评论
为什么被折叠?



