1.Nacos 的安装使用。
nacos的安装步骤
1.端口配置
Nacos的默认端口是8848,如果你电脑上的其它进程占用了8848端口,请先尝试关闭该进程。
如果无法关闭占用8848端口的进程,也可以进入nacos的conf目录,修改配置文件中的端口:.
修改其中的内容:
2.启动
在解压的位置输入cmd,定位到bin目录下,然后执行 startup.cmd -m standalone
黑窗口代码
登录Nacos 默认账号密码都是nacos
3.在父工程中添加spring-cloud-alilbaba的管理依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
注:注释掉order-service和user-service中原有的eureka依赖。
4.子模块添加nacos的客户端依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
5.修改子模块中的application.yml文件,注释eureka地址,添加nacos地址
6.启动并测试
naacos 就配置并启动成功了。
Nacos服务分级存储模型
服务集群的配置
修改application.yml,添加如下内容:
# 集群
discovery:
#集群名称
cluster-name: sc
#id
namespace: 0fd0dd9c-0e40-4bb4-ba90-ef4966ee9036
NacosRule负载均衡
默认的`ZoneAvoidanceRule`并不能实现根据同集群优先来实现负载均衡。
因此Nacos中提供了一个`NacosRule`的实现,可以优先从同集群中挑选。
NacosRule负载均衡策略的优点
1.优先选择统同集群服务实例列表
2.本地集群找不到提供者,才会去其它集群寻找,并且会警告
3.确定了实例列表后,再采用随机负载均衡挑选实例
给子模块配置集群信息
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ # 集群名称
修改负载均衡规则
修改子模型的application.yml文件,修改负载均衡规则
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
新建命名空间
注:默认的是public(保留空间)
1.在Nacos控制台可以创建namespace,用来隔离不同环境 (物理隔离)
2. 然后填写一个新的命名空间信息:
3.保存后会在控制台看到这个命名空间的id:
4.修改子模块的application.yml,添加namespace:
namespace: 0fd0dd9c-0e40-4bb4-ba90-ef4966ee9036 //id和命名空间id一至
这样就配置完成了。
Nacos配置管理
一.统一配置管理
Nacos除了可以做注册中心,同样可以做配置管理来使用
配置中心步骤
1、在nacos中添加配置文件
2.在弹出表单中填写配置信息:
3.从微服务拉取配置
流程图
1.引入nacos-config依赖
首先,在子模块的服务中,引入nacos-config的客户端依赖:
<!--nacos配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2. 添加bootstrap.yaml
其实bootstrap 文件中代码和nasoc中的服务名称一至
spring:
application:
name: userservice # 服务名称
profiles:
active: dev #开发环境,这里是dev
cloud:
nacos:
server-addr: localhost:8848 # Nacos地址
config:
file-extension: yaml # 文件后缀名
//如果使用了物理隔离就要加上namespace 和ID
# namespace: 0fd0dd9c-0e40-4bb4-ba90-ef4966ee9036
读取nacos配置
在子模块中的逻辑层中添加业务逻辑,读取pattern.dateformat配置:
读取nacos配置 方式一
在@Value注入的变量所在类上添加注解@RefreshScope:
读取nacos配置 方式二
使用@ConfigurationProperties注解代替@Value注解
@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateformat;
}
在子模块中使用这个类代替@Value: