IDEA搭建Finchley.SR2版本的SpringCloud父子基础项目-------zuul和SpringConfig

news2024/11/19 13:16:57

1.Zuul是什么

Zuul包含了对请求的路由和过滤两个最主要的功能:
其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础.

Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。

注意:Zuul服务最终还是会注册进Eureka

提供=代理+路由+过滤三大功能

官网地址:https://github.com/Netflix/zuul/wiki/Getting-Started

1.1pom

 
     <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-eureka</artifactId>
   </dependency>
   <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-zuul</artifactId>
   </dependency>

1.2 注解启动类

@EnableZuulProxy
在这里插入图片描述
设置前缀

zuul: 
  prefix: /atguigu
  ignored-services: "*"
  routes: 
    mydept.serviceId: microservicecloud-dept
    mydept.path: /mydept/**

2.SpringConfig是什么

在实际操作中会出现多个微服务操作同一个数据库的情况,那么对于每个微服务都需要重复配置数据库信息,而且当数据库信息改动时也难以维护。因此一套集中的、动态的配置管理设施是必不可少的。
SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。SpringCloud Config 具体分为客户端和服务端两部分。

具体作用:
集中管理配置文件;
不同运行环境不同的配置,动态化地进行配置更新,分环境部署(dev/test/prod/release)
运行期间动态调整配置,不需要在每个服务部署的机器上编写配置文件,配置变动各个微服务能够自动拉取信息

2.1、配置中心服务器端搭建

  • SpringCloud Server使用Git 作为远程的配置文件仓库存储地址,我们需要先在远程建立好仓库
  • 引入pom
        <!-- SpringConfig Server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

  • 修改yml
spring:
  application:
    name: cloud-config-server
  cloud:
    config:
      server:
        git:         #配置远程仓库的地址
          uri: https://gitee.com/loserii/my_-spring-cloud_config.git
          password: xjxhhxjava2048
          username: loserii
          search-paths: xxxxx     #git仓库下相对搜索地址
      label: master  #配置远程分支名


  • 配置完成后启动服务,本地通过HTTP请求访问远程仓库上的配置文件时遵循以下格式的请求资源:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

{label} 作为远程仓库的分支;
{application}-{profile} 作为远程仓库上的配置文件名,比如config-test.yml

  • 此外还可以配置多个存储库,配置相应的匹配规则来读取文件
spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo
          repos:
            simple: https://github.com/simple/config-repo
            special:
              pattern: special*/dev*,*special*/dev*
              uri: https://github.com/special/config-repo
            local:
              pattern: local*
              uri: file:/home/configsvc/config-repo

pattern表示模式匹配,是带有通配符{application}/{profile}名称的逗号分隔列表。如果pattern不匹配任何模式,那么它就会使用spring.cloud.config.server.git.uri下的默认uri。

2.2配置中心客户端搭建

3.1 配置同步机制介绍
客户端通过SpringCloud Config Server来获取到远程的Config环境配置,但是如果想要自己定义一些额外的配置,就需要另外创建一个配置文件。

客户端项目中包含两种配置文件:application.yml(用户级的资源配置项)、bootstrap.yml(系统级的资源配置项,优先级更高)

SpringCloud 会创建一个 Bootstrap Context上下文,该上下文作为 Application Context的父上下文。初始化的时候,Bootstrap Context负责从外部源加载配置属性并且解析配置。这两个上下文共享一个从外部获取的Environment。

  • 什么是Environment?
    Environment用于存储服务器的配置数据,管理此行为的是EnvironmentRepository。Environment是Spring Environment(包括PropertySources作为主要功能)的域的浅层副本。Environment资源由三个变量参数化:

  • {application}映射到客户端的spring.application.name;

  • {profile}映射到客户端上的 spring.profiles.active;

  • {label}标记版本这一组件;

2.2.1 详细配置

客户端从配置服务中心获取配置。

修改 pom.xml、bootstrap.yml

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
spring:
  application:
    name: ConfigCenterClient
  cloud:
    config:
      fail-fast: false     #客户端连接失败时开启重试,需要结合spring-retry、spring-aop
      label: master       #获取配置文件的分支名
      name: config        #获取的文件名
      profile: test       #文件后缀
      uri: http://localhost:3344  #配置中心服务端地址

注意与eureka、cloud相关的配置需要放在bootstrap.yml文件中,程序启动时会先读取bootstrap.yml然后再读取application.yml

分布式下的问题
测试时发现当在远程仓库修改配置文件数据后,本地的SpringCloud Config Server能够在不重启的情况下接收到新配置,但是本机的SpringCloud Config Client就不能直接获取,必须进行重启。这在微服务很多时是不方便处理的。

解决方法: 客户端向外部暴露监控的端点,结合@RefreshScope注解来解决

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

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

相关文章

4款实用的办公软件,每一款都让你效率翻倍,相见不易

称心的电脑使用体验&#xff0c;总离不开实用的工具&#xff0c;一款高效的工具&#xff0c;能让你的办公体验翻倍。 1、Mem Reduct 这是一款强大到离谱的电脑清理工具&#xff0c;比某安全卫士实用多&#xff0c;没有任何弹屏广告&#xff0c;完全免费使用&#xff0c;内存清理…

搜索算法基础

一 DFS 深度优先搜索算法&#xff08;Depth First Search&#xff0c;简称DFS&#xff09;&#xff1a;一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点&#xff0c;尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件&#xff0c;搜…

uboot的烧写及使用

目录 一、uboot概述 Bootloader Bootloader基本功能 常见的Bootloader 二、SD卡启动盘制作 三、uboot的使用 3.1uboot模式 3.2uboot帮助命令 3.3uboot环境变量命令 3.4常用环境变量 3.5网络传输命令 3.6u-boot访问存储器命令 3.7 u-boot自启动环境变量&#xff08…

人工智能趋势——2023 年综述

随着DALLE 2 于 2022 年 4 月的宣布&#xff0c;关于2022 年初第三个 AI 冬天——或 AI 撞墙——的预言过时得很快而且效果不佳&#xff0c;随后出现了更多主要由扩散模型驱动的文本到图像应用程序&#xff0c;这是一个非常多产的领域用于计算机视觉研究及其他领域。AI 的 2022…

SpringCloud五大核心组件

Consul 等&#xff0c;提供了搭建分布式系统及微服务常用的工具&#xff0c;如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等&#xff0c;满足了构建微服务所需的所有解决方案。 服务发现——Netflix Eureka …

六百亿流量、25万出场费,袁树雄身价是《汉川》杨语莲125倍

在文章开始之前&#xff0c;咱们不妨先看两组数据&#xff0c;第一组数据是六百个亿&#xff0c;第二组数据则是二十五万。乍一看并没有什么特别&#xff0c;但是要把这两组数据&#xff0c;和一名音乐人联系起来的话&#xff0c;就会产生非常神奇的效果。 《早安隆回》的创作者…

[oeasy]python0070_ 字体样式_下划线_中划线_闪动效果_反相_取消效果

字体样式 回忆上次内容 m 可以改变字体样式 0-10 之间设置的都是字体效果 0 复原1 变亮2 变暗 从3到10 又是什么效果 呢&#xff1f;&#xff1f;真的可以blink闪烁吗&#xff1f;&#x1f441; 3m 3m 实现斜体字的效果 4m 4m 对应着下划线 控制范围 通过控制字符串的位置…

DNS服务解析与原理笔记

引言DNS介绍DNS原理与解析DNS查询DNS服务搭建DNS劫持和污染计算机面试 or 真题DNS应用扩展参考与推荐引言 我想很多人遇到过这样一种情况&#xff0c;电脑突然上不了网了&#xff0c;或者说可以登陆QQ&#xff0c;但是进不了网页&#xff0c;任何网页都会出现如下的类似截图&a…

Android.mk文件编写

来源&#xff1a;https://www.jianshu.com/p/9aab51f4cd6f 1. Android.mk 介绍 Android.mk 是Android 提供的一种makefile 文件&#xff0c;注意用来编译生成 exe(二进制可执行文件)、so(动态库文件)、a(静态库文件)、jar(jar包) 和 apk 等文件。Android.mk和一个或多个.c的源…

PWN入门程序装载与虚拟内存 小白笔记

1.源代码到执行源代码test.c从磁盘中&#xff0c;通过gcc编译成a.out&#xff08;可执行文件&#xff09;。执行的时候&#xff0c;是将磁盘中的可执行文件&#xff08;a.out&#xff09;映像到内存中。2.节视图和段视图节视图&#xff08;磁盘中的可执行文件&#xff09;不同的…

采用消息中间件实现最终一致性的分布式事务

基于可靠消息服务的方案是通过消息中间件保证上下游应用数据操作的一致性。假设有A和B两个系统&#xff0c;分别可以处理任务A和任务B。此时存在一个业务流程&#xff0c;需要将任务A和任务B在同一个事务中处理。就可以使用消息中间件来实现这种分布式事务。 第一步&#xff…

一篇文章带你了解KendoReact DateRangePicker,让日期选择变得更酷炫!

Kendo UI致力于新的开发&#xff0c;来满足不断变化的需求。现在我们非常自豪地宣布&#xff0c;通过React框架的Kendo UI JavaScript封装来支持React Javascript框架。KendoReact能够为客户提供更好的用户体验&#xff0c;并且能够更快地构建更好的应用程序。理想情况下&#…

python中有哪些运算符,python里的运算符号

大家好&#xff0c;给大家分享一下python中有哪些运算符&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 1、Python中的算术运算符有哪些呢&#xff1f; 1. 比较运算符&#xff1a; 如果比较式成立&#xff0c;返回True&#xff1b;不成立…

[Linux系列]linux bond详解

目录 背景 简介 bond分类 1. mode0(balance-rr) 2. mode1 (active-backup) 3. mode2&#xff08;balance-xor&#xff09; 4. mode3&#xff08;broadcast&#xff09; 5. mode4&#xff08;802.3ad&#xff09; 6. mode5&#xff08;balance-tlb&#xff09;…

STL模拟实现——stack、queue和priority_queue(适配器、仿函数、反向迭代器)

适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总 结)&#xff0c;该种模式是将一个类的接口转换成客户希望的另外一个接口。下列的这些stack、queue和priority_queue以及反向迭代器都是适配器。 stack介绍 1. sta…

数据结构-第八期——树状数组-原理区间和

目录 1、树状数组 2、基本应用 2.1、前缀和&#xff1a;不修改&#xff0c;只查询 2.2、树状数组&#xff1a;动态修改&#xff0c;求区间和 3、实现数组树状 3.1、神奇的lowbit (x)操作 3.2、tree[ ]数组 3.3、基于tree[ ]的计算 3.4 sum[]的计算 3.5、tree[]的更新…

CD3药物研发进展-销售数据-上市药品前景分析

CD3作为近几年的双抗热门靶点之一&#xff0c;目前在全球登记的CD3相关药物就有470个&#xff0c;上市的CD3药物有8款&#xff0c;Ⅰ期临床到Ⅲ期临床有116种&#xff0c;临床前及药物发现达200多种&#xff0c;其火热程度可想而知&#xff0c;笔者为方便大家更加清晰了解CD3在…

ESP-IDF:冒泡排序和选择排序测试代码

ESP-IDF:冒泡排序和选择排序测试代码 /冒泡排序/ void printarry16 (int arr[],int length) { for(int i0;i<length;i) { cout<<arr[i]<<" “; } cout<<endl; } void test16() { int arr[] {9, 8, 7, 6, 5, 4, 3, 2, 1, 0,9, 8, 7, 6, 5, 4, 3, 2…

【笔记】容器基础-容器与虚拟机

杂记&#xff1a; 容器技术的兴起源于 PaaS 技术的普及Docker 公司发布的 Docker 项目具有里程碑式的意义Docker 项目通过“容器镜像”&#xff0c;解决了应用打包这个根本性难题容器本身没有价值&#xff0c;有价值的是“容器编排”进程&#xff1a; 静态表现&#xff1a;程序…

Java NIO同步非阻塞编程原理解析及案例

Java NIO同步非阻塞编程原理解析及案例 文章目录Java NIO同步非阻塞编程原理解析及案例NIO介绍NIO和 BIO的比较NIO 三大核心原理示意图缓冲区(Buffer)基本介绍Buffer常用API介绍Buffer 类及其子类缓冲区对象创建缓冲区对象添加数据缓冲区对象读取数据通道(Channel)基本介绍Chan…