美文网首页
springcloud-网关路由-zuul

springcloud-网关路由-zuul

作者: 王诗林 | 来源:发表于2020-06-08 14:53 被阅读0次

Zuul简介

Zuul是Netflix开源的微服务网关,它可以和Eureka、Ribbon、Hystrix等组件配合使用。Zuul的核心是一系列的过滤器,这些过滤器帮助我们完成以下功能:

  • 身份认证与安全:识别每个资源的验证要求,并拒绝那些与要求不符的请求;
  • 审查与监控:在边缘位置追踪有意义的数据和统计结果,从而为我们带来精确的生产视图;
  • 动态路由:动态地将请求路由到不同的后端集群;
  • 压力测试:逐渐增加指向集群的流量,以了解性能;
  • 负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求;
  • 静态响应处理:在边缘位置直接建立部分响应,从而避免其转发到内部集群;
  • 多区域弹性:跨越AWS Region进行请求路由,旨在实现ELB(Elastic Load Balancing)使用的多样化;以及让系统的边缘更贴近系统的使用者。

注1:以上介绍来自Zuul官方文档,但其实开源版本的Zuul以上功能一个都没有——开源的Zuul只是几个Jar包而已,以上能力指的应该是Netflix官方自用的Zuul的能力。

注2:Netflix自用的Zuul能力是比较强大的,可使用Groovy编写过滤器,并且可动态加载/卸载、修改规则,而且使用Cassandra作为数据库,然而开源版本这些一个都没有。

注3:Spring Cloud中,Zuul绝大部分功能都是Spring Cloud团队为Zuul开发的。

注4:所以Zuul 2.x的开源进度延后一年,Spring Cloud团队开发了自己的Spring Cloud Gateway,并宣布Spring Cloud不打算支持Zuul 2.x,你还觉得意外吗?

注5:看到这里,很多人可能没有动力学习Zuul了,个人认为还是可以了解一下的,后面讲到Spring Cloud Gateway时,你会发现很多设计理念是相通的。

Spring Cloud对Zuul进行了整合与增强。目前,Zuul使用的默认HTTP客户端是Apache HTTP Client,也可以使用RestClient或者 okhttp3.OkHttpClient 。 如果想要使用RestClient,可以设置 ribbon.restclient.enabled=true ;想要使用 okhttp3.OkHttpClient,可以设置 ribbon.okhttp.enabled=true

创建spring-cloud-zuul模块:

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.example</groupId>
        <artifactId>spring-cloud-wsl</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.example</groupId>
    <artifactId>spring-cloud-zuul</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-cloud-zuul</name>
    <description>Demo project for Spring Cloud Zuul</description>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
</project>

配置文件application.yml:

server:
  port: 8884
spring:
  application:
    name: gateway-zuul
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true
zuul:
  routes:
    consumer-feign: /feign/**

启动类添加注解

@EnableZuulProxy
@SpringBootApplication
public class ZuulApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZuulApplication.class, args);
    }
}

依次启动注册中心、提供者、消费者、网关:


此处我启动了两个provider

浏览器打开输入http://localhost:8884/consumer-feign/feign/test/wangshilin


这是最简单的zuul路由方法,之后我尽量更新更多路由配置规则和fallback等功能演示,敬请期待

相关文章

  • springcloud-网关路由-zuul

    Zuul简介 Zuul是Netflix开源的微服务网关,它可以和Eureka、Ribbon、Hystrix等组件配...

  • Zuul路由网关与过滤器

    技术需求点:1.介绍Zuul网关路由和过滤器两大功能的工作原理;2.模拟Zuul路由网关功能;3.使用Zuul网关...

  • Spring Cloud Zuul网关服务

    内容简介 Zuul网关的功能和工作机制、结合代码介绍如何使用Zuul构建一个简单的网关、介绍Zuul的路由配置方式...

  • SpringCloud 之微服务网关Zuul

    为什么需要使用网关 什么是Zuul Zuul 路由转发 首先创建后台管理服务网关 创建子模块 并加入 依赖 创建 ...

  • Spring Cloud报错之This application

    路由网关(zuul)服务的时候出了This application has no explicit mapping...

  • Zuul 网关路由

    Zuul 网关路由 路由是微服务架构中不可或缺的一部分,例如:/api/user映射到user服务,/api/sh...

  • 路由网关---zuul

    Zuul:Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netf...

  • 路由网关(zuul)

    在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,...

  • zuul路由网关

    功能 请求路由和校验过滤 整合 Zuul 和 Eureka 进行整合,将 Zuul 自身注册为 Eureka 服务...

  • 路由网关Zuul

    本章讲解构建微服务的另一个组件——智能网关组件Zuul。Zuul用于构建边界服务,致力于动态路由、过滤、监控、弹性...

网友评论

      本文标题:springcloud-网关路由-zuul

      本文链接:https://www.haomeiwen.com/subject/uptgzhtx.html