B084-SpringCloud-Zuul Config

目录

      • 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/eurekainstance:instance-id: zuul:2010prefer-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 错误@Overridepublic String filterType() {return "pre";}//执行的顺序  数字越小 越先执行@Overridepublic int filterOrder() {return 0;}//判断该过滤器是否需要执行@Overridepublic boolean shouldFilter() {return true;}//业务逻辑  例如登录的token验证@Overridepublic 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-servercloud:config:server:git:uri: https://gitee.com/ming-feng/config-center.gitusername: 513585429@qq.compassword: ***********

启动类

@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: gt513585429cloud:config:server:native: #在本地目录搜索search-locations: file:D:\\code\\config-centerprofiles:active: native

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++:Vector的模拟实现

创作不易&#xff0c;感谢三连 &#xff01;&#xff01; 一&#xff0c;前言 在学习string类的时候&#xff0c;我们可能会发现遍历的话下标访问特别香&#xff0c;比迭代器用的舒服&#xff0c;但是下标其实只能是支持连续的空间&#xff0c;他的使用是非常具有局限性的&am…

Fisher矩阵与自然梯度法

文章目录 Fisher矩阵及自然梯度法Fisher矩阵自然梯度法总结参考链接 Fisher矩阵及自然梯度法 自然梯度法相比传统的梯度下降法具有以下优势&#xff1a; 更好的适应性&#xff1a;自然梯度法通过引入黎曼流形上的梯度概念&#xff0c;能够更好地适应参数空间的几何结构。这使…

如何本地安装gemma

目录 通过ollama开源软件来一键安装目前主流的大模型&#xff0c;支持的开源模型包括以下内容&#xff1a; https://github.com/ollama/ollama

基于pytorch的手写体识别

一、环境搭建 链接: python与深度学习——基础环境搭建 二、数据集准备 本次实验用的是MINIST数据集&#xff0c;利用MINIST数据集进行卷积神经网络的学习&#xff0c;就类似于学习单片机的点灯实验&#xff0c;学习一门机器语言输出hello world。MINIST数据集&#xff0c;可以…

【树】【异或】【深度优先】【DFS时间戳】2322. 从树中删除边的最小分数

作者推荐 【二分查找】【C算法】378. 有序矩阵中第 K 小的元素 涉及知识点 树 异或 DFS时间戳 LeetCode2322. 从树中删除边的最小分数 存在一棵无向连通树&#xff0c;树中有编号从 0 到 n - 1 的 n 个节点&#xff0c; 以及 n - 1 条边。 给你一个下标从 0 开始的整数数组…

京东商品优惠券API获取商品到手价

item_get_app-获得JD商品详情原数据 公共参数 请求地址: jd/item_get_app 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,i…

(十五)【Jmeter】取样器(Sampler)之HTTP请求

简述 操作路径如下: HTTP请求 (HTTP Sampler): 作用:模拟发送HTTP请求并获取响应。配置:设置URL、请求方法、请求参数等参数。使用场景:测试Web应用程序的HTTP接口性能。优点:支持多种HTTP方法和请求参数,适用于大多数Web应用程序测试。缺点:功能较为基础,对于复杂…

鸿蒙实战应用开发:【拨打电话】功能

概述 本示例通过输入电话&#xff0c;进行电话拨打&#xff0c;及电话相关信息的显示。 样例展示 涉及OpenHarmony技术特性 网络通信 基础信息 拨打电话 介绍 本示例使用call相关接口实现了拨打电话并显示电话相关信息的功能 效果预览 使用说明 1.输入电话号码后&#…

11. Nginx进阶-HTTPS

简介 基本概述 SSL SSL是安全套接层。 主要用于认证用户和服务器&#xff0c;确保数据发送到正确的客户机和服务器上。 SSL可以加密数据&#xff0c;防止数据中途被窃取。 SSL也可以维护数据的完整性&#xff0c;确保数据在传输过程中不被改变。 HTTPS HTTPS就是基于SSL来…

#QT(串口助手-界面)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a;编写串口助手 3.记录 接收框:Plain Text Edit 属性选择&#xff1a;Combo Box 发送框:Line Edit 广告&#xff1a;Group Box &#xff08;1&#xff09;仿照现有串口助手设计UI界面 &#xff08;2&#xff09;此时串口助手大…

C#插入排序算法

插入排序实现原理 插入排序算法是一种简单、直观的排序算法&#xff0c;其原理是将一个待排序的元素逐个地插入到已经排好序的部分中。 具体实现步骤如下 首先咱们假设数组长度为n&#xff0c;从第二个元素开始&#xff0c;将当前元素存储在临时变量temp中。 从当前元素的前一…

Windows环境MySQL全量备份+增量备份

目录 一、环境准备 1.1.安装MySQL 1.2.添加log-bin日志配置 二、创建测试数据库和表 2.1.创建测试数据库 2.2.创建测试数据表 三、全量备份恢复数据库 3.1.全量备份数据库 3.2全量恢复数据库 四、增量备份恢复数据库 4.1.增量备份数据库 4.2.增量恢复数据库 五、…