下载地址: https://github.com/alibaba/nacos/releases/tag/2.1.0
什么是Nacos
Nacos 由Alibaba开发,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
作为这样的一个平台,核心就是两一个功能,配置管理和服务注册与发现。
现在一般的Spring Cloud生态可以由 服务网关GateWay 、服务注册Nacos、服务配置Nacos、服务调用、OpenFeign、服务降级Hystrix几个部分注册
启动与关闭服务
Nacos默认集群模式,单机测试需加配置
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
Windows
启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
控制台:http://127.0.0.1:8848/nacos/#/login 默认账号密码 naocs
Linux/Unix/Mac
sh shutdown.sh
Windows
cmd shutdown.cmd
组成
Nacos的学习主要围绕着下图进行
SpringBoot快速搭建
环境搭建-依赖
pom.xml
<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-nacos-config</artifactId>
<version>${nacos.version}</version>
</dependency>
<!-- nacos注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${nacos.version}</version>
</dependency>
<!-- feign 服务调用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>${openfeign.version}</version>
</dependency>
环境搭建-application配置
application.yml
# nacos注册中心ip和端口
NACOS_SERVER: localhost:8848
NACOS_NAME: cloud-nacos-provider
NACOS_GROUP: DEFAULT_GROUP
server:
port: 10001
spring:
profiles:
active: dev # 配置文件使用的环境
application:
name: ${NACOS_NAME}
cloud:
nacos:
config:
server-addr: ${NACOS_SERVER} # nacos本地服务器地址
file-extension: yaml # 配置文件的格式,默认properties
group: ${NACOS_GROUP} # 分组,默认DEFAULT_GROUP
# namespace: dev # 使用命名空间
# name: # 设置data-id
discovery:
server-addr: ${NACOS_SERVER} # 配置本地的Nacos服务器地址
group: ${NACOS_GROUP} # 分组,默认DEFAULT_GROUP
# 集群命名空间,一定要写的是命名空间的id ,不是name
# namespace: 102a40ad-3a07-4ae7-8be0-638b8d698fed
Nacos配置文件的核心就是设置config 和 discovery
config用于设置读取配置管理中的配置,由外到内主要就是遵循配置 namespace 、group、 name
假如我们根据配置文件创建了以下配置
如果我们没有主动设置 name(data-id)和 namespace(命名空间) ,那么他自动寻找以下规则
namespace : 默认位public,可在命名空间出设置
dataID : 完整格式 如下
${prefix}-${spring.profiles.active}.${file-extension}
其中 prefix 默认为 spring.application.name 的值,因此dataID 就变成了
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
如果主动设置了 name 即data-id设置好了,读取我们设置的配置,多个文件可以用
cloud:
nacos:
config:
server-addr: ${NACOS_SERVER} # nacos本地服务器地址
file-extension: yaml # 配置文件的格式,默认properties
group: ${NACOS_GROUP} # 分组,默认DEFAULT_GROUP
shared-configs:
- data-id:
环境搭建-启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient //服务注册
@EnableFeignClients //服务发现
public class CloudNacosProviderApplication {
public static void main(String[] args) {
SpringApplication.run(CloudNacosProviderApplication.class, args);
}
}
完成上述步骤,nacos基本就整合完了
配置持久化
nacos默认将数据存在本地文件夹中
我们也可以将数据存在mysql中,配置也很简单
1)新建库表,用它conf目录下的 sql文件即可
2)配置好application.properties
数据库配置一样可以设置集群
高可用集群
为了防止一个nacos崩掉,一般我们会创建三个或以上的nacos作为集群
startup.bat Model默认就是cluster集群模式
注意:配置集群需配置mysql持久化
- 指定下IP ,和端口(8848、8849、8850)
2)将cluster.conf.example改成cluster.conf
配置ip列表
服务器设置下多个地址,逗号隔开
@FeignClient基本使用
在A服务器要掉B服务器的接口,将B服务器接口
入参类型、返回类型、请求地址全路径再加上@FeignClient注解, 就会被Spring依赖注入
@FeignClient(value = "cloud-nacos-provider")
public interface DispatcherService {
@PostMapping("/dispatch/user/saveUser")
ResultEntity<DispatchCenterUserDto> saveUser(@RequestBody SysUserEntity sysUserEntity);
}