什么是zuul:
服务网关
使用场景:
1.项目中使用Eureka和Ribbon实现了服务端和服务的端的负载均衡,但是要想使用这些得在代码中引用相关得Eureka和Ribbon的jar包。前端界面很显然不能引入jar的。那请求过来怎么负载均衡?很显然加个代理就行,比如用Nginx 。
2.但是前端和后端的交互不需要Nginx复杂的功能,只需要做一个转发功能和一些校验功能。而且Nginx在服务增加和减少时,还得手动改转发的地址,所以还得和Ribbon和Eureka结合使用。这时就诞生了zuul。等于和Nginx 相比,除了有Nginx基本的代理功能外,还能够不用手动配置代理地址这些,因为地址都是从Eureka获取的,负载均衡也是Ribbon来处理的。
本质上可以理解成:做了一个代理,前端http请求过来,通过zuul,zuul做一个代理,请求后端服务。
注意:zuul没有集群、没有主从这些。要想实现zuul的高可以,还得引入其他的插件,比如:Nginx。先把相同zuul部署多份,请求先通过Nginx,让Nginx判断哪个zuul可用,就走哪个zuul
yml文件:
server:
port: 9000
context-path:
spring:
application:
name: zuuldemo
eureka:
client:
service-url:
DEFAULT_ZONE: http://localhost:8761/eureka/
#类似http://xxxx:xx/nn/xxx请求的,都从eureka中获取地址,地址为SHOP-SERVICE的地址
zuul:
routes:
client-a:
path: /nn/**
serviceId: SHOP-SERVICE