zuul 网关的用途_Zuul网关

zuul 网关的用途_Zuul网关Zuul的主要作用:1.路由,进行请求转发。2.鉴权,进行身份认证(安全)。3.限流,限制访问的数量,保证服务器的稳定。除此之外还有以下作用4.负载均衡。5.压力测试。6.监控1.Zuul简单使用1.添加依赖org.springframework.cloudspring-cloud-starter-netflix-zuul2.添加@EnableZuulProxy注解@EnableZuulProx…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Zuul的主要作用:

1.路由,进行请求转发。

2.鉴权,进行身份认证(安全)。

3.限流,限制访问的数量,保证服务器的稳定。

除此之外还有以下作用

4.负载均衡。

5.压力测试。

6.监控

1.Zuul简单使用

1.添加依赖

org.springframework.cloud

spring-cloud-starter-netflix-zuul

2.添加@EnableZuulProxy 注解

@EnableZuulProxy

@SpringBootApplication

@EnableDiscoveryClient

public class GatewayApplication {

public static void main(String[] args) {

SpringApplication.run(GatewayApplication.class,args);

}

}

3.配置路由地址

a.配置写死的地址

zuul:

routes:

user:

path: /user/**

url: http://127.0.0.1:8083

b.结合eureka,动态拉取服务列表,根据服务id找到对应的url。

eureka:

client:

service-url:

defaultZone: http://localhost:8761/eureka

zuul:

routes:

user:

path: /user-service/**

serviceId: user-service

c.简化版配置,routes的key是服务id,值是映射的地址

zuul:

routes:

user-service: /user-service/**

d.Zuul默认为从eureka拉取服务列表中的所有服务配置了key=服务名,值为 /服务名/** 的routes。也就是说即使不做任何配置,也可以匹配服务名进行访问服务。

e.某些服务不需要Zuul的默认配置,做以下配置做过滤。

ignored-services:

– customer-service

f.若想去除路由前缀,可做以下配置。strip-prefix: false

zuul:

routes:

#user-service: /user-service/**

user:

path: /user/**

serviceId: user-service

strip-prefix: false

2.ZuulFilter简介

Zuul最重要的一个功能是实现请求的鉴权,而Zuul实现的方式是通过过滤器,ZuulFilter则是这些过滤器的顶级父类,其中有四个最重要的方法。

//过滤器类型

public abstract String filterType();

//过滤器优先级

public abstract int filterOrder();

//是否启用过滤器

boolean shouldFilter();

//过滤逻辑

Object run() throws ZuulException;

其中,Zuul的过滤器类型主要有四种,也代表着ZuulFilter的生命周期

pre:请求在路由被执行之前

routing:在路由请求时调用

post:在routing和error过滤器之后调用

error:处理请求时发生错误时调用

zuul 网关的用途_Zuul网关

自定义一个过滤器,程式如下

@Component

public class LoginFilter extends ZuulFilter {

//过滤器类型,分为pre(处理请求头,身份验证等),routing(路由转发),post(路由转发后的处理),error(处理请求时发生错误时调用)

@Override

public String filterType() {

return FilterConstants.PRE_TYPE;

}

//优先级

@Override

public int filterOrder() {

return FilterConstants.SERVLET_DETECTION_FILTER_ORDER-1;

}

//是否启动过滤拦截

@Override

public boolean shouldFilter() {

return true;

}

//拦截的逻辑

@Override

public Object run() throws ZuulException {

RequestContext context = RequestContext.getCurrentContext();

HttpServletRequest request =context.getRequest();

String token = request.getParameter(“access-token”);

if (StringUtils.isBlank(token)){

context.setSendZuulResponse(false);

context.setResponseStatusCode(HttpStatus.FORBIDDEN.value());

}

return null;

}

}

3. Zuul的负载均衡和熔断机制

Zuul集成了Ribbon和Hystrix,只需要做简单的配置,就可以实现负载均衡和熔断机制。需要注意的是,hystrix的超时时长要大于RIbbon的超时时长。另外,Zuul中Ribbon的超时时长计算公式如下

ribbonTimeout = (ribbonReadTimeout + ribbonConnectTimeout) * (maxAutoRetries + 1) * (maxAutoRetriesNextServer + 1);

hystrix:

command:

default:

execution:

isolation:

thread:

timeoutInMilliseconds: 6000

ribbon:

ConnectionTimeOut: 500

ReadTimeOut: 2000

4.Zuul的高可用性

Zuul作为微服务,可以启动多台Zuul,自动注册到eureka上,形成集群。通常可搭配Ngnix服务网关来使用,来实现对Zuul集群的负载均衡调用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170617.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月15日 下午10:46
下一篇 2022年8月15日 下午11:00


相关推荐

  • keras自带数据集(横线生成器)

    原文地址:AdetailedexampleofhowtousedatageneratorswithKeras引言在使用kears训练model的时候,一般会将所有的训练数据加载到内存中,然后喂给网络,但当内存有限,且数据量过大时,此方法则不再可用。此博客,将介绍如何在多核(多线程)上实时的生成数据,并立即的送入到模型当中训练。工具为keras。Tu…

    2022年4月15日
    62
  • UID卡、CUID卡、FUID卡、UFUID卡的区别及写入方式

    UID卡、CUID卡、FUID卡、UFUID卡的区别及写入方式UID 卡 国外又称 GEN1 所有区块可被重复读写卡片 ID 可改写且使用后门指令更改 ID 卡片 ID 可重复修改相应后门指令 意味着可被使用后门指令检测是否为克隆卡的机器发现 CUID 卡 国外又称 GEN2 所有区块可被重复读写卡片 ID 可改且使用普通指令更改 IDID 可被重复修改不响应后门指令 意味着不容易被反克隆系统发现 FUID 卡 国外称 GEN2 0 区块可写且仅可写入一次使用普通置

    2026年3月19日
    2
  • mysql b+树优点_基础B

    mysql b+树优点_基础B写在前面大家在面试的时候,肯定都会被问到MySql的知识,以下是面试场景:面试官:对于MySQL,你对他索引原理了解吗?我:了解面试官:MySQL的索引是用什么数据机构的?我:B+树面试官:为什么要用B+树,而不是B树?我:…面试官:用B+树作为MySql的索引结构,用什么好处?我:…B树和B+树是MySQL索引使用的数据结构,对于索引优化和原理理解都非常重要,下面我的写文章就是要把B树,B+树的神秘面纱揭开,让大家在面试的时候碰到这个知识点一往无前,不再成为你的知识盲点!欢迎关注公

    2025年6月3日
    4
  • cuda安装教程+cudnn安装教程

    cuda安装教程+cudnn安装教程cuda9.0+cudnn7.0安装教程 1、下载cuda9.0下载链接:https://developer.nvidia.com/cuda-toolkit-archive 2、安装cuda安装cuda时,第一次会让设置临时解压目录,第二次会让设置安装目录;临时解压路径,建议默认即可,也可以自定义。安装结束后,临时解压文件夹会自动删除;安装目录,建议默认…

    2022年6月8日
    51
  • SQL索引排序[通俗易懂]

    SQL索引排序[通俗易懂]只有聚集索引SQL查询才会按照索引排序

    2022年10月21日
    4
  • mysql通配符使用

    mysql通配符使用mysql通配符使用: w3cchool在mysql查询中,经常会用到通配符,而且mysql的通配符和pgsql是有所不同的,甚至mysql中还可以使用正则表达式。本文就为大家带来mysq

    2022年6月30日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号