首页 > 其他分享 >SpringCloud config分布式配置

SpringCloud config分布式配置

时间:2022-09-24 23:11:12浏览次数:89  
标签:git SpringCloud 配置 eureka spring config springcloud 分布式

分布式的问题,配置文件的管理

简单来说就是,我们每一个微服务自己带着一个application.yml,那上百的的配置文件要修改起来,岂不是要疯了。

所以将一些经常要改的文件发布到git上,(如配置文件。。。)这样就可以用git管理这些文件,

 

什么是Springcloud config分布式配置中心

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

Spring Cloud Config 分为服务端和客户端两部分;
服务端也称为分布式配置中心,它是一 个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密,解密信息等访问接口。

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

SpringCloud config分布式配置中心能做什么

集中管理配置文件
不同环境,不同配置,动态化的配置更新,分环境部署,比如/dev /test/ /prod /beta /release
运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息。
当配置发生变动时,服务不需要重启,即可感知到配置的变化,井应用新的配置
将配置信息以REST接口的形式暴露

SpringCloud环境配置

注册码云账号 https://gitee.com/。可qq 微信登录

新建仓库 springcloud-config,设置为公开,语言和模板都选择java。开源许可证GPL-3.0,仓库创建后复制当前仓库的SSH隧道地址

在电脑新建文件夹,用GitBash工具 执行 git clone springcloud-config复制的SSH地址,进行拉取仓库内容,拉去后选择yes,因为权限不存在,需要配置当前Git

Git大全   https://gitee.com/all-about-git

先下载

 

网址:Git - Downloading Package (git-scm.com)

 

 

 安装时

 (18条消息) 超级详细的GitBash使用教程01:下载、安装(适合小白)_goog_man的博客-CSDN博客_bash下载

运行他时:,获取远程文件

(18条消息) git下载项目到本地_jsklnice的博客-CSDN博客_git下载项目

此时我们已经拿到远程的文件(记得一定要取消隐藏文件)

 

 

 在当前的目录中创建 application.yml 文件,并编写

spring:
  profiles:
    active: dev
---
spring:
  profiles: dev
  application:
    name: springcloud-config-dev
---
spring:
  profiles: test
  application:
    name: springcloud-config-test

将当前编写的application.yml提交到码云上

GitBash打开命令工具
cd 至 springcloud-config
 
git add .  将文件添加到暂存区
 
git status 查看状态
 
git commit -m “一次提交” 本地提交,-m为提交时写的信息
 
git push origin master 提交到远程的当前路径分枝

就可以看见码云上有push到的application.yml文件

 

服务端连接Git配置

新建maven项目=> springcloud-config-server-3344

导入依赖

<!--springboot启动-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--springcloud-config的配置-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <!--监控信息 可不加-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

配置application.yml文件

server:
  port: 3344
spring:
  application:
    name: springcloud-config-server
    #连接远程的仓库
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/XFlish/springcloud-config.git #自己远程仓库的https地址
          # 通过 config-server可以连接到git,访问其中的资源以及配置

编写主启动类Config_Server_3344

@SpringBootApplication
@EnableConfigServer
public class Config_Server_3344 {
    public static void main(String[] args) {
        SpringApplication.run(Config_Server_3344.class,args);
    }
}

 

 

 

 

客户端连接服务端访问远程

创建 config-client.yml

#启动环境选择的配置
spring:
  profiles:
    active: dev
 
#springboot启动多环境的配置
---
server:
  port: 8201
#spring的配置
spring:
  profiles: dev
  application:
    name: springcloud-config-client-dev
#Eureka的配置。 服务注册到Eureka中,需要一个路径地址
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/
---
server:
  port: 8202
#spring的配置
spring:
  profiles: test
  application:
    name: springcloud-config-client-test
 
#Eureka的配置。 服务注册到Eureka中,需要一个路径地址
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/

将config-client.yml push到远程仓库

GitBash打开命令工具
cd 至 springcloud-config
 
git add .  将文件添加到暂存区
 
git status 查看状态
 
git commit -m “一次提交” 本地提交,-m为提交时写的信息
 
git push origin master 提交到远程的当前路径分枝

 

客户端连接服务端访问远程配置

新建Maven项目=> springcloud-config-client-3355

导入pom依赖

<!--springboot启动-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--springcloud-config启动的配置 和服务端的不同-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <!--监控信息 可不加-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

创建application.yml

#用户级别的配置,配置区读取谁
spring:
  application:
    name: springcloud-config-client-3355

创建bootstrap.yml

#系统级别的配置
spring:
  cloud:
    config:
      name: config-client # 需要从git上读取的资源名称,不要后缀
      profile: dev #dev环境端口:8201 test环境端口:8202
      label: master #需要在git上的哪个分支拿
      #连接到3344服务,中转站的形式连接服务端访问远程地址
      uri: http://localhost:3344

创建ConfigClientController控制器

package com.xlsh.springcloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigClientController {
    @Value("${spring.application.name}")
    private String applicationName;

    @Value("${eureka.client.service-url.defaultZone}")
    private String eurekaServer;

    @Value("${server.port}")
    private String port;

    @RequestMapping("/config")
    public String getConfig(){
        return "applicationName: "+applicationName+
                "eurekaServer: "+eurekaServer+
                "port: "+port;
    }

}

创建Config_Client_3355主启动类

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

启动3344服务端

localhost:3344/application-dev.yml 不同的启动环境 查到不同的仓库application.yml的配置信息

localhost:3344/application-test.yml 不同的启动环境 查到不同的查到仓库application.yml的配置信息

都可查询到 git仓库里application.yml相关内容

localhost:3344/config-client-dev.yml 不同的启动环境 查到不同的查询到仓库配置的config-client的信息

 

远程配置实战测试

在远程仓库拉取出来的文件中创建 config-eureka.yml

#启动环境选择的配置
spring:
  profiles:
    active: dev
---
server:
  port: 7001
#spring的配置
spring:
  profiles: dev
  application:
    name: springcloud-config-eureka-dev
 
#Eureka配置
eureka:
  instance:
    hostname: eureka7001.com #Eureaka服务端的实例名称
  client:
    register-with-eureka: false  #表示是否向Eureka注册中心注册自己
    fetch-registry: false #如果fetch-registry为false,则表示自己为注册中心
    service-url: #监控页面
      #单机:点进去参考源码,可看到默认的url端口配置为8761,我们设置为自己的端口。
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
 
      #集群(除自身外 关联其他所有)
      defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
---
server:
  port: 7001
#spring的配置
spring:
  profiles: test
  application:
    name: springcloud-config-eureka-test
 
#Eureka配置
eureka:
  instance:
    hostname: eureka7001.com #Eureaka服务端的实例名称
  client:
    register-with-eureka: false  #表示是否向Eureka注册中心注册自己
    fetch-registry: false #如果fetch-registry为false,则表示自己为注册中心
    service-url: #监控页面
      #单机:点进去参考源码,可看到默认的url端口配置为8761,我们设置为自己的端口。
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
 
      #集群(除自身外 关联其他所有)
      defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

在远程仓库拉取出来的文件中创建 config-dept.yml

#启动环境选择的配置
spring:
  profiles:
    active: dev
---
server:
  port: 8001
 
#mybatis配置
mybatis:
  type-aliases-package: com.lemon.springcloud.pojo
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
 
#spring的配置
spring:
  profiles: dev
  application:
    name: springcloud-config-dept-dev
    #数据源的配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource #数据源为druid
    driver-class-name: com.mysql.jdbc.Driver #数据库驱动
    url: jdbc:mysql://localhost:3306/springcloud1?useUnicode=true&characterEncoding=utf-8&servetTimeZone=Asia/Shanghai
    username: root
    password: 12345678
 
#Eureka的配置。 服务注册到Eureka中,需要一个路径地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
  instance:
    #修改Eureka中status的默认描述信息。不配置默认为DESKTOP-XXX描述
    instance-id: springcloud-provider-dept8001
    prefer-ip-address: true #改为true后 Eureka中的status就会显示真实ip地址
#info配置   Eureka的status的xx/info链接点开后的info监控信息。没有太大意义
info:
  app.name: ti zi zui bang,jiayou
  company.name: tizi.lemon.com
  test.name: hahah test
---
server:
  port: 8001
 
#mybatis配置
mybatis:
  type-aliases-package: com.lemon.springcloud.pojo
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
 
#spring的配置
spring:
  profiles: test
  application:
    name: springcloud-config-dept-test
    #数据源的配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource #数据源为druid
    driver-class-name: com.mysql.jdbc.Driver #数据库驱动
    url: jdbc:mysql://localhost:3306/springcloud2?useUnicode=true&characterEncoding=utf-8&servetTimeZone=Asia/Shanghai
    username: root
    password: 12345678
 
#Eureka的配置。 服务注册到Eureka中,需要一个路径地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
  instance:
    #修改Eureka中status的默认描述信息。不配置默认为DESKTOP-XXX描述
    instance-id: springcloud-provider-dept8001
    prefer-ip-address: true #改为true后 Eureka中的status就会显示真实ip地址
#info配置   Eureka的status的xx/info链接点开后的info监控信息。没有太大意义
info:
  app.name: ti zi zui bang,jiayou
  company.name: tizi.lemon.com
  test.name: hahah test

push到git远程仓库中

GitBash打开命令工具
cd 至 springcloud-config
 
git add .  将文件添加到暂存区
 
git status 查看状态
 
git commit -m “一次提交” 本地提交,-m为提交时写的信息
 
git push origin master 提交到远程的当前路径分枝

创建Maven项目=> springcloud-config-eureka-7001 远程访问仓库实现注册中心

<!--eureka服务提供者包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--springcloud-config启动的配置-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>

创建application.yml

spring:
  application:
    name: springcloud-config-eureka-7001

创建bootstrap.yml

# 系统级别的配置
spring:
  cloud:
    config:
      name: config-eureka # 需要从git上读取的资源名称,不要后缀
      profile: dev #dev环境端口:8201 test环境端口:8202
      label: master #需要在git上的哪个分支拿
      #连接到3344服务,中转站的形式连接服务端访问远程地址
      uri: http://localhost:3344

启动3344服务端 ,启动后自测。本地需要连接到3344,确定ConfigEureka7001启动后能够连接到远程

访问:localhost:3344/config-eureka-dev.yml

 

创建Maven项目=> springcloud-config-dept-8001 远程访问仓库实现8001服务提供者

复制 springcloud-provider-dept-8001 项目所有的内容及依赖

删掉application.yml所有配置,因为此配置已经在git远程仓库中配置,添加以下的配置内容

创建application.yml

spring:
  application:
    name: springcloud-config-dept-8001

创建bootstrap.yml

#系统级的配置
# 系统级别的配置
spring:
  cloud:
    config:
      name: config-dept # 需要从git上读取的资源名称,不要后缀
      profile: dev #dev环境端口:8201 test环境端口:8202
      label: master #需要在git上的哪个分支拿
      #连接到3344服务,中转站的形式连接服务端访问远程地址
      uri: http://localhost:3344

启动3344服务端 ,config-eureka-7001注册中心,当前8001服务提供者
可以看到,通过远程访问git,也获取到了相应的数据.

 

标签:git,SpringCloud,配置,eureka,spring,config,springcloud,分布式
From: https://www.cnblogs.com/flsh/p/16726935.html

相关文章

  • springcloud快速入门
    一、项目思路使用idea工具创建一个maven空项目,删除不需要的src目录等东西,用来做父项目,只剩下pom.xml文件在父项目中依次创建三个模块module,分别为eruekaservice、provid......
  • SpringCloud微服务架构
    认识微服务单体架构将业务的所有功能集中在一个项目中开发,打成一个包部署。优点:1.架构简单2.部署成本低缺点:耦合度高分布式架构根据业务功能对系统进行拆分,......
  • htmlWebpackPlugin config
    namedescribetypedefaultfaviconhtml图标string''title创建的html的titlestring'WebpackApp'metameta标签{object}{}base配置base标签obj......
  • SpringCloud使用注解+AOP+MQ来实现日志管理模块
    简介无论在什么系统中,日志管理模块都属于十分重要的部分,接下来会通过注解+AOP+MQ的方式实现一个简易的日志管理系统思路注解: 标记需要记录日志的方法AOP: 通过AOP......
  • 分布式事务
    分布式事务1.分布式事务问题1.1.本地事务本地事务,也就是传统的单机事务。在传统数据库事务中,必须要满足四个原则:1.2.分布式事务分布式事务,就是指不是在单个服务或单......
  • Filter、FilterChain、FilterConfig 介绍
    一、Filter的基本工作原理1、Filter程序是一个实现了特殊接口的Java类,与Servlet类似,也是由Servlet容器进行调用和执行的。2、当在web.xml注册了一个Filter......
  • NodeJs——Parsing error: Cannot read file '.../tsconfig.json'.eslint
    前言之前没有问题,今天打开项目后,ts文件中的import突然报Parsingerror:Cannotreadfile'.../tsconfig.json'.eslint,查了下stackoverflow内容以下为大家给出的一些......
  • SpringBoot、SpringCloud、SpringCloudAlibaba版本对照表
    1SpringBoot、SpringCloud、SpringCloudAlibaba毕业版本依赖关系(推荐使用)SpringBootVersionSpringCloudVersionSpringCloudAlibabaVersion2.3.2.RELE......
  • 分布式实时计算框架原理及实践案例 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1B9GDre_XZYMncW9WYhPqlg点击这里获取提取码 ......
  • 解决Syntax Error: Error: No ESLint configuration found Syntax Error: TypeError:
    1.在项目中安装ESLint:npminstalleslint--save-dev2.生成配置文件:./node_modules/.bin/eslint--init3.初始化成功后,会在项目根目录生成一个.eslintrc.js文件,文件......