Zuul路由网关

简介: Zuul路由网关

zuul是什么

7a6eee1955f9ac94ef8fd01a7214a9ca.png

zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用。Zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。zuul的例子可以参考 netflix 在github上的 simple webapp,可以按照netflix 在github wiki 上文档说明来进行使用。

https://github.com/Netflix/zuul/wiki

注意: Zuul服务最终还是会注册到Eureka 提供: 代理 + 路由 + 过滤 三大功能!

a1ee8235580a2e00e95aa80801115a96.png

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

a1c9475bbce83737c2223080f6c67392.png


zuul 能做什么

Zuul可以通过加载动态过滤机制,从而实现以下各项功能(路由、过滤):

  • 验证与安全保障: 识别面向各类资源的验证要求并拒绝那些与要求不符的请求。
  • 审查与监控: 在边缘位置追踪有意义数据及统计结果,从而为我们带来准确的生产状态结论。
  • 动态路由: 以动态方式根据需要将请求路由至不同后端集群处。
  • 压力测试: 逐渐增加指向集群的负载流量,从而计算性能水平。
  • 负载分配: 为每一种负载类型分配对应容量,并弃用超出限定值的请求。
  • 静态响应处理: 在边缘位置直接建立部分响应,从而避免其流入内部集群。
  • 多区域弹性: 跨越AWS区域进行请求路由,旨在实现ELB使用多样化并保证边缘位置与使用者尽可能接近。

过滤器的生命周期

ea9f54bbec822e838932531487c7479f.png

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工程包。

搭建一个注册Eureka中心的Web服务

项目截图

5117db88d98428b9397c117ab95aaef7.png

pom

<?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">
    <parent>
        <artifactId>springcloud</artifactId>
        <groupId>cn.com.codingce</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>springcloud-zuul-9527</artifactId>
    <dependencies>
        <!--Zuul-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--Hystrix依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--Hystrix监控-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--我们需要拿到实体类, 所以要配置api -module-->
        <dependency>
            <groupId>cn.com.codingce</groupId>
            <artifactId>springcloud-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--热部署工具-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--Ribbon-->
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-ribbon -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--Eureka  客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
    </dependencies>
</project>

application.yml配置

server:
  port: 9527
spring:
  application:
    name: springcloud-zuul
eureka:
  client:
    service-url:
      defaultZone: http://eureka7002.com:7002/eureka/, http://eureka7003.com:7003/eureka/, http://eureka7001.com:7001/eureka/   # 这里必须与服务端一致
  instance:
    instance-id: zuul9527.com
    prefer-ip-address: true
# info 配置
info:
  app.name: codingce-springcloud
  cpmany.name: i.codingce.com.cn
  author: xzMhehe
# 路由网关配置  我们需要设置原路径不能访问, 仅可使用Zuul路由网关配置的  路径    (已在 win10 hosts  里面配置 127.0.0.1 www.codingce.com)
zuul:
  routes:
    mydept.serviceId: springcloud-provider-dept
    mydept.path: /mydept/**
  ignored-services: springcloud-provider-dept # 不能在使用这个路径访问了  ignored-services: "*" 隐藏全部的真实的项目
  prefix: /mxz  # 设置公共的前缀       可有可无  原 http://www.codingce.com:9527/mydept/dept/list    加了之后 http://www.codingce.com:9527/mxz/mydept/dept/list

启动项ZuulApplication_9527

package cn.com.codingce.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@SpringBootApplication
@EnableZuulProxy    //一般用代理 @EnableZuulProxy
public class ZuulApplication_9527 {
    public static void main(String[] args) {
        SpringApplication.run(ZuulApplication_9527.class, args);
    }
}

运行界面

服务端

16fe299987c1e6edab9c9f17ceae6475.png

Eureka界面5c10cbb342c06dda3c5cb821e5a4c302.png

置Zuul路由网关后

a7627d665134929fb71a3f16c400bf36.png

项目地址: https://github.com/xzMhehe/codingce-java

目录
相关文章
|
1月前
|
Linux
Linux网关路由配置
Linux网关路由配置
12 0
|
6月前
|
负载均衡 应用服务中间件 API
微服务技术系列教程(25) - SpringCloud- 接口网关服务Zuul
微服务技术系列教程(25) - SpringCloud- 接口网关服务Zuul
60 0
|
11天前
|
监控 网络协议 安全
【亮剑】当设备IP能ping通但无法上网时,可能是DNS解析、网关/路由设置、防火墙限制、网络配置错误或ISP问题
【4月更文挑战第30天】当设备IP能ping通但无法上网时,可能是DNS解析、网关/路由设置、防火墙限制、网络配置错误或ISP问题。解决步骤包括检查网络配置、DNS设置、网关路由、防火墙规则,以及联系ISP。预防措施包括定期备份配置、更新固件、监控网络性能和实施网络安全策略。通过排查和维护,可确保网络稳定和安全。
|
13天前
|
网络协议 算法 安全
【专栏】硬核干货:BGP(边界网关协议)是自治系统间交换路由信息的关键协议,用于大型网络的高效路由选择
【4月更文挑战第28天】BGP(边界网关协议)是自治系统间交换路由信息的关键协议,用于大型网络的高效路由选择。它基于路径向量算法,通过TCP连接建立邻居关系,交换并选择最优路径。BGP支持丰富的路由属性和多种消息类型,允许灵活的路由控制。配置与应用包括启用BGP、配置邻居、路由宣告、过滤及社区属性使用。虽然BGP具备强大路由控制和可扩展性,但其配置复杂,存在安全挑战。理解BGP对于网络管理和优化至关重要。
|
4月前
|
监控 Java API
springcloud5-服务网关zuul及gateway
springcloud5-服务网关zuul及gateway
119 1
springcloud5-服务网关zuul及gateway
|
5月前
|
负载均衡 Java API
|
5月前
|
负载均衡 Java API
SpringCloud - Zuul路由网关使用详解
SpringCloud - Zuul路由网关使用详解
125 0
|
2月前
|
运维 网络协议 安全
长连接网关技术专题(十):百度基于Go的千万级统一长连接服务架构实践
本文将介绍百度基于golang实现的统一长连接服务,从统一长连接功能实现和性能优化等角度,描述了其在设计、开发和维护过程中面临的问题和挑战,并重点介绍了解决相关问题和挑战的方案和实践经验。
108 1
|
5月前
|
负载均衡 Cloud Native Java
【云原生】Spring Cloud Alibaba 之 Gateway 服务网关实战开发
【云原生】Spring Cloud Alibaba 之 Gateway 服务网关实战开发
465 0
|
3月前
|
缓存 安全 API
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
公司对外开放的OpenAPI-Server服务,作为核心内部系统与外部系统之间的重要通讯枢纽,每天处理数百万次的API调用、亿级别的消息推送以及TB/PB级别的数据同步。经过多年流量的持续增长,该服务体系依然稳固可靠,展现出强大的负载能力。
73 9
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现