本文主要介绍zuul的基本原理和在sprngcloud服务下如何使用

一、简单介绍

Zuul 是 Netflix OSS 中的一员,是一个基于 JVM 路由和服务端的负载均衡器。提供路由、监控、弹性、安全等方面的服务框架。Zuul 能够与 Eureka、Ribbon、Hystrix 等组件配合使用。

Zuul 的核心是过滤器,通过这些过滤器我们可以扩展出很多功能,比如:

1)动态路由

动态地将客户端的请求路由到后端不同的服务,做一些逻辑处理,比如聚合多个服务的数据返回。

2)请求监控

可以对整个系统的请求进行监控,记录详细的请求响应日志,可以实时统计出当前系统的访问量以及监控状态。

3)认证鉴权

对每一个访问的请求做认证,拒绝非法请求,保护好后端的服务。

4)压力测试

压力测试是一项很重要的工作,像一些电商公司需要模拟更多真实的用户并发量来保证重大活动时系统的稳定。通过 Zuul 可以动态地将请求转发到后端服务的集群中,还可以识别测试流量和真实流量,从而做一些特殊处理。

5)灰度发布

灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

二、使用Zuul构建微服务网关——路由配置

首先,基于前几篇springcloud搭建的基础之上,这里借助了已经注册进eureka中心的web服务study-web,端口是8002,已添加了一个方法

1、创建一个新的maven项目,这里命名为study-zuul,选中zuul

 2、导入依赖

 3、添加配置文件,使用Eureka负载路由

注:如果不想依赖于eureka使用zuul,那么可以使用 zuul.routes.study-web.url=http://localhost:8002/

 4、启动类上添加注解 @EnableZuulProxy和@EnableEurekaClient

5、启动eureka中心,study-web,study-zuul,访问http://localhost:8005/study-web/hello,结果显示:

三、Zuul容错机制超时重试

容错,简单来说就是当某个服务不可用时,能够切换到其他可用的服务上去,也就是需要有重试机制。在 Zuul 中开启重试机制需要依赖 spring-retry。

1、Spring-cloud中的zuul网关重试机制是使用spring-retry实现的,需要在pom.xml中添加spring-retry

2、配置文件

3、在zuul中可配置的超时时间有两个位置,ribbon和hystrix,hystrix配置如下:

4、启动eureka中心、study-zuul,study-web,study-ms,study-toms,访问http://localhost:8005/study-web/test,ribbon负载两个服务器

刷新时轮询显示

停掉一个服务器8004之后多次刷新显示:

总结:没加重试机制之前,当你请求接口的时候肯定有一次是会被转发到停掉的服务上去的,返回的是异常信息。
当我们加入了重试机制后,你可以循环请求接口,这个时候不会返回异常信息,因为 Ribbon 会根据重试配置进行重试,当请求失败后会将请求重新转发到可用的服务上去。

最新文章

  1. Hammer.js分析(三)——input.js
  2. JQuery实现table分页
  3. Android 实现页面的延时跳转
  4. Apache Rewrite 拟静态配置
  5. 后台返回JSON关于日期的格式化
  6. mac安装chromedriver报错
  7. cocos2d-x之场景转换特效
  8. DELL R710服务器做RAID5磁盘阵列图文教程
  9. 反射机制及开源框架xUitls的使用,使用HttpUtils通过断点续传下载文件
  10. PHP图片上传程序(完整版)
  11. Google邮箱:Gmail国际顶级邮箱
  12. CodeForces Round #173 (282E) - Sausage Maximization 字典树
  13. JQuery:以name为条件查找
  14. 基于封装通用的EF CRUD 的操作
  15. nginx + tomcat实现负载均衡
  16. $HOME
  17. JavaOOP笔记
  18. 【数据结构】算法 LinkList (Add Two Numbers)
  19. react+umi+dva+antd中dva的数据流图解
  20. 一、VScode构建.NET应用程序

热门文章

  1. Elasticsearch Rest模式和RPC模式性能比较
  2. Redhat6更改yum源 (转)
  3. 老版本loadrunner 打开侧边栏
  4. 吴裕雄--天生自然 python开发学习:在Cenos 7 系统上安装配置python3.6.5
  5. cs231n spring 2017 lecture16 Adversarial Examples and Adversarial Training
  6. Java过滤器Filter的原理及配置_学习笔记
  7. CPU|MICGPU|FPGA|超算|Meta-data|
  8. CentOS7下MySQL5.7的安装-RPM方式
  9. JS做深度学习1——偶然发现与入门
  10. 将js进行到底:node学习5