nacos因为eureka停止更新,而nacos既可以作为注册中心又可以作为配置中心,是个相当不错的代替品.
介绍
Nacos是阿里巴巴的开源项目,支持服务发现和服务健康监测、动态配置服务等,相当于Eureka+Spring Cloud Config。Eureka支持支持AP模式,而Nacos支持AP和CP模式两种模式。
下载:
文档写作于2022年4月7日 14:23:45
因为最新的2.10.0BETA下载后在本地运行报错跑不动,所以选择了稳定版本2.0.4
下载地址
https://github.com/alibaba/nacos/releases/tag/2.0.4
下载完解压缩
解压后如图所示
文件夹介绍
bin里面是启动和关闭nacos命令文件;
conf存储的nacos相关的配置文件;
logs日志信息
target里有一个springboot的jar包
打开数据库连接工具
例如
连接本地或者服务器端mysql数据库
(前置条件:在此之前应该配置好相关的数据库管理员账号/密码,远程登录服务器应该开启mysql远程登录权限,端口放行等.)
Nacos
解压缩之后,在conf目录中会发现存在一个nacos-mysql.sql文件;
(如果公司的团队Leader有其他sql文件,以Leader提供的为准.)
本地创建mysql数据库nacos(这次采用提供Leader提供的模板命名为zuihou_nacos_121)
CREATE DATABASE IF NOT EXISTS zuihou_nacos_121
CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
执行完SQL脚本之后,会创建以上表;
修改nacos解压目录下的conf/路径下的配置文件application.properties
将下图中的数据库配置注释放开,同时修改数据库账户和密码;此中的数据库nacos与步骤3中建立的数据库名保持一致;
示例截图
启动bin文件夹内的cmd指令
(如何在右键菜单里添加cmd快捷指令可以百度,以后会经常用到.)
输入单机模式启动指令
startup.cmd -m standalone
一般出现这些提示就启动成功了.
然后访问
http://127.0.0.1:8848/nacos/#/login
账号和密码都是nacos
登录
出现下图管理页面就算成功.
Nacos服务端部署完成,现在来写个demo来测试注册服务.
使用idea建立一个spring-cloud项目.
这里组名和包名随意,毕竟只是测试项目
然后在父项目的pom.xml里额外引入阿里巴巴的spring cloud依赖
注意,springcould.alibaba依赖和spring-boot以及spring-cloud有严格的版本对照依赖关系,我这里用的springboot2.6.7版本,对应的alibaba依赖版本为
<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>
该依赖建议放入父级项目的<_dependencyManagement>标签内,作为总版本控制._
然后导入nacos依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.1</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.1</version>
</dependency>
在项目中为application文件加入@EnableDiscoveryClient注解
修改子项目的application.properties文件
添加一下示例属性(可以依照实际需求修改)
server.port=8081
#此处修改端口是为了避免多个tomcat冲突.
spring.application.name=Buybuybuy
spring.cloud.nacos.discovery.server-addr=192.168.2.49:8848
#这里ip请按照实际需求输入management.endpoints.web.exposure.include=*
spring.cloud.nacos.username=nacos
spring.cloud.nacos.password=nacos
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
spring.cloud.nacos.discovery.namespace=public**
启动项目,看到注册提示
打开管理中心
发现注册完成.