文章目录
前言
一、Nacos是什么?
注册中心,配置中心。
二、使用步骤
1.依赖
代码如下(示例):
<!--nacos配置管理依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.配置
代码如下(示例):
spring.:
application:
name: orderservice
cloud:
nacos:
server-addr: localhost:80
discovery:
cluster-name: GuangDong
三、Nacos服务分级存储模型
- 一级是服务,比如用户服务,userservice
- 二级是集群,比如杭州或上海
- 三级是实例,比如杭州机房某台部署了userservice的服务器
四、如何设置实例的集群属性
1、修改application.yml文件,添加属性
spring.cloud.nacos.discovery.cluster-name
五、NacosRule负载均衡
1、调用方的配置文件添加负载均衡规则:
# userservice是服务提供方
# 该规则是会去找当前集群的,然后轮询。
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
2、权重设置
允许权重为0,适用比如服务迭代升级。
六、Nacos环境隔离
namespace可以用于比如说开发环境、生产环境等区分
group可以用于业务区分
1、如何适用命名空间
- 第一步新建命名空间
- 配置文件里新加命名空间属性
# namespace属性绑定命名空间id
spring.:
application:
name: orderservice
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: ShangHai
namespace: 02c92c53-f8d1-4a2a-9cb1-0d06cb6ecf39
# bootstrap.xml,读取优先级高于application.xml
spring:
application:
name: userservice
profiles:
active: dev
cloud:
nacos:
server-addr: localhost:8848
config:
file-extension: yaml
七、Nacos与Eureka的区别
https://perkins4j2.github.io/posts/35353/
作者:Perkins
八、Nacos实现配置管理
1、统一配置管理
- 会有一个配置管理服务(实际上也是Nacos),当配置更新后,会通知对应的服务,让它重新读取配置
- 使用规范,热更新的配置才放进去,而不是把application里面的都丢进去
- 如果要新建配置,去Nacos点点
- 微服务如何使用该配置方式
(1)本地配置文件获取方式:
项目启动->读取bootstrap.xml->读取本地配置文件application.yml->创建spring容器->加载Bean
(2)当有配置中心的时候,会先读取bootstrap找Nacos的地址,然后读取Nacos中的配置文件,再读取本地配置文件,然后合并
(3)在需要配置中心的服务中添加依赖
<!--nacos配置管理依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
(4)在resource目录添加一个bootstrap.yml,这个文件是引导文件,优先级高于application.yml
spring:
application:
name: userservice
profiles:
active: dev
cloud:
nacos:
server-addr: localhost:8848
config:
file-extension: yaml
(5)使用方式和用配置文件一样,比如value等,比如properties之类的方法。
2、配置热更新
- 方式一:在使用了配置的类上,加入@RefreshScope注解
@RefreshScope
public class UserController {
@Value("${pattern.dateformat}")
private String dateformat;
}
- 方式二:使用ConfigurationProperties注解
// 没有Component注解会报错,因为使用该类的注解必须在spring容器中
@Component
// 匹配机制,通过前缀名和成员变量名能匹配上属性的话,值就能带入
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dataformat;
}
3、配置共享
微服务启动的时候会从Nacos里面读取多个配置文件:
- [spring.application.name]-[spring.profiles.active].yaml,eg:userservice-dev.yaml
- [spring.application.name].yml,eg:uservice.yaml
无论第一个文件的环境如何变化,第二个文件一定会加载,因此多环境共享配置可以写入这个文件
注意
1、配置开发、测试环境等信息的时候,可以使用编辑配置,就无需改代码,将该微服务的其他实例以不同的环境启动
2、多种配置的优先级
- 服务名-profile.yaml -> 服务名称.yaml -> 本地配置
4、本地练习搭建Nacos集群(了解)
(1)初始化数据库:
- 去nacos的conf文件夹,找到建表sql
- 去数据库建一个nacos的库,并执行建表语句
(2)下载nacos,配置nacos集群
- 找到cluster.conf.example文件,名字修改为cluster.conf
- 配置集群的ip和端口
- 找到application.properties,配置数据源
- 复制三份,并且完成端口配置
- 集群启动,bin目录下cmd,startup.cmd,无需加其他参数
(3)配置nginx
#新加配置
upstream nacos-cluster{
server 127.0.0.1:8845;
server 127.0.0.1:8846;
server 127.0.0.1:8847;
}
server {
listen 80;
server_name localhost;
location /nacos {
root html;
proxy_pass http://nacos-cluster;
}
}
(4)代码跟着修改与nacos的绑定