Spring Cloud Alibaba(二)Nacos统一配置管理

目录

一、为什么需要配置中心

二、常用的配置中心

Nacos 的几个概念

三、Nacos配置中心的使用

(一)properties格式

1、导入依赖

2、在配置中心新建配置

3、修改配置文件名为bootstrap.yml

4、在微服务中添加nacos config服务地址的配置

5、测试获取注册中心的配置

(二)yaml格式

(三)profiles.active—粒度配置

经常会出现的报错信息:

常见报错


在这里插入图片描述

一、为什么需要配置中心

在没有配置中心之前,传统应用配置的存在以下痛点:

(1)采用本地静态配置,无法保证实时性:修改配置不灵活且需要经过较长的测试发布周期,无法尽快通知到客户端,还有些配置对实时性要求很高,比方说主备切换配置或者碰上故障需要修改配置,这时通过传统的静态配置或者重新发布的方式去配置,那么响应速度是非常慢的,业务风险非常大

(2)易引发生产事故:比如在发布的时候,容易将测试环境的配置带到生产上,引发生产事故。

(3)配置散乱且格式不标准:有的用properties格式,有的用xml格式,还有的存DB,团队倾向自造轮子,做法五花八门。

(4)配置缺乏安全审计、版本控制、配置权限控制功能:谁?在什么时间?修改了什么配置?无从追溯,出了问题也无法及时回滚到上一个版本;无法对配置的变更发布进行认证授权,所有人都能修改和发布配置。

    而配置中心区别于传统的配置信息分散到系统各个角落的方式,对系统中的配置文件进行集中统一管理,而不需要逐一对单个的服务器进行管理。那这样做有什么好处呢?
使用配置中心之后

(1)通过格式统一化配置中心,可以使得配置标准化、

(2)当配置信息发生变动时,修改实时生效,无需要重新重启服务器,就能够自动感知相应的变化,并将新的变化统一发送到相应程序上,快速响应变化。比方说某个功能只是针对某个地区用户,还有某个功能只在大促的时段开放,使用配置中心后只需要相关人员在配置中心动态去调整参数,就基本上可以实时或准实时去调整相关对应的业务。

(3)通过审计功能还可以追溯问题

二、常用的配置中心

微服务中配置中心的主流解决方案主要有三种:Nacos、Apollo、Config+Bus,不过里我们主要介绍 Nacos 作为配置中心的用法。

在这里插入图片描述

Nacos 的几个概念

命名空间(Namespace)
命名空间可用于进行不同环境的配置隔离。一般一个环境划分到一个命名空间
配置分组(Group)
配置分组用于将不同的服务可以归类到同一分组。一般将一个项目的配置分到一组
配置集(Data ID)
在系统中,一个配置文件通常就是一个配置集。一般微服务的配置就是一个配置集
在这里插入图片描述

三、Nacos配置中心的使用

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

就相当于服务模块请求nacos,nacos响应给服务模块一些数据

(一)properties格式

1、导入依赖

哪个服务模块要获取nacos配置管理的数据,就在哪个模块上添加依赖

<!--nacos的config配置中心依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--把application.yml配置文件名称改为bootstrap.xml-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

2、在配置中心新建配置

 

3、修改配置文件名为bootstrap.yml

4、在微服务中添加nacos config服务地址的配置

spring:
  application:
    name: user-server #注册服务的名称
  # 配置数据源
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/nacos?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
      driver-class-name: com.mysql.cj.jdbc.Driver
      username: root
      password: 123456
  #clout配置nacos服务注册中心
  cloud:
    nacos:
      discovery: #配置客户端
        server-addr: 192.168.100.129:8848 #虚拟机ip地址和端口号
        username: nacos #nacos网址的账号密码
        password: nacos
      #配置nacos网站的config配置中心
      config:
        server-addr: 192.168.100.129:8848 #虚拟机ip地址和端口号
        file-extension: properties #配置内容的类型格式
        username: nacos #nacos网站的账号密码
        password: nacos

5、测试获取注册中心的配置

@RestController
@RequestMapping("/user")
public class UserController {

    @Value("${username}")//通过配置中心的配置内容的键获取value
    public String username;

    @Value("${age}")//通过配置中心的配置内容的键获取value
    public String age;

    @GetMapping("/test2")
    public void test2(){
        System.out.println(username); //控制台打印张三
        System.out.println(age);//99
    }

}

6、可以将yml配置文件中数据库的配置移至配置中心,并修改工程中数据源的配置

在user服务模块中获取配置中心的配置内容数据源配置,这样也可以把数据库配置成功,就可以把yml配置文件中的数据源配置删除了

@Configuration
public class DataSourceConfig {
    @Value("${spring.datasource.druid.username}")
    private String username;
    @Value("${spring.datasource.druid.password}")
    private String password;
    @Value("${spring.datasource.druid.url}")
    private String url;
    @Value("${spring.datasource.druid.driver-class-name}")
    private String driverClassName;
    @Bean
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        druidDataSource.setDriverClassName(driverClassName);
        return druidDataSource;
    }
}

(二)yaml格式

1、配置中心新建配置

在这里插入图片描述

2、修改工程配置文件名为bootstrap.yml并修改配置文件配置

在这里插入图片描述

(三)profiles.active—粒度配置

1、配置中心创建配置

data id : 服务名-命名空间名.后缀名(order-server-dev.yaml)

在这里插入图片描述

2、工程模块配置

在这里插入图片描述

经常会出现的报错信息:

org.springframework.beans.factory.BeanCreationException:@Value没有注入成功,要仔细检查一遍

常见报错

1、如果启动不了报错,有可能出现的问题是:防火墙没有关闭,关闭防火墙后再去开启Nacos服务

查看防火状态

systemctl status firewalld

img

systemctl stop firewalld

然后再去启动Nacos服务

2、如果启动成功了,发现nacos服务注册中心网站没有任何数据和注册的消息,有可能是本机的网络更改了

因为conf/application.properties文件中IP地址是当前网络属性的IPv4地址,如果更换了网络要修改IP地址

# 启用standalone模式
nacos.standalone=true
# 修改端口号
server.port=8848
# 修改数据存储位置
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.216.176:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

注意要修改以下参数: 

server.port:修改为要使用的端口号 db.url.0:修改为MySQL数据库的连接地址,IP地址是当前网络属性的IPv4地址,换一个网络会发生变化,记得修改

db.user、db.password:并设置正确的数据库用户名和密码

猜你喜欢

转载自blog.csdn.net/m0_65992672/article/details/130734777