微服务之配置中心Nacos
文章目录
- 前言
- nacos配置中心
- 实现思路
- RabbitMQ
- 若依的实现
- 实战
- 配置nacos
- 启动nacos
- 创建命名空间
- 命名空间下创建配置文件
- 修改父级的pom文件
- 修改bill-provider-7780模块
- 创建bootstrap.yml文件
- 修改application.yml
- 创建TestConfig
- 启动bill-provider-7780模块
- 动态改变数据库的账号密码
- 修改bill-provider-7780模块
- 创建IndexController文件
- 测试
- 不修改nacos访问
- 修改nacos配置
- 修改后再次访问
- 未完待续....
前言
如果你还没有学习OpenFeign可以看之前的博客微服务之hystrix熔断降级和负载均衡,本篇博客是接着上一篇写的。
nacos配置中心
nacos有两大块,一块是 注册中心
,另一块就是我们今天要学的 配置中心
。还不知道什么是注册中心的请看我之前的博客微服务之SpringCloud Alibaba(注册中心Nacos)
nacos同spring-cloud-config一样,可以作为一个配置中心,统一的来管理配置,可以配置多套环境,各个微服务可以按需到nacos配置中心拉取相关配置,且支持动态刷新@RefreshScope。
实现思路
RabbitMQ
我们将配置信息存入到nacos,然后在项目中创建config模块,然后使用RabbitMQ将配置信息推送到各个模块
若依的实现
我们微服务版的若依是将配置信息放到nacos,然后哪个模块使用就去调用。接下来演示这种方式。
实战
配置nacos
启动nacos
打开文件,路径上cmd回车。
输入指令。
# 后缀standalone指的是以单例的方式进行启动
.\startup.cmd -m standalone
浏览器进入上面的路径,输入账号密码,账号密码都是nacos,登陆之后如下
创建命名空间
这个命名空间你可以想成一个文件夹,后面会在这个文件夹内添加配置文件。
注意:命名空间以后在开发中可以区分为 开发、测试、生产 等环境。
结果如下:
命名空间下创建配置文件
-
在test命名空间下 创建yaml文件
-
填写配置信息。
-
点击发布
-
点击确定
-
点击返回
-
结果如下
-
可以查看代码示例
-
选择SpringCloud
修改父级的pom文件
这个是dependencies标签,而不是dependencyManagement下的dependencies标签。
<!--nacos配置中心-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 引入bootstrap依赖 应用程序启动时加载boostrap配置文件 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>3.1.4</version>
</dependency>
修改bill-provider-7780模块
创建bootstrap.yml文件
在resources下新建bootstrap.yml文件
server:port: 7780
spring:application:name: bill-provider-7780 # 服务名cloud:nacos:discovery:username: nacospassword: nacosserver-addr: 127.0.0.1:8848config:server-addr: 127.0.0.1:8848file-extension: yaml # 配置文件格式group: DEFAULT_GROUP # 配置分组namespace: e0ee261e-6c1a-4db1-bf6f-bdfdce8f89d7 # 命名空间ID, 这个从nacos中复制
注意: 使用nacos作为配置中心时,需要创建一个bootstrap.yaml和
application.yaml两个配置文件,bootstrap.yaml的优先级高于
application.yaml,加载时实现加载bootstrap.yaml中的相关配置
修改application.yml
这里的nacos的配置信息可以去除了,因为已经放到bootstrap.yml
我们只需要激活dev环境即可
我们在最后引入mname和mpwd两个自定义属性看看是否能读取nacos中的配置。
只要能读取说明我们下面mysql的配置信息就能读取到nacos中的配置信息了。
读取nacos中的配置使用${属性名}
#server:
# port: 7780
#spring:
# application:
# name: bill-provider-7780 # 服务名
# cloud:
# nacos:
# discovery:
# username: nacos
# password: nacos
# server-addr: 127.0.0.1:8848
spring:profiles:active: dev # 激活环境# 数据库配置datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/smbms?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=trueusername: ${mysqlname} # 引入nacos中的mysql账号password: ${mysqlpwd} # 引入nacos中的mysql密码
# mybatis-plus:
mybatis-plus:mapper-locations: classpath:mappers/*.xml # 扫描mappers映射文件type-aliases-package: com.hsh.pojo # 扫描别名configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印sql到控制台map-underscore-to-camel-case: false # 关闭驼峰映射
mname: ${mysqlname} # 引入nacos中的mysql账号
mpwd: ${mysqlpwd} # 引入nacos中的mysql密码
创建TestConfig
在com/hsh/config文件下创建文件TestConfig,当项目启动时加载nacos中的属性
package com.hsh.billprovider7780.config;import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class TestConfig {@Value("${mname}")private String mname;@Value("${mpwd}")private String pwd;@Beanpublic void show(){System.out.println("mname:"+mname+"========"+"pwd:"+pwd);}
}
启动bill-provider-7780模块
动态改变数据库的账号密码
所谓的动态改变数据库的账号密码,就是当我们编辑Nacos中的配置文件信息后,会同步更改代码中xml配置文件中的值
修改bill-provider-7780模块
创建IndexController文件
我们在com/hsh/billprovider7780文件下新建controller文件
在controller文件下新建IndexController类
package com.hsh.billprovider7780.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/index")
@RefreshScope // 开启动态刷新
public class IndexController {@Value("${mname}")private String mname;@Value("${mpwd}")private String pwd;@GetMapping("/show")public String show(){return "mname:"+mname+"========"+"pwd:"+pwd;}
}
测试
不修改nacos访问
先输入http://localhost:7780/index/show
进行访问
修改nacos配置
现在修改nacos中的密码
修改后再次访问
输入http://localhost:7780/index/show
进行访问
到此配置成功。
未完待续…
请看我的下一篇博客微服务之Gateway网关(1)