B084-SpringCloud-Zuul Config

news2024/11/15 8:39:55

目录

      • zuul
        • 系统架构和zuul的作用
        • zuul网关实现
        • 配置映射路径
        • 过滤器
      • Config
        • 概述
        • 云端管理
        • 本地配置

zuul

zuul是分布式和集群后前端统一访问入口

系统架构和zuul的作用

在这里插入图片描述
zuul把自己注册进eureka,然后可通过前端传来的服务名发现和访问对应的服务集群

为了预防zuul单点故障,zuul也要做集群,所以要在前面再加个nginx反向代理,nginx本身也有负载均衡的作用

为了预防nginx单点故障,由keepalived管理,配置主备切换,配置相同的虚拟ip给前端访问

正常开发只需要负责到zuul层,keepalived和nginx由运维搭

zuul网关实现

创建新模块zuul-gateway-2010

导包

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

application.yml

server:
  port: 2010
spring:
  application:
    name: zuul-gateway
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:1010/eureka,http://eureka2:1020/eureka,http://eureka3:1030/eureka
  instance:
    instance-id: zuul:2010
    prefer-ip-address: false

启动类

@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy    //zuul网关的注解
public class ZuulApp {

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

启动eureka集群,生产者和网关,浏览器访问测试:http://localhost:2010/user-provider/user/provider/3

配置映射路径

可隐藏服务名,加前缀
在这里插入图片描述
浏览器访问测试:http://localhost:2010/services/myUser/user/provider/100

过滤器

核心方法,执行流程和使用场景见文档3.4.1,3.4.2,3.4.3
在这里插入图片描述
代码实现

@Component
public class LoginFilter extends ZuulFilter {

    //过滤器类型  pre 前置  routing 路由  post 后置  error 错误
    @Override
    public String filterType() {
        return "pre";
    }

    //执行的顺序  数字越小 越先执行
    @Override
    public int filterOrder() {
        return 0;
    }

    //判断该过滤器是否需要执行
    @Override
    public boolean shouldFilter() {
        return true;
    }

    //业务逻辑  例如登录的token验证
    @Override
    public Object run() throws ZuulException {
        //获取当前请求上下文
        RequestContext context = RequestContext.getCurrentContext();
        //从上下文里面获取请求对象
        HttpServletRequest request = context.getRequest();

        String token = request.getHeader("token");
        if (token==null||"".equals(token.trim())){
            //返回错误的结果
            context.setSendZuulResponse(false);
            //设置响应码
            context.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());
        }
        //不为空,去redis里面查询
        return null;
    }
}

浏览器不带token访问和postman带token访问测试:http://localhost:2010/services/myUser/user/provider/101

zuul自带负载均衡和断路器,配置即可
tips:这里的负载均衡和断路器作用于前端通过zuul访问服务集群,不同于之前的消费者访问生产者集群

zuul:
  retryable: true
ribbon:
  ConnectTimeout: 250 # 连接超时时间(ms)
  ReadTimeout: 2000 # 通信超时时间(ms)
  OkToRetryOnAllOperations: true # 是否对所有操作重试
  MaxAutoRetriesNextServer: 2 # 同一服务不同实例的重试次数
  MaxAutoRetries: 1 # 同一实例的重试次数
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMillisecond: 3000 # 熔断超时时长:3000ms

Config

概述

见文档4.2.1,4.2.2

云端管理

1.Gitee创建仓库
添加文件application-zuul-test.yml,复制配置文件内容到其中,端口2010
添加文件application-zuul-dev.yml,复制配置文件内容到其中,可改动端口为2020做区分

2.新建项目config-server-3010,
导包

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!--配置中心支持-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

配置

server:
  port: 3010
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/ming-feng/config-center.git
          username: 513585429@qq.com
          password: ***********

启动类

@SpringBootApplication
@EnableConfigServer //启用配置服务端
public class ConfigServerApp {

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

启动项目,浏览器访问测试:http://localhost:3010/application-zuul-dev.yml或
http://localhost:3010/application-zuul/test

3.以zuul项目为例,修改配置文件名让原来的配置文件失效
导包

    <!--configclient端-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>

添加配置文件bootstrap.yml
在这里插入图片描述

spring:
  cloud:
    config:
      name: application-zuul #gitee上面名称
      profile: dev #环境
      label: master #分支
      uri: http://127.0.0.1:3010 #配置服务器

启动项目,浏览器可访问测试:http://localhost:2020/services/myUser/user/provider/104

本地配置

克隆gitee项目到本地电脑
configserver项目添加本地文件路径配置

server:
  port: 3010
spring:
  application:
    name: config-server
#  cloud:
#    config:
#      server:
#        git:
#          uri: https://gitee.com/ming-feng/config-center.git
#          username: 513585429@qq.com
#          password: gt513585429
  cloud:
    config:
      server:
        native: #在本地目录搜索
          search-locations: file:D:\\code\\config-center
  profiles:
    active: native

重启configserver
浏览器访问测试:http://localhost:3010/application-zuul-dev.yml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1490130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Raid5阵列数据恢复+Openmediavault配置内网与外网远程访问+服务器到服务器的大量文件转移备份

一、适用场景&#xff1a; 1、OpenMediaVault&#xff0c;是一个开源的&#xff08;免费&#xff09;基于Debian Linux的下一代网络附加存储(NAS)解决方案。 2、易于使用的 WEB 管理界面&#xff1a;OpenMediaVault 的用户界面设计直观&#xff0c;即使是没有 Linux 经验的用户…

FPGA-AXI4接口协议概述

假设我们要传一帧1080P的图片到显示屏显示&#xff0c;那么需要多大的储存空间呢&#xff1f; 一帧1080P的RGB565图像数据需要1920*1080*1633.1776Mb 存储空间 下图是ZYNQ-7000系列中Block RAM的大小&#xff1a; 可以看到最大存储空间的BRAM都不能存储一帧图片&#xff0c;那…

#QT(智能家居界面-布局)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a; 水平布局&#xff0c;垂直布局&#xff0c;栅格布局&#xff08;弹簧&#xff09; 界面自动调整 3.记录 注意弹簧不是拖拽拉长&#xff0c;而是使用栅格布局 运行发现窗口放大缩小可以自动调整 如果想要重新布局&#xff0c;需…

【短时交通流量预测】基于双层BP神经网络

课题名称&#xff1a;基于双层BP神经网络的短时交通流量预测 版本时间&#xff1a;2023-04-27 代码获取方式&#xff1a;QQ&#xff1a;491052175 或者 私聊博主获取 模型简介&#xff1a; 城市交通路网中交通路段上某时刻的交通流量与本路段前几个时段的交通流量有关&…

为什么各品牌主食冻干差价那么大?真正性价比高的主食冻干分享

随着科学养猫知识的普及&#xff0c;主食冻干喂养逐渐受到了许多铲屎官的青睐。然而&#xff0c;也有不少的铲屎官看到主食冻干的价格望而却步。实际上&#xff0c;像我这样的资深铲屎官早已开始主食冻干喂养。虽然主食冻干的价格相对于烘焙粮和膨化粮要高一些&#xff0c;但它…

es6 相关面试题

1 var, let ,const 区别&#xff1f; 2 手写将对象进行合并 手写合并对象 3 普通函数和箭头函数区别&#xff1f; 4 find 和 filter的区别&#xff1f; 5 some和every区别&#xff1f;

OCR 文字识别在未来会有哪些发展趋势?

随着技术的不断进步&#xff0c;OCR&#xff08;光学字符识别&#xff09;文字识别技术也在不断发展。未来&#xff0c;OCR 文字识别技术将会呈现以下几个发展趋势&#xff1a; 一、更高的识别准确率 OCR 技术的核心是识别准确率。随着深度学习等人工智能技术的发展&#xff0c…

测温线夹装置

测温线夹是一种用于测量温度的装置&#xff0c;通常用于电力系统中监测电气设备的温度。它可以安装在电气设备的导线上&#xff0c;通过感应导线的温度来测量电气设备的运行状态。测温线夹通常由金属材料制成&#xff0c;具有耐高温、耐腐蚀等特点&#xff0c;适用于各种恶劣的…

一文读懂Persistence One- 如何将Restaking带入Cosmos

Persistence One正在将Restaking引入Cosmos。用户将能够通过pSTAKE、Stride、Quicksilver和Milkyway将Liquid Staked Tokens&#xff08;如ATOM、TIA、DYDX等&#xff09;存入Persistence One&#xff0c;对其进行Restaking&#xff0c;从而安全地连接更多区块链&#xff0c;首…

苹果电脑专业的Mac垃圾清理工具CleanMyMac X4.14.7

CleanMyMac X是一款专业的Mac清理工具&#xff0c;它具有强大的功能和易用的界面&#xff0c;可以帮助用户快速清理Mac上的无用文件和垃圾&#xff0c;优化系统性能&#xff0c;提升电脑运行速度。 该软件的核心功能包括智能扫描与清理、应用程序管理、隐私保护和系统维护等。…

Python的http模块requests

模块简介&#xff1a; requests 库是一个 python中比较有名的 http请求的库&#xff0c;能处理 get,post,put,delete 等 restful请求&#xff0c;能设置 header&#xff0c;cookie,session 等操作&#xff0c;也是作为爬虫的基础库&#xff0c;它目前还不能异步请求,如果要支持…

Spring循环依赖:原因与解决方法

在Spring框架中&#xff0c;处理循环依赖一直备受关注。这是因为Spring团队在源代码中为了解决这个问题做了大量的处理和优化。同时&#xff0c;循环依赖也是Spring高级面试中的必考问题&#xff0c;对其深入了解可以成为面试中的制胜法宝。本文将详细介绍Spring循环依赖的产生…

【Datawhale组队学习:Sora原理与技术实战】Attention和LLM

Attention Attention 注意力&#xff0c;从两个不同的主体开始。 论文&#xff1a;https://arxiv.org/pdf/1703.03906.pdf seq2seq代码仓&#xff1a;https://github.com/google/seq2seq 计算方法&#xff1a; 加性Attention&#xff0c;如&#xff08;Bahdanau attention&…

备战蓝桥杯---图论应用1

目录 1.增加虚点建图&#xff1a; 2.抽象图的迪杰斯特拉&#xff1a; 3.用bitset优化弗洛伊德&#xff1a; 4.有向图的Prim/kruskal&#xff1a; 1.增加虚点建图&#xff1a; 我们当然可以每一层与上一层的点再连上一条边&#xff0c;但这样子边太多了超内存&#xff0c;我们…

【学习心得】网站运行时间轴(爬虫逆向)

一、网站运行时间轴 掌握网站运行时间轴&#xff0c;有助于我们对“请求参数加密”和“响应数据加密”这两种反爬手段的深入理解。 二、从网站运行的时间轴角度来理解两种反爬手段 1、加载HTML&#xff1a; 这是浏览器访问网站时的第一步&#xff0c;服务器会返回基础…

6.Java---二维数组

打印二维数组的每个元素 上图所示,我们打印的时候将行列的数字写死,但是实际上如果这个数组有很多元素我们还要一个个数数嘛?这不是很占用我们的时间啦!因此引出下文. 代码精进 二维数组的每个元素是一个一维数组 打印二维数组的法2 打印出的格式如下: 不规则的二维数组…

LeetCode每日一题之 复写0

目录 题目介绍&#xff1a; 算法原理&#xff1a; 特殊位置处理&#xff1a; 代码实现&#xff1a; 题目介绍&#xff1a; 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 算法原理&#xff1a; 这种对数组元素进行修改&#xff0c;移动的题目我们仍然可以…

使用Android Native Hook技术解决VLC播放器闪退的问题

文章目录 1.概述2.问题描述3.问题分析4.问题解决5.总结 1.概述 在做公司的一个TOB的需求时&#xff0c;发现调起Unity提供的3D播放器播放网络在线视频时闪退了&#xff0c;然后就拉着相关部门的人一起分析问题&#xff0c;最后定位到是VLC里面用到的系统日志打印函数在部分的系…

《UE5_C++多人TPS完整教程》学习笔记26 ——《P27 在线会话测试(Testing An Online Session)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P27 在线会话测试&#xff08;Testing An Online Session&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xff0…

二分查找是偏爱细节的魔鬼

大家好&#xff0c;我是 方圆。二分查找本质上是一个规模退化且固定规模减小一半的分治算法&#xff0c;它的 思路很简单&#xff0c;但细节是魔鬼。通常我们会认为二分查找的应用场景是数组有序&#xff08;单调&#xff09;&#xff0c;但实际上它也能在无序数组中应用&#…