1.负载均衡

ocelot可以在每个路由的可用下游服务中实现负载均衡,这使我们更有效地选择下游服务来处理请求。负载均衡类型:

  • leastconnection:根据服务正在处理请求量的情况来决定哪个服务来处理新请求,即将新请求发送到具有最少现有请求的服务去处理。算法状态没有分布在ocelot集群中。
  • roundrobin:遍历可用服务并发送请求。算法状态没有分布在ocelot集群中。
  • noloadbalancer:从配置或服务发现中获取第一个可用服务来处理新请求。
  • cookiestickysessions:通过使用cookie,确保特定的请求能够被分配到特定的服务上进行处理。

在ocelot负载均衡项目示例中,通过网关项目的路由loadbalanceroptions选项可以配置负载均衡类型:

新请求通过上游访问下游服务的时候,ocelot会根据loadbalanceroptions负载均衡选项类型来分发到具体下游服务。

2.服务发现

下面展示如何使用服务发现来设置路由:

设置此选项后,ocelot将从服务发现提供程序中查找下游主机和端口,并在所有可用服务中进行负载平衡请求。如果您从服务发现提供者(领事)中添加和删除服务,ocelot会停止调用已删除的服务,并开始调用已添加的服务。后续学习服务发现这块知识点时候会重新再讲解。

3.项目演示

3.1apigateway项目

该项目通过loadbalanceroptions配置选项定义服务负载均衡请求机制,事例项目使用的负载均衡类型是roundrobin,在program添加ocelot支持代码如下:

3.2apiservicesa和apiservicesb下游服务项目

apiservicesa和apiservicesb项目分别新建两个get请求方法,代码分别如下:

通过dotnet run命令启动apigateway项目(网关层)

通过dotnet run命令启动apiservicesa项目

通过dotnet run命令启动apiservicesb项目

通过浏览器查看轮询分发给下游服务返回的结果:

负载均衡轮询分发下游服务成功。

4.自定义负载均衡

ocelot支持自定义负载均衡的方法。自定义负载均衡的类需要继承iloadbalancer接口类,下面我们定义一个简单的负载均衡循环输出下游服务的示例:

在ocelot中注册此类:

最后在路由的loadbalanceroptions配置选项上修改为customloadbalancer自定义负载均衡类名:

运行项目调试查看结果:
第一次请求时候分发到apiservicesa项目。

第二次请求时候分发到apiservicesb项目。

从上面结果来看,自定义负载均衡成功。

参考文献:
ocelot官网

到此这篇关于asp.net core3.1 ocelot负载均衡的实现的文章就介绍到这了,更多相关asp.net core3.1 ocelot负载均衡内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!