我是靠谱客的博主 调皮荔枝,最近开发中收集的这篇文章主要介绍尚硅谷SpringCloud2020简单学习记录(个人用)74-77集,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

学到现在模块很多了,配置非常麻烦。未来真正项目模块更多,所以需要一个配置中心进行配置。

还有生产环境,测试环境,发布版本等,都需要进行配置

所以需要一个集中的,动态的配置管理设施是非常重要的

Spring Cloud Config为微服务架构提供了集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供一个中心化的外部配置

分为服务端和客户端

服务端也被称为分布式配置中心,它是一个独立的微服务应用,用来连结配置服务器并为客户端提供配置信息,加解密信息等访问接口

客户端则通过指定配置中心管理应用资源,以及业务相关的配置内容,并在启动时从配置中心获取和加载配置信息配置服务器默认采用git来存储配置信息,这样有助于对环境配置进行版本管理,并且可以通过gitsvn,本地文件)客户端工具来方便的管理和访问配置内容

Config服务端配置

gittee上创建一个名为springcloud2020study-config的新仓库

Git地址:https://gitee.com/xsycy/springcloud2020studyconfig.git

Git仓库的操作:可以直接idea新建一个springcloud2020study-config进行操作,或者按照网页上新仓库如何创建的指示进行创建

包含三个文件:

config-dev.yml, config-prod.ymlconfig-test.yml,内容暂时可以随便输入

新建cloud-config-center-3344模块

Pom

<dependencies>
    <
dependency>
        <
groupId>org.springframework.cloud</groupId>
        <
artifactId>spring-cloud-config-server</artifactId>
    </
dependency>
    <
dependency>
        <
groupId>org.springframework.cloud</groupId>
        <
artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </
dependency>
    <
dependency>
        <
groupId>com.xs.springcloud</groupId>
        <
artifactId>cloud-api-commons</artifactId>
        <
version>${project.version}</version>
    </
dependency>
    <
dependency>
        <
groupId>org.springframework.boot</groupId>
        <
artifactId>spring-boot-starter-web</artifactId>
    </
dependency>
    <
dependency>
        <
groupId>org.springframework.boot</groupId>
        <
artifactId>spring-boot-starter-actuator</artifactId>
    </
dependency>
    <
dependency>
        <
groupId>org.projectlombok</groupId>
        <
artifactId>lombok</artifactId>
        <
optional>true</optional>
    </
dependency>
    <
dependency>
        <
groupId>org.springframework.boot</groupId>
        <
artifactId>spring-boot-starter-test</artifactId>
        <
scope>test</scope>
    </
dependency>
</
dependencies>

Yml

server:

  port: 3344



spring:

  application:

    name: cloud-config-center #注册进Eureka服务器的微服务名

  cloud:

    config:

      server:

        git:

          uri: git@gitee.com:xsycy/springcloud2020studyconfig.git
 #GitHub上面的git仓库名字

          search-paths: #搜索目录

            - springcloud2020studyconfig

      label: master #读取分支



eureka:

  client:

    service-url:

      defaultZone: http://localhost:7001/eureka

主启动类:

@SpringBootApplication

@EnableConfigServer//这里有改变了

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

找到c:Windowssystem32driversetc路径下的hosts文件,添加:

127.0.0.1   config-3344.com

实际上之前就添加过了

启动7001,再启动3344,输入:http://config-3344.com:3344/master/config-dev.yml

显示配置内容则算成功

配置读取规则:

/{label}/{application}-{profile}.yml

例子:http://config-3344.com:3344/master/config-dev.yml

Master分支下的内容

如果有其他分支,比如dev,则输入:

http://config-3344.com:3344/dev/config-dev.yml

/{application}-{profile}.yml

例子:http://config-3344.com:3344/config-dev.yml

因为在yml中已经配过分支了

/{application}-{profile}/{label}

http://config-3344.com:3344/config/dev

读出来的是json

总结:

Label:分支

Name:服务名

Profiles:环境(dev/test/prod

叫成config-xxx就是严格遵守规则命名的

服务端配置完成

接下来是客户端

新建cloud-config-client-3355模块

Pom

<dependency>
    <
groupId>org.springframework.cloud</groupId>
    <
artifactId>spring-cloud-starter-config</artifactId>
</
dependency>
<
dependency>
    <
groupId>org.springframework.cloud</groupId>
    <
artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</
dependency>
<
dependency>
    <
groupId>com.xs.springcloud</groupId>
    <
artifactId>cloud-api-commons</artifactId>
    <
version>${project.version}</version>
</
dependency>
<
dependency>
    <
groupId>org.springframework.boot</groupId>
    <
artifactId>spring-boot-starter-web</artifactId>
</
dependency>
<
dependency>
    <
groupId>org.springframework.boot</groupId>
    <
artifactId>spring-boot-starter-actuator</artifactId>
</
dependency>

<
dependency>
    <
groupId>org.projectlombok</groupId>
    <
artifactId>lombok</artifactId>
    <
optional>true</optional>
</
dependency>
<
dependency>
    <
groupId>org.springframework.boot</groupId>
    <
artifactId>spring-boot-starter-test</artifactId>
    <
scope>test</scope>
</
dependency>

接下来是新内容:bootstrap.yml

Application.yml是用户记的配置文件,而bootstrap.yml是系统级别的,优先度更高,更早加载

在这里,bootstrap.yml负责和3344沟通,Application.yml则负责各个模块

bootstrap.yml

server:
 
port: 3355

spring:
 
application:
   
name: config-client
 
cloud:
   
config:
     
label: master  #分支名称
     
name: config  #配置文件名称
     
profile: dev  #读取后缀名称   上述三个综合http://localhost:3344/master/config-dev.yml
     
uri: http://localhost:3344  #配置中心的地址
#服务注册到eureka地址
eureka:
 
client:
   
service-url:
     
#设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
     
defaultZone: http://localhost:7001/eureka #单机版

主启动类:

@SpringBootApplication
@EnableEurekaClient

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

Controller

@RestController
public class ConfigClientController {
   
@Value("${config.info}")
   
private String configInfo;

   
@GetMapping("/configInfo")
   
public String getConfigInfo(){
       
return configInfo;
    }
}

输入:http://localhost:3355/configInfo

得到服务端的configInfo即成功

然后问题来了,分布式配置的动态更新如何实现

在远程git里的配置文件进行了修改,服务端会立刻跟着更新变化

http://localhost:3344/master/config-dev.yml 可以看到内容已修改

但是客服端并没有跟着刷新,重启3355才更新,但这并不是动态更新

修改3355模块,引入

<dependency>
    <
groupId>org.springframework.boot</groupId>
    <
artifactId>spring-boot-starter-actuator</artifactId>
</
dependency>

修改yml,暴露监控断点

# 暴露监控端点
management:
 
endpoints:
   
web:
     
exposure:
       
include: "*"

Controller上加注解:@RefreshScope

再次修改远程配置内容,会发现服务端生效,但客户端依然没有生效

解决方法:发送post请求刷新3355

命令台里:C:Users78762>curl -X POST "http://localhost:3355/actuator/refresh"

输出:["config.client.version","config.info"],即可,不再需要重启3355

但是当有很多微服务呢?335533663377……这样手动刷新也是问题,可否广播,一次通知,处处生效?

以上为7477集的内容

最后

以上就是调皮荔枝为你收集整理的尚硅谷SpringCloud2020简单学习记录(个人用)74-77集的全部内容,希望文章能够帮你解决尚硅谷SpringCloud2020简单学习记录(个人用)74-77集所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部