运行环境:linux + jdk 17+nacos 2.2.3
1.nacos是什么
Nacos是阿里巴巴开源的服务注册中心以及配置中心,Nacos干掉了Spring Cloud的三大组件,分别是注册中心Eureka
、服务配置Config
,服务总线Bus
。
2.Nacos主要提供以下四大功能
1.服务发现和服务健康监测
Nacos 使服务更容易注册,并通过DNS或HTTP接口发现其他服务,Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。
2.动态配置服务
动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置。Nacos消除了在更新配置时重新部署应用程序,这使配置的更改更加高效和灵活。
3.动态 DNS 服务
Nacos提供基于DNS协议的服务发现能力,旨在支持异构语言的服务发现,支持将注册在Nacos上的服务以域名的方式暴露端点,让三方应用方便查阅及发现。
4.服务及其元数据管理
Nacos能让您从微服务平台建设的视觉管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略。
3.nacos如何下载以及部署
1.下载地址:https://github.com/alibaba/nacos/releases/tag/2.2.3
2.将下载好的压缩包放到Linux中并解压到/usr/local目录中
tar -zxvf nacos-server-2.2.3.tar.gz -C /usr/local
3.启动nacos
进入 /usr/local/nacos/bin 目录中
#启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
4.查看是否存在nacos-server
5.请求http://nacos所在的地址:8848/nacos查看是否可以进入
进入成功后输入用户名和密码默认都为:nacos
4.Nacos的数据持久化
1.初始化数据库
1.Nacos的数据库脚本文件在我们下载Nacos-server时的压缩包中就有, 先进入\nacos\conf
目录进入初始化文件:mysql-schema.sql复制其中的sql语句.
2.在mysql数据库中创建一个名为 mynacos
的数据库,然后将复制的sql语句粘贴在其中进行获得的初始化脚本,然后执行成功后会生成 11
张表.
2.修改nacos的配置文件
1.配置文件在nacos\conf目录下,名为 application.properties,在文件底部添加数据源配置:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1(自己的数据库地址):3306(自己的数据库端口)/mynacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456(自己的数据库密码)
2.或者取消application.properties文件中本就存在的注解,然后将mysq地址和密码更改为自己的
3.查看是否持久化成功
1.重启nacos使配置生效
2.在nacos的命名空间中新建几个命名空间然后重启nacos查看是否还存在,或者直接查看mysql数据库中是否多出了一些数据
5.nacos服务器启动时各种报错总结与解决方法
1.内存不足
如果在启动时出现内存不足的错误提示,可能是因为Nacos所需的内存超出了系统可用内存。解决此问题的办法是增加系统的内存容量,或调整Nacos的JVM参数以降低内存占用。
2.端口占用
如果在启动时出现端口被占用的提示,通常是因为Nacos的默认端口8848已被其他程序占用。解决此问题的方法包括:识别并关闭占用该端口的应用程序,或者修改Nacos的运行端口设置。
3.数据库连接失败
如果在启动时出现数据库连接失败的错误提示,可能是因为Nacos无法成功连接到指定的数据库。为了解决这个问题,可以检查nacos\conf目录下名为 application.properties配置文件中的数据库连接信息是否准确,并确认数据库服务器是否正常运行。
4.配置文件错误
如果在启动时出现配置文件错误的提示,通常是由于Nacos的配置文件格式不正确或缺少必需的配置项。为了解决此问题,可以检查并修正配置文件。
5.服务依赖问题
如果启动时报错提示缺少某个服务,可能是因为Nacos依赖的某个服务没有正确安装或启动。解决方法是检查并启动所有必要的依赖服务。
以上是几种常见的Nacos启动错误及其潜在的解决方案。具体的问题应根据实际的错误信息进行详细分析之后再进行处理。