1. Nacos简介
nacos
是
spring cloud alibaba
生态中非常重要的一个组件,它有两个作用:
1)
注册与发现中心;
2)
配置
中心
nacos
有注册中心的作用,我们常见的配置中心还有
zk
和
eureka
官网:
https://nacos.io/zh-cn/index.html
微服务 cap 原则:1 、 C(consistency): 一致性,同一时刻的同一请求的实例返回结果相同,属于强一致性性,也就是说,在集群环境中,对外提供的服务信息是完全一致的,但是在效率上面可能会有一定的损耗;2 、 A(availability): 可用性,所有实例的读写请求在一定的时间内可以得到正确的响应,它是弱一致性,可能在极短的时间内,不同实例获取到的信息是不一致的,但是服务可用并且最终数据是一致的;3 、 P(Partition tolerance): 分区容错性,在网络异常的情况下,仍旧能够提供正常的响应,这是在微服务系统中必须要保证的;

nacos
在启动时,默认是
AP
模式,可以通过指令将
nacos
变为
CP
模式,在我们经常使用的微服务中,我
们是选择使用
AP
模式的,此时的所有实例都属于临时实例。临时实例和持久实例最显著的区别就是在健
康检查发现服务有问题时,持久实例被标注为不健康,而临时实例会直接剔除。
2. nacos基本使用
nacos
大体分为两部分:
nacos
服务端和
nacos
客户端,首先是
nacos
服务端 ,这一部分是不需要做任
何改动,直接启动服务即可。有两种方式,一种是直接下载打包好的服务,直接通过命令运行即可;一
种是下载
nacos
源码,然后进行启动(
nacos
是普通的
spring boot
项目)。
1.直接下载打包服务
下载完毕以后进行解压(不要有中文路径),进入到
bin
目录

命令启动:
windows
.\startup.cmd -m standalone 后缀 standalone 指的是以单例的方式进行启动
输入路径
2.源码方式启动
下载源码
https://github.com/alibaba/nacos
导入
idea
中。
启动类在
console
子项目中

编译启动即可。
3.创建nacos客户端
idea
创建
springboot
项目。
引入
jar
文件
<spring-cloud-alibaba-version>2.1.3.RELEASE</spring-cloud-alibaba-version>
<!--引入nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-alibaba-version}</version>
</dependency>
boot版本7.6引入nacos2021.0.5.0,alibaba2021.0.5
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.0.5.0</version>
</dependency>
启动类添加注解

application.yml
进行配置
spring :application :name : nacos-provider1cloud :nacos :discovery :# 注册中心地址server-addr : 127.0.0.1 : 8848server :port : 8081
启动项目

alibaba
与
boot
对应版本

3.nacos集群配置
Nacos
集群默认最小要有三个节点,而且三个节点的配置中心的数据都需要存储在
MySQL
数据库中。
在
mysql
中创建数据库
nacos
,并在
nacos
的
conf
目录下找到
nacos-mysql.sql
文件导入数据库



在
conf
目录下,修改文件名
cluster.conf.example
为
cluster.conf

编辑文件信息如下:
IP(
可使用
ipconfig
查看自己的
IP
地址
)+
端口号
192.168.252.1:3333192.168.252.1:4444192.168.252.1:5555
注意:端口号不要连续,如
8081
,
8082
,
8083
。连续端口会报错。
复制
nacos
文件夹复制两份(
nacos
最小
3
个节点)

修改
nacos2
端口为
4444
,修改
nacos3
端口为
5555
依次启动
nacos1
,
nacos2
,
nacos3
进入
bin
目录下,双击启动
startup.cmd
(默认以集群模式启动)

注意:切记不要使用
.\startup.cmd -m standalone
启动,需要以
cluster
模式启动。

输入地址(
IP+
端口号)
http://192.168.252.1:5555/nacos/index.html
http://192.168.252.1:4444/nacos/index.html
http://192.168.252.1:3333/nacos/index.html
密码账号都是
nacos/nacos
登录
点击集群查看是否配置成功

启动
IDEA
项目注册服务(会发现
3
个
nacos
同步服务)
4.nacos负载均衡
nacos
实现负载均衡是通过内置的
Ribbon
实现的。默认的负载均衡策略是使用的
Ribbon
中的默认策略
——
轮询。
创建项目
provider01
,配置如下

创建项目
provider02
,配置如下

注意:服务名相同
创建
consumer01
,配置如下,使用
rpc
调用服务

5.nacos配置中心
nacos
同
spring-cloud-config
一样,可以作为一个配置中心,统一的来管理配置,可以配置多套环境,
各个微服务可以按需到
nacos
配置中心拉取相关配置,
且支持动态刷新
@RefreshScope
1. 进入nacos控制台创建命名空间

注意:命名空间以后在开发中可以区分为 开发、测试、生产 等环境。
2. 在cs命名空间下 创建yaml文件

3. 创建项目alibaba-config项目
4. 引入pom文件
<!--为了测试使用spring注解引入-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacosdiscovery</artifactId>
<version>${spring-cloud-alibaba-version}</version>
</dependency>
<!--nacos配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacosconfig</artifactId>
<version>${spring-cloud-alibaba-version}</version>
</dependency>
5. 创建bootstrap.yml

注意: 使用
nacos
作为配置中心时,需要创建一个
bootstrap.yaml
和
application.yaml
两个配置文件,
bootstrap.yaml
的优先级高于
application.yaml
,加载时实现加载
bootstrap.yaml
中的相关配置
6. 创建NacosConfigController测试
