zoukankan      html  css  js  c++  java
  • 配置中心

    配置中心

    概念

    为什么需要配置中心

    单体应用,配置写在配置文件中,没有什么大问题

    如果要切换环境,可以切换不同的profile(2种方式),但在微服务中

    • 微服务比较多,成百上千,配置很多,需要集中管理
    • 管理不同环境的配置
    • 需要动态调整配置参数,更改配置不停服

    配置中心介绍

    分布式配置中心包括3个部分:

    • 存放配置的地方:git ,本地文件等
    • config server:从 1 读取配置
    • config client:是 config server 的客户端消费配

    配置都不会自己更新,都是需要触发client才去git上拉取的或者触发在config-server上查看配置时,才去git上拉取

    使用

    • 环境部署之前,将所需的配置信息推送到配置仓库
    • 启动配置中心服务端,将配置仓库的配置信息拉取到服务端,配置服务端对外提供RESTful接口
    • 启动配置客户端,客户端根据 spring.cloud.config 配置的信息去服务器拉取相应的配置

    创建4个配置文件

    config-client-dev.yml

    env: dev

    Config Server

    官方地址:https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-config-server

    添加依赖

    <!-- 配置中心服务端:config-server -->
    <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>

    yml

    spring: 
        cloud:
            config:
                server:
                    git:
                    uri: https://github.com/xxxxx
                    username: 
                    password: 
                    #默认是秒,因为git慢
                    timeout: 15

    启动类

    添加注解

    @EnableConfigServer

    测试:

    启动eureka,config-server

    访问:

    http://localhost:6001/config-client-dev.yml

    http://localhost:6001/config-client-dev.properties

    http://localhost:6001/config-client-dev.json

    获取配置规则:根据前缀匹配

    • /{name}-{profiles}.properties
    • /{name}-{profiles}.yml
    • /{name}-{profiles}.json
    • /{label}/{name}-{profiles}.yml
    • name 服务名称
    • profile 环境名称,开发、测试、生产:dev qa prd
    • lable 仓库分支、默认master分支

    匹配原则:最左前

    换分支

    dev分支上:config-client-dev.yml

    #服务端口
    server: 
        port: 8001
        env: branch-dev-dev

    访问

    • http://localhost:6001/dev/config-client-dev.yml
    • http://localhost:6001/dev/config-client-dev.json

    不写分支,默认是master

    Config client

    discovery方式

    pom

    <!-- 配置中心客户端:config-client -->
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
    </dependency>
    
    <!-- web -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- eureka客户端 -->
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

    application.yml

    server:
        port: 8011

    bootstrap.yml

    #应用名称,配置文件名,此时:congif-client-dev.yml
    spring: 
        application: 
            name: config-client
        cloud: 
            config:
                discovery:
            enabled: true
            # config server 的服务id
            service-id: config-server
            # 环境
            profile: dev
            # 分支
            label: master 

    代码

    @Value("${env}")
    private String env;

    访问

    http://localhost:8011/config/env0

    远程配置已经拉过来了

    url方式

    ```sh
    spring:
    cloud:
    config:
    # 和下面的discovery互斥
    # uri:
    # - http://localhost:6001
    ```

    论读书
    睁开眼,书在面前
    闭上眼,书在心里
  • 相关阅读:
    Ajax在表单中的应用
    jQuery实例
    Ajax之404,200等查询
    Ajax知识总结
    Ajax之eval()函数
    闭包应用
    全局预处理与执行,作用域与作用域链
    替换富文本里的px为rem
    vue2 兼容ie8
    vue-awesome-swiper 水平滚动异常
  • 原文地址:https://www.cnblogs.com/YC-L/p/14535066.html
Copyright © 2011-2022 走看看