• SpringCloud的分布式配置及消息总线


    1.在搭建分布式配置时,我们大概看下分布式配置的流程 如图所示:

    当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现微服务中的所有系统的配置文件的统一管理,而且还可以实现当配置文件发生变化的时候,系统会自动更新获取新的配置。目前目前springCloud仅支持RabbitMQ和Kafka ,我采用的市RabbitMQ搭建

    2.搭建git地址

    在流程中 首先我们应该在git或者码云上创建一个文件夹来专门获取配置 如图所示:

    我的git地址:https://gitee.com/zcggit/study/,其中config专门来放置远程读取的配置信息

    3.搭建RabbitMq

    安装RabbitMq前需要安装erlang  

      无脑下一步即可

    4.创建Eureka注册中心

    pom.xml引用

    5.搭建Config-Server

    (1) 引用Maven依赖

    <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">
    <modelVersion>4.0.0</modelVersion>
    <groupId>zcg.springcloud.com</groupId>
    <artifactId>springcloud-configServer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.2.RELEASE</version>
    </parent>

    <dependencyManagement>
    <dependencies>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-bus-parent</artifactId>
    <version>2.0.0.RC2</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    </dependencies>
    </dependencyManagement>

    <dependencies>
    <!-- SpringBoot整合Web组件 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--spring-cloud 整合 config-server -->
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
    <version>2.0.2.RELEASE</version>
    </dependency>

    <!-- SpringBoot整合eureka客户端 -->
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>2.0.2.RELEASE</version>
    </dependency>

    <!--核心jar包 -->
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>
    <!-- actuator监控中心 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    </dependencies>
    <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
    <repositories>
    <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/libs-milestone</url>
    <snapshots>
    <enabled>false</enabled>
    </snapshots>
    </repository>
    </repositories>

    </project>

    (2).引用application.yml配置信息###服务注册到eureka地址

    其中

    cloud:
    config:
    server:
    git:
    ###git环境地址
    uri: https://gitee.com/zcggit/study.git   代表git的地址
    force-pull: true     代表强制从git上强制拉取覆盖本地  我找这个错就找了一下午

     

    ####搜索目录
    search-paths:- config     git上的搜索路径
    label: master  从git的主干上读取

    (3)。建立启动类

    读取配置文件http://127.0.0.1:8763/configclient-dev.yml,如果能够访问成功,证明搭建成功 如图所示:

    6.搭建Config-Client

    (1)引用Maven依赖

    <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">
    <modelVersion>4.0.0</modelVersion>
    <groupId>zcg.springcloud.com</groupId>
    <artifactId>springcloud-configClient</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
    </parent>

    <dependencyManagement>
    <dependencies>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-bus-parent</artifactId>
    <version>2.0.0.RC2</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    </dependencies>
    </dependencyManagement>
    <dependencies>

    <!-- SpringBoot整合Web组件 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
    <version>2.0.2.RELEASE</version>
    </dependency>
    <!-- SpringBoot整合eureka客户端 -->
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>2.0.2.RELEASE</version>
    </dependency>
    <!--核心jar包 -->
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>
    <!-- actuator监控中心 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    </dependencies>
    <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
    <repositories>
    <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/libs-milestone</url>
    <snapshots>
    <enabled>false</enabled>
    </snapshots>
    </repository>
    </repositories>



    </project>

    (2)bootstrap.yml配置代码

     

    这里客户端的配置名为bootstrap.yml  这里有坑  因为Springboot在Spring启动前就bootstrap.yml,然后再加载application.yml文件

    (3)编写config-Client的类

    其中@RefreshScope代表  如果代码中需要动态刷新配置,在需要的类上加上该注解就行

    搭建完成  访问http://localhost:8882/getUserName  就可以读取配置上的文件 如图所示:

    当修改git上的配置文件时,使用postman请求http://127.0.0.1:8882/actuator/bus-refresh  即可将所有的configClient的相关配置修改,重新访问即可得到配置文件的最新配置 如图所示:

    如果有疑问,请加我QQ:1051980588  一起探讨学习。我会把所有代码上传到gt上  自行下载 看看

  • 相关阅读:
    EF fluent API如何配置主键不自动增长
    简单的自定义Session
    使用NPOI,完成数据的导入导出
    c#索引器
    MUI框架 picker日期选择器实例
    使用MUI框架,模拟手机端的下拉刷新,上拉加载操作。
    Newtonsoft.Json
    NetMQ:.NET轻量级消息队列
    C#之RabbitMQ系列(一)
    C# 核心语法-反射(反射类型、方法、构造函数、属性,实现可配置可扩展,完成数据库访问类反射封装)
  • 原文地址:https://www.cnblogs.com/zcg1051980588/p/9978606.html
Copyright © 2020-2023  润新知