跟我学Spring Cloud(Finchley版)-18-Zuul深入
本节探讨Zuul的高级特性。
TIPS:
笔者已经写过很多Zuul相关的文章,对于已经写过的内容,就不再啰嗦一遍了,直接贴地址吧。
过滤器详解
过滤器是Zuul的核心,Zuul大多功能都是基于过滤器实现的。详见:Spring Cloud Zuul过滤器详解,文章着重探讨了Zuul过滤器的生命周期、如何自定义过滤器、如何禁用指定过滤器等。
内置过滤器详解
Zuul内置了很多过滤器,这些过滤器帮助我们实现各种能力,来分析一下内置过滤器有哪些,分别是干嘛的。
详见:Spring Cloud内置的Zuul过滤器详解
为Zuul提供回退
跟我学Spring Cloud(Finchley版)-16-Zuul 讲过,Zuul整合了Hystrix,而Hystrix提供fallback的能力。
前文已详细讲过通用方式提供fallback、Feign提供fallback。如果不记得如何提供Fallback,可前往如下文章复习。
- 跟我学Spring Cloud(Finchley版)-13-通用方式使用Hystrix
- 跟我学Spring Cloud(Finchley版)-14-Feign使用Hystrix
/*** @author itmuch.com*/
@Component
public class MyFallbackProvider implements FallbackProvider {@Overridepublic String getRoute() {// 表明是为哪个微服务提供回退,*表示为所有微服务提供回退return "*";}@Overridepublic ClientHttpResponse fallbackResponse(String route, Throwable cause) {if (cause instanceof HystrixTimeoutException) {return response(HttpStatus.GATEWAY_TIMEOUT);} else {return this.fallbackResponse();}}public ClientHttpResponse fallbackResponse() {return this.response(HttpStatus.INTERNAL_SERVER_ERROR);}private ClientHttpResponse response(final HttpStatus status) {return new ClientHttpResponse() {@Overridepublic HttpStatus getStatusCode() throws IOException {return status;}@Overridepublic int getRawStatusCode() throws IOException {return status.value();}@Overridepublic String getStatusText() throws IOException {return status.getReasonPhrase();}@Overridepublic void close() {}@Overridepublic InputStream getBody() throws IOException {return new ByteArrayInputStream("服务不可用,请稍后再试。".getBytes());}@Overridepublic HttpHeaders getHeaders() {// headers设定HttpHeaders headers = new HttpHeaders();MediaType mt = new MediaType("application", "json", Charset.forName("UTF-8"));headers.setContentType(mt);return headers;}};}
}
这样,当Zuul后端服务发生异常时,就会进到该Fallback类,并返回服务不可用,请稍后再试。
。
高可用
详见:Zuul的高可用
实战技巧
- 如何配置Zuul的Hystrix线程池
- Spring Cloud限流详解 ,里面谈到基于Zuul的限流。
其他
虽然是基于Edgware写的,但Finchley版本依然适用。
- Spring Cloud Edgware新特性之四:Zuul routes端点功能增强
- Spring Cloud Edgware新特性之五:filters端点
本文首发
http://www.itmuch.com/spring-cloud/finchley-18/
干货分享
转载于:https://blog.51cto.com/10180481/2347459
跟我学Spring Cloud(Finchley版)-18-Zuul深入相关推荐
- Spring Cloud Finchley版中Consul多实例注册的问题处理
由于Spring Cloud对Etcd的支持一直没能从孵化器中出来,所以目前来说大多用户还在使用Eureka和Consul,之前又因为Eureka 2.0不在开源的消息,外加一些博眼球的标题党媒体使得 ...
- hystrix 全局熔断_跟我学Spring Cloud(Finchley版)14Feign使用Hystrix
Feign默认已经整合了Hystrix,本节详细探讨Feign使用Hystrix的具体细节. 服务降级 1 加配置,默认Feign是不启用Hystrix的,需要添加如下配置启用Hystrix,这样所有 ...
- 跟我学Spring Cloud(Finchley版)-10-Feign深入
上一节( 跟我学Spring Cloud(Finchley版)-09-Feign )讲了Feign的入门姿势并深入对比了RestTemplate,本节来深入探讨Feign的高级特性.总的来说,Feig ...
- 跟我学Spring Cloud(Finchley版)-07-Ribbon入门
经过前文讲述,我们已经实现了服务发现.本节来解决 跟我学Spring Cloud(Finchley版)-02-构建分布式应用 提到的如下问题: 负载均衡如何考虑?难道得在电影微服务和用户微服务之间加个 ...
- 跟我学Spring Cloud(Finchley版)-04-服务注册与服务发现-原理剖析
为什么80%的码农都做不了架构师?>>> 第2节( 跟我学Spring Cloud(Finchley版)-02-构建分布式应用 )说过: 地址硬编码问题--电影微服务中将用户微 ...
- 跟我学Spring Cloud(Finchley版)-16-Zuul
为什么80%的码农都做不了架构师?>>> 至此,已实现基于Eureka的服务发现,基于Ribbon的负载均衡,Feign也为我们提供了很不错的远程调用能力,使用Hystrix后 ...
- 告诉老默我想学Spring Cloud了(新手篇):从0到1搭建Spring Cloud项目(实际项目开发的浓缩精华版)
告诉老默我想学Spring Cloud了(新手篇):从0到1搭建Spring Cloud项目 一.前言 二.如何选择版本 2.1 SpringCloud 和 Spring Boot 版本选型 2.1. ...
- 一起来学Spring Cloud | 第五章:熔断器 ( Hystrix)
在微服务项目中,一个系统可以分割成很多个不同的服务模块,不同模块之间我们通常需要进行相互调用.springcloud中可以使用RestTemplate+Ribbon和Feign来调用(工作中基本都是使 ...
- Spring Cloud Finchley OpenFeign的重试配置相关的坑
如题,本文基于Spring Cloud Finchley.SR2 OpenFeign的重试 OpenFeign配置重试后,逻辑分析 对比Daltson和Finchley的基本组件,发现Ribbon还有 ...
- Spring Cloud(四) API网关Zuul
前文回顾: Spring Cloud(一)Eureka Server-单体及集群搭建 Spring Cloud(二) 配置Eureka Client Spring Cloud(三) 熔断器Hystri ...
最新文章
- 在ROS使用奥比中光Orbbec Astra Pro
- react router 路由守卫_react实现hash路由
- Page_Load Page_Init方法使用原理(转)
- TypeScript入门-接口
- Andorid之bitmap里面的压缩总结
- 修改eclipse皮肤
- 设计模式学习笔记——观察者(Observer)模式
- 通过lvm方式扩展swap分区
- Windows RDP远程桌面无密码账户
- vxworks系统是用c语言写的吗,VxWorks操作系统基本.doc
- redis 设置密码 和 redis.config文件
- WS2811单线传输三通道LED驱动控制专用芯片
- 守望先锋中的netcode_如何跟踪守望先锋中的化妆品和事件物品
- Android Studio 占C盘空间是什么原因?
- oracle判断不是null,oracle中判断不为null
- 相关性搜索(自然语言处理NLP)相关资料(待更
- kali_上传_腾讯云_搭建kali
- Java操作Excel电子表格
- 嵌入式学习DAY10 --- 封装子函数,GDB调试,gcc编译流程
- Graphics2d消除锯齿整理