Spring Cloud 学习笔记(3)-Zuul网关

Zuul是Netflix开源的微服务网关,可以和Eureka、Ribbon、Hystrix等组件配合使用,Spring Cloud对Zuul进行了整合与增强,Zuul默认使用的HTTP客户端是Apache HTTPClient,也可以使用RestClient或okhttp3.OkHttpClient。 Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/demo/test转发到到demo服务。zuul默认和Ribbon结合实现了负载均衡的功能

工作原理

zuul的核心是一系列的filters, 其作用类比Servlet框架的Filter,或者AOP。zuul把请求路由到用户处理逻辑的过程中,这些filter参与一些过滤处理,比如Authentication,Load Shedding等

在这里插入图片描述
Zuul使用一系列不同类型的过滤器,使我们能够快速灵活地将功能应用于我们的边缘服务。这些过滤器可帮助我们执行以下功能

  • 身份验证和安全性 - 确定每个资源的身份验证要求并拒绝不满足这些要求的请求
  • 洞察和监控 - 在边缘跟踪有意义的数据和统计数据,以便为我们提供准确的生产视图
  • 动态路由 - 根据需要动态地将请求路由到不同的后端群集
  • 压力测试 - 逐渐增加群集的流量以衡量性能。
  • Load Shedding - 为每种类型的请求分配容量并删除超过限制的请求
  • 静态响应处理 - 直接在边缘构建一些响应,而不是将它们转发到内部集群
    在这里插入图片描述

zuul组件

  • zuul-core–zuul核心库,包含编译和执行过滤器的核心功能。
  • zuul-simple-webapp–zuul Web应用程序示例,展示了如何使用zuul-core构建应用程序。
  • zuul-netflix–lib包,将其他NetflixOSS组件添加到Zuul中,例如使用功能区进去路由请求处理。
  • zuul-netflix-webapp–webapp,它将zuul-core和zuul-netflix封装成一个简易的webapp工程包。

以上基础内容转载自:https://www.jianshu.com/p/511db36c1b3e

创建zuul网关

之前的文章我们已经创建了eureka服务、配置中心、商品服务、订单服务。
创建mvn项目
在这里插入图片描述
在这里插入图片描述
引入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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.joery.zuul</groupId>
    <artifactId>joery-zuul</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
    </dependencies>


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

配置yml文件

server:
  port: 8081
spring:
  application:
    name: zuul
# 配置Eureka地址
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8091/eureka
# 构建路由地址
zuul:
  routes:
    # 这里可以自定义
    goods:
      # 匹配的路由规则
      path: /goods/**
      # 路由的目标服务名
      serviceId: app-goods
    order:
      # 匹配的路由规则
      path: /order/**
      # 路由的目标服务名
      serviceId: app-order

management.endpoints.web.exposure.include: '*'

注:引入management.endpoints.web.exposure.include配置是为了查看路由规则,路由规则查看方式为:http://127.0.0.1:8081/actuator/routes

配置启动项

package com.joery.zuul;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

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

启动项目进行测试:
原始项目路径访问:
在这里插入图片描述
通过zuul网关访问
在这里插入图片描述
以上即完成通过zuul网关通一访问后台服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值