1.Nacos简介
2018年6月, Eureka 2.0宣布闭源(但是1.X版本仍然为活跃项目), 同年7⽉份, 阿⾥Nacos宣布开源. 并快速成为国内最受关注开源产品. 作为Eureka的替代, Nacos已经成为了国内开发者的首选, 目前NacosStar 已经突破28K(Eureka 12K)
Nacos (Dynamic Naming and Configuration Service)
在最初开源时,Nacos选择进行内部三个产品合并统一开源(Configserver 非持久注册中心,VIPServer持久化注册中心,Diamond 配置中心).定位为:一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台.所以Nacos是一个注册中心组件,但它又不仅仅是注册中心组件。截至目前,Nacos几乎支持了所有的主流语言,比如 Java,Go,C++,Nodejs,Python,Scala等 。
2.Nacos安装
学习阶段采用单机版安装即可,以下内容都是单机版。
2.1 Windows环境安装
1 下载Nacos安装包
目前官方推荐的稳定版本为2.2.2,所以可以安装2.2.3
下载Nacos安装包地址:Release 2.2.3 (May 25th, 2023) · alibaba/nacos · GitHub
根据自己电脑可以解压缩的格式去选择画红框中的一个压缩包即可,我选择的是.zip格式的压缩包
此时,将压缩包解压到一个非中文的路径下,压缩完毕后,在安装包的同级路劲下就会增加一个个同名的文件,在这个同名的文件下就有一个名字为nacos的文件,如下图
进入nacos文件,就可以看到几个文件
目录介绍:
bin:Nacos的启动脚本,bin文件夹里面有一个文件,如下图
conf文件:Nacos的配置文件
target:存放Nacos应用的jar包
2 修改Nacos的默认启动模式
因为Nacos的默认启动方式是集群模式,启动前我们要修改配置为单机模式。
进入bin文件夹,用记事本或者其他方式打开startup.cmd文件,找到下图中的部分,将MODE的value修改为standalone,如下图
3启动Nacos
启动Nacos很简单,双击startup.cmd文件即可,如果出现下面图片的情况就表示Nacos安装成功了。
接着就能通过ip+端口号/nacos的方式去访问Nacos的主页了,如下图
Nacos默认的端口号为8848
启动Nacos时出现端口号8848冲突怎么办?
如果你按照上面的操作已经成功运行Nacos了,这里就不用看了,
很简单,先打开cmd,输入一下命令去查找端口号为8848的进程,win+R打开输入框,输入cmd,然后点击确定
接着在黑框框中输入一下的命令
netstat -ano | findstr "8848"
如果有端口号的进程,就会有下图的结果,如果存在该进程,则会有下图的效果,如果没有该进程,则不会显示任何东西
注意:这里我查询的是端口号为10020的进程,大家根据自己的需求去查询即可
接着输入下面的命令结束掉该进程
taskkill /pid 8848 -f
注意:这里的8848看自己的情况来填写,不是固定的,启动Nacos时是哪一个端口号冲突,就将8848换成对应的端口号。
最后去Nacos的配置文件中修改器默认的端口号即可
第一步,如下图
然后,在application.properties文价中找到下图画红框的部分,大约在第23行,记住修改完记得Ctrl键+s保存再退出application.properties文价
到这里应该Nacos就应该都安装成功了
2.2 Linux环境安装
1.准备安装包
将刚才下载的压缩包提前上传到云服务器上的任意一个路劲,然后再该目录输入下面的命令对压缩包进行解压
unzip nacos-server-2.2.3.zip
如果第一次在云服务器中解压文件,首先要输入一下命令安装解压指令
apt-get install unzip
2.单机模式启动
进入bin文夹,如果云服务器是Ubuntu环境下,则输入一下命令启动nacos即可
bash startup.sh -m standalone
成功启动Nacos之后,通过服务器的ip:8848/nacos去浏览器访问Nacos的主页,如果能成功访问,则代表Nacos安装成功
3.Nacos的快速上手
Nacos是Spring Cloud Alibaba的组件, Spring Cloud Alibaba遵循Spring Cloud中定义的服务注册和服务发现规范,因此使用Nacos和使用Eureka对于微服务来说,并没有太大区别。
主要差异在于:
1.Eureka需要自己搭建一个服务,Nacos不用自己搭建服务,组件已经准备好了,只需启动即可
2.对应的依赖和配置不同
3.1 父工程
引入Spring Cloud Alibaba依赖
在父工程的pom文件中的<dependencyManagement>中引入Spring Cloud Alibaba的依赖
<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>
然后在父工程中的<properties>引入对应的版本号
<spring-cloud-alibaba.version>2022.0.0.0-RC2</spring-cloud-alibaba.version>
注意事项:Spring Boot和Spring Cloud的版本是有一定对应关系的,Spring Cloud Alibaba也遵循Spring Cloud的标准,在引入依赖时,一定要确认各个版本的对应关系
Spring Cloud Alibaba和Spring Cloud版本对应关系,参考官方文档
版本发布说明-阿里云Spring Cloud Alibaba官网
3.2 子工程
1.在子工程中引入相关的依赖
在子工程中引入Nacos的依赖和Load Balance
引入nacos的依赖,如下面就是nacos的依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
引入Load Balance的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
2.在子工程中添加相关的配置
在子工程的配置文件中添加以下配置
如果是在自己的机器上使用Nacos,则server-addr:127.0.0.1:自己的端口号
3.远程调用
1. 修改IP为项目名
2.为restTmplate添加负载均衡
4.启动服务
当我们启动子工程服务,观察Nacos的主界面发现,启动的服务就会注册到Nacos中了。
访问订单服务,发现成功访问
测试负载均衡,发现负载均衡也测试成功
4.拓展部分
如果使用Java代码连接的是自己云服务器上的Nacos,不是本机上的Nacos可能会出现下图的报错
此时继续往下翻错误日志,找到下图部分
这部分有一个port xxxxx is available的提示,接着去自己的云服器去开放这个xxx端口号即可