spring微服务实战---zuul笔记
服务网关
服务客户端和被调用服务之间的中介,有了服务网关,服务客户端永远不会直接调用单个服务的url,而是将所有调用都放到服务网关之上。
作用:路由(静态和动态)、验证和授权、度量数据收集和日志记录
zuul
一个服务网关,非常容易通过spring cloud 注解 进行创建和使用。
zuul使用需要完成的3件事:
(1)建立一个zuul spring boot项目,并配置合适的maven依赖。
(2)使用spring cloud 注解 修饰这个spring boot项目,将其声明为zuul服务
(3)配置 zuul 以便 eureka 进行通信(可选)
依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
注解:
@EnableZuulProxy //加在启动引导类上,使服务成为一个Zuul服务器
@EnableZuulServer //该注解将创造一个zuul服务器,它不会加载任何zuul反向代理过滤器,也不会使用eureka进行服务发现
反向代理:
一个中间服务器,它位于尝试访问资源的客户端和资源本身之间。客户端甚至不知道它正与代理之外的服务器进行通信。反向代理负责捕获客户端的请求,然后代表客户端调用远程资源。
zuul的核心是一个反向代理。
zuul路由映射机制:
通过(eureka)服务发现自动映射路由
无需配置,zuul根据服务ID自动路由请求(向eureka)(如果服务实例没有在运行,zuul将不会公开该服务的路由)
通过(eureka)服务发现手动映射路由
可自定义路由映射,而不单纯依赖eureka服务ID创建的自动路由(不管服务实例是否在运行,zuul仍会公开路由,如果调用不存的服务路由,则报500)
通过静态URL手动映射路由
zuul可以路由那些不受eureka管理的服务
如何禁止zuul自动路由:
zuul:
ignored-services: 'organizationservice' // ignored-services参数可禁止自动路由,若要禁止所有自动路由,可将值设为*
prefix: /api // 所有已定义的服务都将添加前缀/api
routes:
organizationservice: /organization/**
/api作用:api路由 和 内容路由 ??
静态路由设置方法:
zuul:
routes:
xxxxxx: // zuul用于在内部识别服务的关键字
path: /xxxxxx/** // 静态路由
url: http://ip:port // 已建立服务的静态实例,将被直接调用,而不是通过eureka调用
zuul使用hystrix和ribbon,来帮助防止长时间运行的服务调用影响服务网关的性能,默认情况下,对于任何需要1s的时间(hystrix默认值)来处理请求的调用,zuul将终止报500.
参数:hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 2500 // 超时设置为2.5s
如果需要为特定服务设置hystrix超时,可以将需要被覆盖超时的服务的eureka服务id 替换 上述参数中的 default
ribbon同样有超时设置。ps:spring微服务实战144页
zuul 核心:过滤器 // 相当于servlet和aop
前置过滤器
在请求被发送到目的地之前被调用 // 主要用于验证请求合法性
后置过滤器
在请求发送到目的地,且响应回给客户端后,被调用 // 主要用于记录从目标服务返回的响应、处理错误、审核敏感信息响应
路由过滤器
在发送给目的地前被拦截调用 // 可将服务在两个新老版本间进行路由,能够让少量用户体验新功能
// 不会执行http重定向,而是会终止传入的http请求,然后代表原始调用值调用路由
UserContextFilter 类是一个自定义的http servlet过滤器,它将关联ID映射到UserContext类。
/* 点滴积累 */
推荐阅读
-
Spring实战 读书笔记 1.Spring之旅
-
实战SpringCloud响应式微服务系列教程(第九章)使用Spring WebFlux构建响应式RESTful服务
-
微服务架构下使用Spring Cloud Zuul作为网关将多个微服务整合到一个Swagger服务上
-
Spring Cloud实战之初级入门(六)— 服务网关zuul
-
Spring Cloud微服务实战教程|Spring Cloud视频教程 Spring Cloud
-
Spring Cloud微服务实战教程|Spring Cloud视频教程 Spring Cloud
-
spring微服务实战---zuul笔记
-
微服务架构实战学习笔记 第五章 Spring Cloud Netflix Hystrix与服务容错
-
微服务架构实战学习笔记 第四章 Spring Cloud Netflix Ribbon与负载均衡
-
荐 阿里微服务架构Spring Cloud Alibaba Sentinel实战