cloud配置中心

服务配置中心

1. 配置文件相对分散。

在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散 在各个微服务中,不好统一配置和管理。

2. 配置文件无法区分环境。

微服务项目可能会有多个环境,例如:测试环境、预发布环境、生产环 境。每一个环境所使用的配置理论上都是不同的,一旦需要修改,就需要我们去各个微服务下手动 维护,这比较困难。

3. 配置文件无法实时更新。

我们修改了配置文件之后,必须重新启动微服务才能使配置生效,这对一 个正在运行的项目来说是非常不友好的。 基于上面这些问题,我们就需要配置中心的加入来解决这些问题。

配置中心的思路是:

首先把项目中各种配置全部都放到一个集中的地方进行统一管理,并提供一套标准的接口。

当各个服务需要获取配置的时候,就来配置中心的接口拉取自己的配置。

当配置中心中的各种参数有更新的时候,也能通知到各个服务实时的过来同步最新的信息,使之动 态更新。

Nacos Config入门

Nacos Spring Cloud

使用nacos作为配置中心,其实就是将nacos当做一个服务端,将各个微服务看成是客户端,我们 将各个微服务的配置文件统一存放在nacos上,然后各个微服务从nacos上拉取配置即可。 接下来我们以商品微服务为例,学习nacos config的使用。

1 搭建nacos环境【使用现有的nacos环境即可】

2 在微服务中引入nacos的依赖


    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-config


 
    org.springframework.cloud
    spring-cloud-starter-bootstrap
 

3 在微服务中添加nacos config的配置

application.properties /appli....yml

bootstrap.properties /

注意:不能使用原来的application.yml作为配置文件,而是新建一个bootstrap.yml作为配置文件

配置文件优先级(由高到低):

bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml

bootstrap文件的配置信息如下:

#服务的名字
spring.application.name=test
server.port=8083
#环境标识 test-dev
spring.profiles.active=dev
#后缀名是什么  默认跟当前的文件的后缀名一致
# data-id=服务名-dev.properties
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.discovery.server-addr=localhost:8848

4 在nacos中添加配置

点击配置列表,点击右边+号,新建配置。在新建配置过程中,要注意下面的细节:

1)Data ID不能随便写,要跟配置文件中的对应,对应关系如图所示

2)配置文件格式要跟配置文件的格式对应,且目前仅仅支持YAML和Properties

3)配置内容按照上面选定的格式书

配置的信息:

Data ID :test-dev.properties(这个地方一定不能出错!!!!)

-dev指的是环境的标识

.properties是配置文件的格式

test是服务的名字

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///edu?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
spring.jackson.serialization.write-date-keys-as-timestamps=false
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.mapper-locations=classpath:/mapper/*.xml
mybatis-plus.global-config.db-config.logic-not-delete-value=0
mybatis-plus.global-config.db-config.logic-delete-value=1

5 注释本地的application文件中的相关内容, 启动程序进行测试 如果依旧可以成功访问程序,说明我们nacos的配置中心功能已经实现

Nacos Config深入

配置动态刷新

在入门案例中,我们实现了配置的远程存放,但是此时如果修改了配置,我们的程序是无法读取到 的,因此,我们需要开启配置的动态刷新功能。 在nacos中的test-dev.properties配置项中添加下面配置

config.env.name=dev

@RestController

@RefreshScope//只需要在需要动态读取配置的类上添加此注解就可以

public class NacosConfigController {

@Value("${config.env.name}")

private String appName;

// 注解方式

@GetMapping("/nacos-config-test2")

public String nacosConfingTest2() {

return appName;

}

}

配置共享

当配置越来越多的时候,我们就发现有很多配置是重复的,这时候就考虑可不可以将公共配置文件 提取出来,然后实现共享呢?当然是可以的。接下来我们就来探讨如何实现这一功能。

同一个微服务的不同环境之间共享配置 如果想在同一个微服务的不同环境之间实现配置共享,其实很简单。

只需要提取一个以 spring.application.name 命名的配置文件,然后将其所有环境的公共配置放在里 面即可。

不同微服务中间共享配置

不同为服务之间实现配置共享的原理类似于文件引入,就是定义一个公共配置,然后在当前配置中引 入。

1 在nacos中定义一个DataID为test.properties的配置,用于所有微服务共享

里面写的全部都是公共的信息

使用微服务product调用公共的配置文件

config: 
  env:
    name: product-dev12

3 修改bootstrap.yaml

spring: 
  application: 
    name: product 
   cloud: 
     nacos: 
       config: 
        server-addr: 127.0.0.1:8848 #nacos中心地址
        file-extension: yaml # 配置文件格式 
        shared-configs[0]:
          data-id: test.properties
          #group: DEFAULT_GROUP   # 默认为DEFAULT_GROUP
          refresh: true #动态刷新配置文件里的信息
   

4 启动商品微服务进行测试

nacos的几个概念

命名空间(Namespace)

命名空间可用于进行不同环境的配置隔离。一般一个环境划分到一个命名空间

配置分组(Group)

配置分组用于将不同的服务可以归类到同一分组。一般将一个项目的配置分到一组

配置集(Data ID)

在系统中,一个配置文件通常就是一个配置集。一般微服务的配置就是一个配置集

你可能感兴趣的:(JAVA,java,运维,微服务)