【微服务】整合Nacos注册中心和动态配置
文章目录
- 1.Docker安装Nacos
- 1.拉取镜像
- 2.启动nacos
- 3.开启8848和9848端口
- 1.8848
- 2.9848
- 4.访问Nacos
- 2.项目集成Nacos的服务发现
- 1.引入依赖
- 1.sun-dependencies 指定版本
- 2.sun-cloud-nacos引入服务发现依赖和bootstrap依赖
- 3.注意:修改完sun-dependencies的依赖后clean-install一下否则可能出现无法扫描到依赖的问题
- 2.sun-cloud-home配置Nacos服务发现
- 1.bootstrap.yml 配置Nacos的服务发现
- 2.将application.yml的内容放到bootstrap.yml中(完整配置)
- 3.最后的配置文件目录
- 4.启动测试
- 5.sun-cloud-sku也是同理配置服务发现
- 1.需要注意的是引入sun-cloud-nacos依赖时一定要放到sun-common-log后面,否则日志依赖会冲突
- 2.微服务注册成功
- 3.项目集成Nacos的动态配置
- 1.sun-cloud-home集成
- 1.引入配置中心依赖
- 2.bootstrap.yml配置
- 3.新建一个配置文件与配置的对应
- 4.测试读取配置文件
- 1.@RefreshScope开启Nacos动态配置
- 2.@Value读取Nacos配置
- 3.接口
- 4.完整代码
- 5.修改配置,访问测试
- 2.sun-cloud-sku集成
- 1.修改bootstrap.yml
- 2.注意:如果引入了配置中心就必须配置这个,但是不创建指定文件是没问题的
1.Docker安装Nacos
1.拉取镜像
docker pull nacos/nacos-server
2.启动nacos
1. docker run -d:
• docker run: 启动一个新的容器。
• -d: 以分离(detached)模式运行容器,即后台运行。
2. --name nacos:
• 为容器指定一个名称 nacos。
3. --privileged:
• 给予容器更多的权限,允许其执行更多系统级的操作。一般用于需要更多系统权限的容器。
4. --cgroupns host:
• 使用主机的 cgroup 命名空间。这对于某些需要访问主机 cgroup 的操作可能是必要的。
5. --env MODE=standalone:
• 设置环境变量 MODE=standalone。这表示 Nacos 以单机模式运行,而不是集群模式。
6. -p 8848:8848/tcp:
• 将主机的 8848 端口映射到容器的 8848 端口。8848 是 Nacos 默认的服务端口。
7. -p 9848:9848/tcp:
• 将主机的 9848 端口映射到容器的 9848 端口。这是另一个常用的 Nacos 端口(可能用于监控或其他服务)。
8. --restart=always:
• 设置容器的重启策略为“总是重启”。如果容器因任何原因停止,它将自动重启。
9. -w /home/nacos:
• 设置容器内的工作目录为 /home/nacos。
10. nacos/nacos-server:
• 指定要运行的 Docker 镜像是 nacos/nacos-server。
docker run -d \
--name nacos \
--privileged \
--cgroupns host \
--env MODE=standalone \
-p 8848:8848/tcp \
-p 9848:9848/tcp \
--restart=always \
-w /home/nacos \
nacos/nacos-server
3.开启8848和9848端口
1.8848
systemctl start firewalld && firewall-cmd --permanent --add-port=8848/tcp && firewall-cmd --reload && firewall-cmd --query-port=8848/tcp
2.9848
systemctl start firewalld && firewall-cmd --permanent --add-port=9848/tcp && firewall-cmd --reload && firewall-cmd --query-port=9848/tcp
4.访问Nacos
http://ip:8848/nacos/
2.项目集成Nacos的服务发现
1.引入依赖
1.sun-dependencies 指定版本
<!-- springcloud-alibaba版本 2021.1 -->
<spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
<!-- 导入springcloud-alibaba所有依赖版本 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
2.sun-cloud-nacos引入服务发现依赖和bootstrap依赖
<!-- Nacos的服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- cloudalibaba2021版本不会加载bootstrap所以需要手动引入这个依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
3.注意:修改完sun-dependencies的依赖后clean-install一下否则可能出现无法扫描到依赖的问题
2.sun-cloud-home配置Nacos服务发现
1.bootstrap.yml 配置Nacos的服务发现
spring:
cloud:
nacos:
discovery:
enabled: true # 启用服务发现
server-addr: ip:8848 # Nacos地址
2.将application.yml的内容放到bootstrap.yml中(完整配置)
server:
port: 8081 # 服务端口
spring:
profiles:
active: ${env-flag} # 配置为application-xxx.yml中的xxx,就可以激活指定的配置文件
application:
name: sun-cloud-home # 服务名(注册到Nacos中的名字)
cloud:
nacos:
discovery:
enabled: true # 启用服务发现
server-addr: ip:8848 # Nacos地址
3.最后的配置文件目录
4.启动测试
5.sun-cloud-sku也是同理配置服务发现
1.需要注意的是引入sun-cloud-nacos依赖时一定要放到sun-common-log后面,否则日志依赖会冲突
2.微服务注册成功
3.项目集成Nacos的动态配置
1.sun-cloud-home集成
1.引入配置中心依赖
<!-- Nacos的配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.bootstrap.yml配置
# 配置文件的格式为:${prefix}-${spring.profiles.active}.${file-extension}
# 这里对应的文件名就是:sun-cloud-home-dev.yaml
config:
server-addr: ip:8848 # Nacos地址
prefix: ${spring.application.name} # 配置前缀为服务名
group: DEFAULT_GROUP # 配置分组
namespace: # 命名空间,如果在public命名空间则不需要配置
file-extension: yaml
3.新建一个配置文件与配置的对应
4.测试读取配置文件
1.@RefreshScope开启Nacos动态配置
2.@Value读取Nacos配置
/**
* 测试读取Nacos配置
*/
@Value(value = "${myconfig.test}")
private String testConfig;
3.接口
/**
* 测试读取Nacos配置
* @return
*/
@GetMapping("/testConfig")
public String testConfig() {
return testConfig;
}
4.完整代码
5.修改配置,访问测试
2.sun-cloud-sku集成
1.修改bootstrap.yml
# 配置文件的格式为:${prefix}-${spring.profiles.active}.${file-extension}
# 这里对应的文件名就是:sun-cloud-sku-dev.yaml
config:
server-addr: ip:8848 # Nacos地址
prefix: ${spring.application.name} # 配置前缀为服务名
group: DEFAULT_GROUP # 配置分组
namespace: # 命名空间,如果在public命名空间则不需要配置
file-extension: yaml