Nacos配置与使用

EngJ.K2023-01-24后端Java Nacos SpringBoot

前言

注册中心与配置中心

注册中心:

通讯录,让应用之间互相认识

健康检查:心跳功能,如多个应用节点同时提供服务,其中有个节点挂掉了 还不知道;也可以在控台手动操作上线/下线,如当端口18001和18002同时提供服务这时需要更新服务,此时可以下线某个节点,等发布好后的再在控台点击上线,依次更新处理。

路由转发:为了控制成本,会对机器做动态扩容,此时ip就不固定了,可以更好的和gateway配合

远程调用:如在使用feign调用服务之间的接口时,就可以在注解上只写name 不写固定的url

配置中心:

动态修改线上的配置

开关、阈值、枚举项

下载

Githubopen in new window

版本说明

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不能在这些服务启动好之前挂掉,否则这些服务节点启动失败

Last Updated 4/14/2024, 12:49:58 PM