目录
前言
1. Nacos注册中心
1.1 引入依赖
<!-- 父工程依赖:spring-cloud-alibaba主版本管理 -->
<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>
<!-- nacos客户端依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
1.2 客户端配置
server:
port: 8095
spring:
datasource:
url: jdbc:mysql://127.0.0.1/db-test?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: root
password: root
application:
name: user-service #user服务的服务名称
cloud:
nacos:
discovery:
server-addr: localhost:8848 #nacos服务地址
1.3. Nacos服务分级存储模型
服务调用尽可能选择本地集群的服务,跨集群调用延迟较高
本地集群不可访问时,才去访问其他集群
1.4 配置集群![](https://img-blog.csdnimg.cn/cca0c2d86beb45e8bd7b28446fe5b12e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6LaK55Sc6LaK6K6p5Lq655Sf55WP,size_20,color_FFFFFF,t_70,g_se,x_16)
1.5 根据集群负载均衡NacosRule
1.6 服务实例的权重
Nacos提供权重配置来控制访问频率,权重越大则访问频率越高;
将权重设为0,可达到用户无感知服务升级;
1.7 环境隔离namespace
nacos控制台: http://localhost:8848/nacos
在nacos控制台上新建命名空间namespace获得唯一id,再配置到代码中;
不同namespace下的服务不可见;
1.8 Nacos注册中心细节分析(与eureka的不同)
1、nacos与eureka的共同点
都支持服务注册和服务拉取
都支持服务提供者心跳方式做健康检测
2、nacos与eureka的区别
nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式;临时实例心跳不正常会被剔除,非临时实例不会;
nacos支持服务列表变更的消息推送模式,服务列表更新更及时;
nacos集群默认采用AP方式,当集群存在非临时实例时,采用CP模式;eureka采用AP方式;
1.9 临时实例与非临时实例区别
根据上上图可以看出:
临时实例宕机时,会从nacos的服务列表中删除,而非临时实例不会,且nacos会主动询问非临时实例是否存活;
2. nacos统一配置管理
2.1 nacos实现配置管理
在nacos控制台中,新建配置:
Data ID:我们本地的配置文件都叫application.yml,如果nacos中都叫这个则不利于维护;所以data-id的命名规则为:服务名-环境.yaml;
2.2 统一配置管理
项目启动时,我们需要去哪里读取哪个环境的配置文件;所以需要在bootstrap.xml中指定;
2.3 配置自动刷新
nacos配置更改后,微服务可以实现热更新方式:
1、通过@Value注解注入,结合@RefreshScope来刷新
2、通过@ConfigurationProperties注入,自动刷新
注意事项:
不是所有的配置都适合放到配置中心,维护起来比较麻烦
2.4 多环境共享配置
多种配置的优先级: