5_spring-cloud-zuul-网关

2023-11-17


网关, 链路追踪

  • Zuul;
  • Sleuth;
  • https://start/aliyun.com
  • Zuul是Netflix开源的微服务网关,核心是一系列过滤器;
  • zuul默认集成了ribbon和hystrix;
  • 路由请求
  • 权限认证

Zuul

  • 新建项目,引入依赖:需要使用 eureka-client-获取注册信息
<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>
  • 完整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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.go.cn</groupId>
    <artifactId>zuul-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>zuul-server</name>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <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>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
  • @EnableZuulProxy
  • 配置文件修改:
server:
  port: 80
spring:
  application:
    name: zuul-server

eureka:
  client:
    service-url:
      defaultZone: http://euk1.com:7000/eureka/

  • curl: 端口/服务名/uri;

zuul 原理

  • 隧道模式; 代理模式;
  • 拒绝策略前置; 卫语句;
  • 网关会将服务名转换成具体服务的ip和端口;

负载均衡设置

  • 默认负载策略为轮询策略;
  • 负载均衡配置文件调整:根据服务名调整:
provider:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule  # 使用随机策略

配置指定服务的路由

  • 相当于一个别名,之前使用的 /服务名/** 依旧可用来访问;
zuul:
  routes:
    consumer: /consumer-api/**
    # 或者
    # serviceId: consumer
    # path: /consumer-api/**

重定向:

  • 相当于给任意路径指定路由;相当于一个映射;
  • 此配置的优先级于服务名,也就是说指定的 url如果和服务同名会调用具体服务;不会走指定的url;
zuul:
  routes:
    xx:
      path: /xx/**
      url: http://www.baidu.com
    search:
      path: /search/**
      url: http://www.baidu.com    

忽略服务,禁止直接请求

  • 直接从网关请求会报404,但是 consumer 还是可以调用;
zuul:
  ignored-services: provider

前缀配置

  • 前缀,当请求匹配前缀时会进行代理;
  • 前缀配置会应用到所有路径;包括 注册的服务,也包括上面重定向中自定义的 url 路径;
zuul:
  prefix: /api/v1
  # 是否带上前缀请求,代理前缀默认会从请求路径中移除,通过该设置关闭移除功能,
  # 默认为 true-不带前缀
  # false-带前缀相当于被代理项目要有这个前缀
  strip-prefix: false  

暴露路由端点

  • 添加依赖:默认已经集成了actuator

  • 配置文件调整:暴露端点;

management:
  endpoint:
    health:
      enabled: true
      show-details: always
    routes:
      enabled: true
  endpoints:
    web:
      exposure:
        include: '*'
  • curl http://localhost/actuator/routes: 可以查看路由的映射结果;例如上边 前缀配置的生效范围就可以使用此路径进行查看:

  • {
        "/api/v1/consumer-api/**":"consumer",
        "/api/v1/xx/**":"http://www.baidu.com",
        "/api/v1/search/**":"http://www.baidu.com",
        "/api/v1/provider/**":"provider",
        "/api/v1/consumer/**":"consumer"
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

5_spring-cloud-zuul-网关 的相关文章

随机推荐

  • OpenVSwitch简介

    本文主要介绍Open VSwitch 虚拟交换机的概述内容 阅读本文可以对OVS Open VSwitch 有一个大致的了解 那么本文主要回答了这样几个问题 1 虚拟交换机是什么 干什么 2 虚拟网络和OVS 3 OVS的组件有哪些 4 使
  • 华为OD德科面试+机试记录

    一 机试 6 25 三道编程题 难度偏中 由于时间久远 只记得其中两道题目 1 找车位 动态规划 2 题目不记得了 后面如果找到会补充 双指针 3 高效的任务规划 动态规划 第一题和第二题是做出来了 第三题做出来一点点 当时时间不够 没想出
  • ATT&CK - 入门

    20200922 0 引言 这篇文章记录ATT CK的一些材料阅读 不过题目没有非常明确 因为这部分仅仅是记录了一篇文章 不过这篇文章是一系列文章的第一小节 大题目就是Getting Started的部分 所以 这篇文章就命名为入门 1 A
  • matlab运行代码计时

    tic 此处写的是你自己的代码 times toc disp times
  • 链表查重(递归实现)

    链表查重 递归实现 最开始想到的递归方法 初步估计效率不会太高 但是代码比较容易理解 思路 现在有一个无序的链表 在不清楚元素个数的情况下 无法常规的迭代实现查重 迭代也可以做 且效率较高 我首先想到是否可用递归实现 递归的思路是 从表头元
  • 对数损失和交叉熵损失

    从上述的表达式中看 两者的损失函数本质是一样的 但是这里需要注意的是通常情况下 这两种损失函数所对应的上一层结构不同 log loss经常对应的是Sigmoid函数的输出 用于二分类问题 而cross entropy loss经常对应的是S
  • Linux c获取任意路径的硬盘使用情况

    没有什么好说的 其实就是获取硬盘的statfs信息结构 代码如下 include
  • 利用opencv检测移动的物体----mog2()

    检测移动的物体 opencv具有一个函数是mog2 参考链接 https www jb51 net article 143527 htm
  • ​TinyLlama-1.1B:从零开始训练一个精悍的语言模型

    PaperWeekly 原创 作者 StatNLP 单位 新加坡科技设计大学 TinyLlama 项目旨在在 3 万亿 tokens 上进行预训练 构建一个拥有 11 亿参数的 Llama 模型 经过精心优化 我们 仅 需 16 块 A10
  • java-性能&故障分析工具

    java 性能 故障分析工具 突然想起了 对HR小姐姐的承诺 你要是问我是不是为了福利 我是打死不会承认的 我们公司的技术栈以java居多 那就介绍一下之前自己写的一个性能 故障分析工具吧 也希望能对公司的java开发者有一点点帮助吧 居然
  • makefile是如何自动生成的

    GNU make允许将一个软件项目的代码分开放在不同的源文件里 有改动的时候可以只对改动的文件重新编译 然后重新连接 这种编译管理方法提高了生成目标的效率 make要调用一个makefile文件来实现 Makefile的编写是使用make的
  • 微信html5活动页面制作,完整的微信H5活动页面设计规范

    微信火了H5的专题页面设计也越来越多了 经常有朋友问H5专题设计按什么尺寸来做 有没有统一的规范 这里就给大家分享一套非常完整的关于微信H5活动页面设计的UI视觉设计规范教程 希望对那些刚刚从事微信H5界面设计的小伙伴们提供一些帮助 微信H
  • Caddy2学习笔记——Caddy2反向代理docker版本的DERP中继服务器

    一 个人环境概述 本人拥有一个国内云服务商的云主机和一个备案好的域名 通过caddy2来作为web服务器 我的云主机系统是Ubuntu 我的云主机是公网ip 地址为 43 126 100 78 我备案好的域名是 hotgirl com 后面
  • the “scope“ attribute for scoped slots have been deprecated and replaced by “slot-scope“ since 2.5

    在 VSCode 中运行 Vue 关于作用域插槽时的问题 报出警告 Module Warning from node modules vue vue loader v15 lib loaders templateLoader js Emit
  • (支付宝支付)Spring实现一个项目配置多个信息、付款给对应商户

    如何实现一个项目配置多个商户信息付款给对应商户 最近在对接支付宝支付时 遇到了一个问题 用户在付款时 需要直接付款到指定支付宝账户 这个需求也无可厚非 就像我们公司有四个分公司 分别在北京 上海等地 如果钱只能到总公司的账户上 那在财务结算
  • linux c do while循环,C语言do-while循环

    要执行程序或代码的一部分几次或多次 我们可以使用C语言的do while循环 在do和while之间给出的代码将被执行 直到条件 condition 成为true 在do while循环中 语句在条件之前给出 所以语句或代码将至少有一次执行
  • Wav2lip-GAN 环境配置

    首先使用 conda 创建新的虚拟环境 然后激活这个环境 conda create n myenv python 3 8 activate myenv 使用 git 克隆代码 或者直接下载源码压缩包解压 安装依赖 我使用的豆瓣源 git c
  • 热部署,未测试

    package agent import java lang instrument Instrumentation import java lang instrument UnmodifiableClassException import
  • 在子类的override方法中调用父类的父类的未被重写的方法

    今天做一个自定义控件 扩展TableLayoutPanel这个控件加一些自己的属性 重写OnPaintBackground这个虚方法 控件的继承关系是这样的 Control ScrollableControl Panel TableLayo
  • 5_spring-cloud-zuul-网关

    文章目录 网关 链路追踪 Zuul zuul 原理 负载均衡设置 配置指定服务的路由 重定向 忽略服务 禁止直接请求 前缀配置 暴露路由端点 网关 链路追踪 Zuul Sleuth https start aliyun com Zuul是N