ServiceDiscoveryProvider:服务发现的相关配置,Scheme代表用的是http还是https;Host代表的是Consul启动的主机;Port代表Consul启动的Http端口;Type这里使用的是Consul这种服务发现,可以指定其他服务发现框架;
BaseUrl:这个配置主要网关对外暴露的地址,也就是调用者使用的地址;
Routes中多了两个和一般路由不同的配置,如下:
ServiceName:指定服务名,这里是Consul注册服务时指定的服务名,根据这个名字内部可以获取到对应的Host和端口;所以有了ServiceName,就可以不用手动配置Host和端口啦;
LoadBalancerOptions:指定负载均衡算法,其实这里咱们还没有说到负载均衡,但如果不配置会报错,所以就提前配置上了;
3.3 启动Consul服务将两个后台服务接口注册到Consul中;(过程就不细说啦,详细参考和这两篇文章);这里用配置文件的方式,如下配置文件:
然后启动Consul即可,这里为了演示方便,直接就用开发者模式啦;
3.4 运行结果 3.5 动态路由除了以上显示指定服务名之外,其实可以动态路由,如下配置运行:
Routes节点不需要配置任何路由;
4. 负载均衡在高并发场景,后台服务是需要做集群部署的,而Ocelot可以在配置路由规则时,开启负载均衡功能,并指定对应的均衡算法,从而实现请求按算法转发到后台服务。
4.1 模拟集群环境为了方便演示集群效果,这里将后台服务主机的端口打印出来,代码如下:
然后通过命令的方式,将ServiceAPI1后台服务启动多个,只是端口不一样而已;如下:
4.2 将启动起来的服务配置网关中启动起来之后,将他们配置到路由中,如下:
配置解析:
DownstreamHostAndPorts中配置多个启动的后台服务Host和端口;
LoadBalancerOptions指定负载均衡算法,图中指定的是轮询,通常有以下几种:
LeastConnection 把新请求转发到请求最少的后台服务上;
RoundRobin 将请求轮询轮询转发都配置的后台服务上;
NoLoadBalancer 不负载均衡;
CookieStickySessions 使用cookie关联相关的请求到指定的服务;
4.3 网关运行起来看效果 4.4 搭配Consul一块用首先进行修改Consul的配置文件,然后将其启动,见下图:
如上图所示,在相同服务名ServiceAPI1Name下面注册了两个服务,一个端口是8000,一个端口是8003;
然后在网关中修改一下配置,然后启动:
咦,到这发现篇幅略长啦,先暂停吧;另外Polly这个知识点之前没聊过,下期先补上,然后继续聊其他功能~~~
总结