Spring Cloud全解析:网关之zuul简介



zuul简介

zuul是Netflix开源的微服务网关,包含了对请求的路由和过滤两个主要的功能

  • 路由,负责将外部请求转发到具体的微服务实例上,实现外部访问统一入口的基础
  • 过滤,负责对请求的过程进行干预,实现请求校验、服务聚合等功能

将zuul注册到注册中心中,同时从注册中心中获取其他微服务的消息,之后访问其他微服务都是通过zuul进行跳转的

zuul的性能一般,采用了同步编程模型,对于IO密集型的服务如果处理时间过长会导致将servlet的线程池占满

其核心是一系列过滤器,这些过滤器可以完成很多功能,如

  • 身份认证与安全,识别每个资源的验证要求
  • 审查与监控,在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图
  • 动态路由,动态的将请求路由到不同的后端集群
  • 负载均衡,为每一种负载均衡分配对应容量,并弃用超过限定值的请求
  • 静态响应处理,在边缘位置直接建立部分响应,从而避免其转发到内部集群

特性

  • 基于阻塞IO的API网关
  • 基于Servlet2.5,不支持长连接,每次IO操作都是从工作线程中选择一个执行,请求线程被阻塞直到工作线程完成

依赖

<!-- zuul路由网关 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>

如果是F版及以上的话,需要使用该依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>

启动类配置

@SpringBootApplication
@EnableEurekaClient  // 服务启动后注册到Eureka Server注册中心中
@EnableZuulProxy  // 启用zuul
public class ProviderApp {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApp.class,args);
    }
}

就可以直接通过网关来路由到其他微服务了

默认情况下 http://zuul网关的ip:zuul网关的端口/所要访问的微服务名/对应微服务中的uri

自定义路由规则

# zuul网关配置
zuul:
  retryable: false #关闭重试机制
  sensitive-headers:    #针对所有服务,设置敏感头信息
  routes:
    deptService: # 路由规则名称
    	serviceId: micro-service-dept-provider # 微服务名,会将该路径下的接口路由到该微服务下,如果不是微服务,可以配置url直接路由到指定地址
    	path: /deptService/** #匹配的路径
    	sensitive-headers:    #针对单个服务,敏感头信息,默认是Cookie, Set-Cookie, Authorization,如果此处不填的话,便是取消敏感头信息,使得cookie可以传递
  ignored-services: micro-service-dept-provider #忽略原始使用微服务名就可以访问的路由规则,如果是所有的微服务都忽略,则使用"*",配置之后使用微服务名称就不可以访问到微服务了,需要使用配置的映射路径才可以访问到
  ignored-patterns:
  	- /userService/userEdit  # 该地址不进行匹配
  	- /orderService/** # 使用通配符匹配,去掉orderService下的所有接口
  prefix: /demo  # 公共前缀,访问时需要在访问uri之前加上统一的前缀

此时访问的话

http://localhost:9527/demo/deptService/dept/get/1

其开启了routes端点,可以访问/routes来看到配置的微服务映射

其默认使用的HTTP客户端是Apache HTTP Client,如果想使用其他httpClient可以进行如下配置

# 如果使用RestClient则配置
ribbon.restclient.enabled=true  
# 如果使用okHttpClient则配置
ribbon.okhttp.enabled=true

参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾光师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值