Springcloud zuul介绍与使用
每次学习和使用一门新技术的时候,我们都要问自己几个问题,带着问题去思考,才能真正的明白这门技术的使用、优势和缺点。
- zuul是什么?
- zuul有什么好处?
- zuul的原理是什么?
zuul是什么?
zuul是Springcloud体系下的API网关组件,在网关层面我们可以完成统一的服务调用;还能做网关层的过滤,减少无效请求被传到后台;做限流防止服务雪崩;对服务做降级;身份验证;安全防护。
zuul有什么好处?
如果单纯的说zuul的好处未免太空洞了一点,这里我将分析我的某个项目的改造过程来对比得到zuul的好处。
背景:某项目初始架构中,专门用一个服务consumer来接收从nginx过来的请求,这个服务由3名后台人员维护,每个人逐个在consumer上写自己的Controller,在Controller中通过服务调用传递请求到自己负责的微服务中。虽然完成了功能,但是缺点也是很明显。
缺点:
- 多人写一个模块,效率低,程序员之间耦合度高。每次新增微服务接口的同时需要到consumer中再写一遍调用过程,代码冗余度高。
- consumer实质是一个普通的服务,如果想要做过滤、限流、安全验证等功能操作不便。虽然可以在nginx层过滤,但是一些代码层面的过滤比如token验证就无法实现。
经过改造后的项目架构图如下:
改造后的架构具有这样几个特点:
- 使用zuul作为后端的API网关,实现面向服务的路由。也就是说把zuul服务也通过eureka管理,只需要在zuul上维护path和serviceName映射关系就能够自动发现服务并转发服务。
- 由于zuul是面向服务的,所以我们不用再同旧的模式一样在每次新增微服务接口后修改两个地方的代码,zuul会直接帮助我们把请求地址修改为服务的地址而不改变内容。