SpringCloud+zuul服务网关

Zuul网关

什么是网关?
网关是介于我们客户端和各个服务中间的一个流量入口,因为高度集中所以他还充当服务调用的中央策略执行点,因为他的入口性,和集中性,那么我们横切服务的关注点就很容易在一个地方实现,而不需要在各个开发团队来实现这些关注点。
可以在服务网关中实现的横切关注点主要有一下几个:
一、静态路由
二、动态路由
三、验证和授权
四、日志记录和流量控制
(我们有没有注意到这样一个问题 ,网关是客户端和各个服务之间的流量入口,那么如果网关挂掉了怎么办(单点故障)?这难道不是瓶颈和隐患吗?所以在构建服务网关实现时,要把负载均衡器置于服务网关之前,这样赋予了服务网关的可伸缩性,如果置于服务网关之后,那么它会变成一个瓶颈)
来看基础的代码实现
1.pom依赖在这里插入图片描述

里面牵扯到一个版本问题图上已经标记

给引导类加上启动zuul网关注解

在这里插入图片描述
添加配置
在这里插入图片描述
这样启动服务就开启了zuul网关
在这里插入图片描述
我们发现Eureka已经发现并注册了zuul。
(这里小伙伴们有没有疑问,zuul引导类命名没有服务发现注解,只是在bootstrap文件里配置的eureka客户端的配置,是因为zuul默认使用的ribbon做负载均衡,而ribbon会去Eureka注册)

zuul的核心是一个反向代理,它是一个中间服务器,反向代理负责捕获客户端请求然后代表客户端调用远程资源。
在微服务的架构下,zuul从客户端接收微服务调用并将其转发给下游服务,服务端认为他只与zuul通信。那么这就要求zuul必须知道如何将进来的调用映射到下游路由。zuul提供了以下几种机制来实现这一点:
一、通过服务发现自动映射路由
二、使用服务发现手动映射路由
三、使用静态URL,手动映射路由

第一种,如果我们没有配置zuul,那么zuul将默认采取这种机制,再来看一下我们的服务注册情况

在这里插入图片描述
除了Eureka服务器本身注册了三个服务 四个实例。
我们可以通过/routes端点来查看zuul服务器的路由信息
我们访问http://localhost:8004/actuator/routes
在这里插入图片描述
可以看到zuul服务器根据服务注册发现自动配置的路由信息
/服务名/**:“服务名”
那么比如我要访问server1的/hello端口就可以访问http://localhost:8004/service1/hello
在这里插入图片描述

可以看到我们可以正常访问服务1,而且是实现了客户端负均衡的。(因为zuul默认使用ribbon来进行服务发现和负载均衡)

如果我们不想使用服务注册自动映射路由,我们想要灵活的自定义手动添加路由呢?

那么我们就要给zuul添加一些配置

在这里插入图片描述

prefix指定了网关的前缀
ignored-services 指定要忽略的服务发现的自动配置
routes 我们手动配置的路由

再来观察一下我们zuul的路由配置
在这里插入图片描述
可以看到路由信息确实变了,而且我们访问http://localhost:8004/api/server1/hell 确实可以访问服务

zuul还可以用来路由不受Eureka管控的服务

在这里插入图片描述
我们访问http://localhost:8004/api/server1static/hello 可以访问到server1
这个是直接URL定为访问的。

关于zuul动态重新加载路由配置

动态加载路由配置非常有用,我们可以不用收回zuul服务而实现动态加载新的路由信息。这就用到我们前面学到的只是,结合Config配置中和与@Refresh注解,通过暴露服务的/refresh端点让zuul重新加载配置路由从而达到效果。这里就不做代码累赘了。

zuul本身也实现了hystrix,可以通过配置来监控所有或者特定的请求经过网关时的超时时间。

在这里插入图片描述
这样所有经过zuul的请求超过2.5秒没有响应下,htstrix会被激活并快速失败。

哎,我恨不得一下把今天学的都给写完,实在太累了写博客,不写了,明天加班写。
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值