Nacos配置与使用
前言
注册中心与配置中心
注册中心:
通讯录,让应用之间互相认识
健康检查:心跳功能,如多个应用节点同时提供服务,其中有个节点挂掉了 还不知道;也可以在控台手动操作上线/下线,如当端口18001和18002同时提供服务这时需要更新服务,此时可以下线某个节点,等发布好后的再在控台点击上线,依次更新处理。
路由转发:为了控制成本,会对机器做动态扩容,此时ip就不固定了,可以更好的和gateway配合
远程调用:如在使用feign调用服务之间的接口时,就可以在注解上只写name 不写固定的url
配置中心:
动态修改线上的配置
开关、阈值、枚举项
下载
版本说明
https://sca.aliyun.com/zh-cn/docs/2022.0.0.0/overview/version-explain
版本的选择基于springboot和springcloud的版本
step 1
首先得有java环境jdk8+、maven环境3.2+;
nacos解压到指定盘符,进入盘符,进入conf,修改配置文件application.properties,搜索nacos.core.auth.plugin.nacos.token.secret.key值,默认是空的,请设置
启动服务
进入nacos/bin/目录,启用终端输入命令
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果使用的是ubuntu系统
bash startup.sh -m standalone
Windows
启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
关闭服务
Linux/Unix/Mac
sh shutdown.sh
Windows
shutdown.cmd
或者双击shutdown.cmd运行文件。
step 2
启动好nacos之后,打开浏览器登录控台页面,默认端口8848,账号密码默认nacos
打开项目,在父pom内引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2022.0.0.0-RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
注意版本以你的项目为准
找到具体使用nacos的模块引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<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>
然后在resources下新增配置文件 bootstrap.properties 并打开编辑
# 注册中心的名字
spring.application.name=batch
## 启动环境,nacos会根据环境读不同的配置dataId:batch-dev.properties
spring.profiles.active=dev
## nacos server地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
## 配置中心文件后缀,默认properties
spring.cloud.nacos.config.file-extension=properties
## Nacos配置的命名空间
spring.cloud.nacos.config.namespace=train
## nacos server注册中心地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.namespace=train
step 3
启动好nacos服务后,进入8848登录控台,来到 命名空间 以项目隔离为目的创建各自的命名空间
然后来到 配置管理 这时可以看到 面包屑栏中 public 右侧多了一栏你新建的命名空间 点击创建配置
DataID以 spring.application.name 和 spring.profiles.active 、spring.cloud.nacos.config.file-extension为拼接,根据我上面的配置 结果为 batch-dev.properties
spring.cloud.nacos.discovery.namespace的值就是 命名空间中的id值
配置内容:想要动态修改的配置,如数据库配置
发布配置以后,在需要动态配置内容的类中添加@RefreshScope注解
nacos+gateway路由转发
在gateway的配置文件中,一般情况下路由的方式是ip+端口写死的方式,局限性较大,就像没有替补球员一样,配合nacos可以使用负载均衡+应用名的方式
#spring.cloud.gateway.routes[0].uri=http://127.0.0.1:8001
spring.cloud.gateway.routes[0].uri=lb://member
其中应用名就是 spring.application.name 注册中心的名字,至于这个服务应用是什么ip和端口就不用关心了,nacos会将各个服务列表推到gateway里面来,gateway就可以通过应用名找到该应用的所有节点,然后选择其中的一台发送,默认是轮询交替
gateway不需要配置中心的配置,只需要注册中心的配置
如果出现报错503无法访问,看 pom 中是否引入了下面的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
需要引入负载均衡的依赖
nacos挂了会怎样
不会影响正在运行的服务,每个服务之间都有 nacos 推送的”通讯录“,前提条件是,nacos不能在这些服务启动好之前挂掉,否则这些服务节点启动失败