网关Ocelot功能演示安排的明明白白~~~ (3)

ServiceDiscoveryProvider:服务发现的相关配置,Scheme代表用的是http还是https;Host代表的是Consul启动的主机;Port代表Consul启动的Http端口;Type这里使用的是Consul这种服务发现,可以指定其他服务发现框架;

BaseUrl:这个配置主要网关对外暴露的地址,也就是调用者使用的地址;

Routes中多了两个和一般路由不同的配置,如下:

ServiceName:指定服务名,这里是Consul注册服务时指定的服务名,根据这个名字内部可以获取到对应的Host和端口;所以有了ServiceName,就可以不用手动配置Host和端口啦;

LoadBalancerOptions:指定负载均衡算法,其实这里咱们还没有说到负载均衡,但如果不配置会报错,所以就提前配置上了;

3.3 启动Consul服务

将两个后台服务接口注册到Consul中;(过程就不细说啦,详细参考和这两篇文章);这里用配置文件的方式,如下配置文件:

image-20210402221640328

然后启动Consul即可,这里为了演示方便,直接就用开发者模式啦;

3.4 运行结果

image-20210402222950495

3.5 动态路由

除了以上显示指定服务名之外,其实可以动态路由,如下配置运行:

image-20210402225019606

Routes节点不需要配置任何路由;

4. 负载均衡

在高并发场景,后台服务是需要做集群部署的,而Ocelot可以在配置路由规则时,开启负载均衡功能,并指定对应的均衡算法,从而实现请求按算法转发到后台服务。

4.1 模拟集群环境

为了方便演示集群效果,这里将后台服务主机的端口打印出来,代码如下:

image-20210403002543495

然后通过命令的方式,将ServiceAPI1后台服务启动多个,只是端口不一样而已;如下:

image-20210403221010139

4.2 将启动起来的服务配置网关中

启动起来之后,将他们配置到路由中,如下:

image-20210403204553359

配置解析:

DownstreamHostAndPorts中配置多个启动的后台服务Host和端口;

LoadBalancerOptions指定负载均衡算法,图中指定的是轮询,通常有以下几种:

LeastConnection 把新请求转发到请求最少的后台服务上;

RoundRobin 将请求轮询轮询转发都配置的后台服务上;

NoLoadBalancer 不负载均衡;

CookieStickySessions 使用cookie关联相关的请求到指定的服务;

4.3 网关运行起来看效果

image-20210403220600727

4.4 搭配Consul一块用

首先进行修改Consul的配置文件,然后将其启动,见下图:

image-20210403221739328

如上图所示,在相同服务名ServiceAPI1Name下面注册了两个服务,一个端口是8000,一个端口是8003;

然后在网关中修改一下配置,然后启动:

image-20210403222306562

咦,到这发现篇幅略长啦,先暂停吧;另外Polly这个知识点之前没聊过,下期先补上,然后继续聊其他功能~~~

总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppgpf.html