基础环境
此处采用cloud的Hoxton.SR12版本,对应使用Spring Boot 的2.3.12.RELEASE版本,cloud alibaba的2.2.7.RELEASE版本 ,此版本cloud alibaba对应的nacos为2.0.3版本,更多版本对应信息可以上github的cloud alibaba观看说明
链接 版本说明 · alibaba/spring-cloud-alibaba Wiki (github.com)
1.nacos下载
打开github搜索nacos,alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. (github.com)点击tags找到对应版本
点击download下载,此处用windows演示,下载zip压缩文件(源码文件需要自己打包后才能使用)linux可下载tar.zip上传后使用命令tar -zxvf 文件名 进行解压
下载后解压并打开bin文件夹
两种运行方式
1.在此文件夹打开控制台,windows运行./startup.cmd -m standalone命令
linux执行命令./startup.sh -m standalone (-m standalone表示以单机模式启动)
2.双击startup.cmd运行(适用于windows),但是由于nacos默认是以集群方式启动,启动时nacos会去寻找集群,但是寻找不到就会启动失败,我们需要将启动模式更改为单机模式,此时我们可以用编辑器打开startup.cmd文件,搜索mode
将Mode改为standalone并保存
此时我们双击startup.cmd启动nacos成功运行并打印“nacos is starting with standalone”
根据nacos提示我们打开nacos的页面http://localhost:8848/nacos,此处账号密码均为nacos
进入nacos首页,默认命名空间(简单理解为项目之间的隔离,不同的命令空间的服务不能相互调用)为public
2.开发springboot服务并注册进nacos
首先新建springboot项目,添加依赖
//指定cloud alibaba版本
<properties>
<java.version>1.8</java.version>
<spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version>
</properties>
//管理cloud alibaba版本
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
//此处为nacos真正的依赖,由于制定了cloudalibaba的版本,因此我们不用特定寻找指定nacos的版本
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
编写controller(非必要)peizh
/**
* @Author: 十里桃林
* @Date: 2023/1/8
* @Time: 21:53
* @Description:
*/
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(){
return "hello nacos";
}
}
配置文件中设置服务名(必要步骤,注册到nacos后,nacos以服务名作为区分) ,设置nacos的连接地址
#服务名设置
spring.application.name=nacos-test
#端口设置
server.port=8081
#nacos服务中心的地址
spring.cloud.nacos.server-addr=http://localhost:8848/
#nacos服务发现注册地址,默认取值${spring.cloud.nacos.server-addr}
spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr}
启动类加
上注解@EnableDiscoveryClient,表示开启服务发现客户端功能
最后启动项目,提示我们服务nacos-test注册之nacos已完成,默认注册到的分组为default_group
我们进入nacos服务管理页面刷新,可以发现服务确实已经注册成功,并且服务名为我们配置文件中设置的nacos-test,默认命名空间public,默认分组default_group
最后测试项目是否可以正常访问,localhost:8080/hello
3.最后介绍几个nacos服务发现常见的配置(为了方便换成了properties)
#服务名设置
spring.application.name=nacos-test
#nacos服务中心的地址
spring.cloud.nacos.server-addr=http://localhost:8848/
#nacos服务发现地址,默认取值${spring.cloud.nacos.server-addr}
spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr}
#此处默认取值为${spring.application.name},自动取服务名作为nacos中的服务名
spring.cloud.nacos.discovery.service=nacos-test
#是否开启nacos服务发现功能,默认开启
spring.cloud.nacos.discovery.enabled=true
#分组设置,默认即DEFAULT_GROUP
spring.cloud.nacos.discovery.group=DEFAULT_GROUP
#命名空间设置,默认public
spring.cloud.nacos.discovery.namespace=public
#该服务向nacos服务端发送心跳的间隔,单位为毫秒,默认30秒(用以监听服务是否还存活)
spring.cloud.nacos.discovery.heart-beat-interval=1000
#该服务在停止向nacos发送心跳后,服务状态从健康到不健康的时间
spring.cloud.nacos.discovery.heart-beat-timeout=3000
注意心跳时间需要小于超时时间,否则将会抛出异常