1.为什么需要服务网关
①客户端可能会调用多个微服务,路径维护麻烦,主要是host和port
②存在跨域问题
③统一身份认证
为了解决上述问题引入微服务网关的概念。可以了解Nginx的作为网关的使用配置(不能够解决统一身份认证的问题)
2.Zuul的使用
①创建网关服务,引入依赖
②配置启动类
③路由配置
面向服务的路由配置,添加注册中心客户端的配置(包括引入依赖,添加启动类配置,application.yml配置)
简化的路由配置
3.Zuul的过滤器
上图有助于理解Zuul和注册中心在微服务中的作用的区别:Zuul所有微服务针对外部客户端的统一路由,注册中心是管理内部所有微服务的通讯录。
①自定义过滤器需要继承ZuulFilter,并交由Spring管理@Component.
包括:
a.指定过滤器类型filterType(四种类型pre,routing,post,error)
b.指定过滤器的执行顺序filterOrder(值越小越先执行)
c.过滤器是否生效,shouldFilter(true使用此过滤器)
d.过滤器执行的逻辑run()
②身份认证过滤器
4.Zuul网关的源码简析
5.总结
学习网关的作用,zuul的使用配置,自定义zuulFilter
Zuul的缺点:阻塞式访问的方式如果阻塞过多容易引起资源不足,不支持WebSocket(大多数客户端使用WebSocket实现丰富的效果)。
虽然Zuul2.0解决了上述问题,但是SpringCloud已将Zuul替换成了SpirngCloud GateWay作为默认的网关组件。