zul的主要作用是:
1 .路由并转发请求。
2 )进行认证,身份证明(安全)。
3 .限制流量,限制访问量,保证服务器的稳定。
除此之外,还有以下作用
4 .负载均衡。
5 .压力测试。
6 .监测
1.Zuul简单使用
1 .添加依存关系
org.springframework.cloud
spring-cloud-starter-Netflix-zuul
2 .添加2.@enablezulproxy注释
@EnableZuulProxy
@SpringBootApplication
@EnableDiscoveryClient
公共类网关应用程序{
publicstaticvoidmain (字符串[ ] args ) {
spring application.run (gateway application.class,args );
}
}
3 .设置路由地址
a .安置死亡住所
zuul:
routes:
user:
path: /user/**
URL :http://127.0.0.1:8083
结合eureka,动态引出服务列表,基于服务id找到对应的url。
eureka:
客户端:
服务-URL:
default zone :http://localhost :8761/eureka
zuul:
routes:
user:
path : /用户服务/* *
服务id :用户服务
c .简化版的配置,routes的key是服务id,值是映射的地址
zuul:
routes:
用户服务: /用户服务/* *
默认情况下,d.Zuul将key=服务名称、/服务名称/**的routes配置为从eureka中抽取服务列表中的所有服务。 这意味着无需进行任何配置,就可以通过匹配服务名称来访问服务。
e .某些服务不需要Zuul的默认配置。 执行以下配置进行过滤:
已注册服务:
-自定义-服务
f .要删除路由前缀,请执行以下配置: strip-prefix :假
zuul:
routes:
# user-service : /用户- service/* *
user:
path: /user/**
服务id :用户服务
strip-prefix :假
2.ZuulFilter介绍
zul最重要的功能之一是实现请求的身份验证,Zuul是通过过滤器实现的,ZuulFilter是这些过滤器的顶级类,其中最重要的方法有四种。
//过滤器类型
公共字符串过滤器类型(;
//过滤器优先级
公共适配器过滤器顺序(;
//是否启用过滤器
布尔解决方案过滤器(;
//滤波逻辑
对象运行() throws ZuulException;
其中,Zuul的过滤器类型主要有4种,表示ZuulFilter的生命周期
pre :请求在路由执行之前
路由:在路由请求时调用
post :在routing和error筛选器之后调用
error :在处理请求时发生错误时调用
自定义过滤器。 程序如下
@Component
publicclassloginfilterextendszulfilter {
//过滤器类型分为pre (请求报头处理、身份验证等)、routing )、post )、error ) (在处理请求过程中发生错误时调用)
@Override
公共字符串过滤器类型
return FilterConstants.PRE_TYPE;
}
//优先级
@Override
公共过滤器订单
returnfilterconstants.servlet _ detection _ filter _ order-1;
}
//是否启动过滤阻止程序
@Override
公共布尔型过滤器
返回真;
}
//监听逻辑
@Override
公共对象运行() throws ZuulException { )。
requestcontextcontext=request context.getcurrentcontext (
http servlet request request=context.getrequest (;
string token=request.getparameter (access-token );
string utils.is blank (token ) }
context.setsendzulresponse (false;
context.setresponsestatuscode (http status.forbidden.value ) );
}
返回空值;
}
}
3. Zuul的负载均衡和熔断机制
Zul集成了Ribbon和Hystrix,只需简单的结构,就可以实现负载均衡和熔断机制。 需要注意的是,hystrix的超时时间比RIbbon的超时时间长。 另外,Zuul中Ribbon的超时时间的计算公式如下
ribbon time out=(ribbonreadtimeoutribbonconnecttimeout (* ) * (maxAutoRetries 1) ) * (maxAutoRetriesNextServer 1);
hystrix:
command:
默认:
执行:
isolation:
thread:
timeoutInMilliseconds: 6000
ribbon:
连接时间输出: 500
读时间输出: 2000
4.Zuul的高可用性
zul作为微服务器,可以启动多台Zuul,自动注册eureka,形成集群。 通常可以与Ngnix服务网关结合使用,以实现对Zuul群集的负载平衡调用。