一个更易于构建云原生应用的动态服务发现、配置管理和服务管理的平台。注册中心+配置中的组合,支持CP和AP两种模式 默认AP。
从官网下载Nacos并运行,进入bin文件夹通过startup.cmd -m standalone
命令单机(如果不单机启动默认是集群,可能会报错)启动,启动成功后访问http://localhost:8848/nacos/#/login
,账号密码都是nacos
1.父pom文件中指定Spring Cloud Alibaba的版本
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2021.0.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.子pom引入Nacos的依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3.yml文件添加Nacos的配置
server.port=8081
spring.application.name=nacos-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
management.endpoints.web.exposure.include=*
4.主启动类添加注解@EnableDiscoveryClient
5.注册成功后Nacos可以看到服务
可以看到Nacos里面添加了ribbon,而ribbon是支持负载均衡的,可以使用RestTemplate进行访问http://服务名/接口地址
Nocos和SpringCloud Config一样,项目启动的时候要先保证从配置中心拉取配置,拉取配置后项目才能正常启动。
在Spring Boot中bootstrap.yml优先于application.yml
1.添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.主启动类添加注解@EnableDiscoveryClient
3.添加bootstrap.yml
server:
port: 3377
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos作为服务注册中心
config:
server-addr: localhost:8848 #Nacos作为配置中心
file-extension: yaml #指定yaml格式的配置
application:
name: nacos-config-client
4.添加application.yml
spring:
profiles:
active: dev
5.在Nacos中进行配置文件配置
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成
p
r
e
f
i
x
.
{prefix}.
prefix.{file-extension}
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
所以我这里的Data ID为:nacos-config-client-dev.yaml
6.Congroller添加注解@RefreshScope
开启配置自动刷新功能,不需要重启服务,只要修改配置 服务可以自动读取修改后的值。最后启动 通过接口读取config.info
Namespace(默认:public)>Group(默认:Defualut_Group)>Date Id
以上三者加起来才能找到对应的配置文件,例如Date ID完全一样 但是分组或命名空间可以不同。如果需要知道分组或者命名空间:
# 指定分组
spring.cloud.nacos.config.group=DEVELOP_GROUP
# 指定命名空间
spring.cloud.nacos.config.namespace=publice
Nacos支持三种部署模式
1.单机模式 - 用于测试和单机使用
2.集群模式 - 用于生产环境,确保高可用。
3.多集群模式 - 用于多数据中心场景。
默认的Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySql的存储。
Nacos中使用了内嵌数据库(derby)
Windows下Nacos嵌入式数据库derby到mysql切换配置步骤:
1.nacos-server-2.0.2\nacos\conf找到nacos-mysql.sql
脚本文件,创建nacos需要的数据库
2.nacos-server-2.0.2\nacos\conf找到application.properties
配置文件添加mysql配置
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
3.重启Nacos
官网推荐如图,中间的一层可以使用Nginx做负载
1下载Linux版本Nacos解压安装
// 下载
wget https://github.com/alibaba/nacos/releases/download/2.1.0/nacos-server-2.1.0.tar.gz
// 解压
tar -zxvf nacos-server-2.1.0.tar.gz
2.在mysql创建数据库,将/nacos/conf/nacos-mysql.sql
中的脚本执行,创建nacos需要的数据库表
3.修改/nacos/conf/application.properties
配置文件添加mysql配置
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
4.复制/nacos/conf/cluster.conf.example
为cluster.conf
并进行编辑用来整理集群IP和端口,以下IP必须为真实网卡IP,也就是用hostname -i
显示的IP。下面的内容每个Nacos实例都需要配置。如果是本地启动三个实例,端口在nacos\conf\application.properties
中修改
127.168.0.1:8848
127.168.0.2:8848
127.168.0.3:8848
5.启动Nacos sh startup.sh
。
6.Nginx 配置做转发和负载