nacos的使用
nacos的使用
1. nacos可以作为注册中心和配置中心
使用nacos的配置中心和注册中心的话,我们需要在配置文件中增加关于nacos的配置
namespace,group可以不写,那么就是注册到默认的namespace和group下,不同namespace和group下是隔离开来的
2. 如果我们只是想要注册到nacos上的话,我们只需要导入nacos的注册中心依赖,以及nacos的负载均衡器依赖即可,然后配置文件中我们只需要添加关于nacos注册中心的配置即可
启动类上还需要添加nacos的注解:@EnableDiscoveryClient

如果我们想使用nacos的配置中心的话,我们需要导入nacos配置中心的依赖包,以及优先加载bootstrap文件的依赖包(bootstrap.yml:启动配置文件)
3. 将服务启动的时候,通过nacos页面直接查看服务列表,那么该服务就会回显到服务列表中
4. 在nacos上还有group和namespace的概念,比如,我们可以通过不同的namespace放置不同的项目,我们可以通过namespace下的group组的概念,将不同的开发幻境的配置放置到不同的组下
5. 关于springcloud中配置文件的加载顺序:启动先加载bootstrap.yml,然后再加载application.yml文件,最后根据匹配到的数据去配置中心读取所指向的配置
关于springboot中配置文件的加载顺序:先加载application,然后根据application指定的环境加载application-环境的配置文件
6. 在bootstrap.yml文件中添加配置下图配置信息,关于一些普通配置,比如数据库库连接池的配置或者一些redis的配置,我们可以放置到nacos配置中上去
7. nacos关于配置文件的命令是有一定的规范的:${prefix}-${spring.profile.active}-${file-extension}
prefix:一般默认就是当前服务的服务名称,spring.profile.active:就是我们的application.yml中指定的,是开发环境还是生产环境 file-extension:就是当前文件的格式,目前只支持properties和yml
nacos首先通过我们bootstrap.yml中spring.application.name的值拼接applictation.yml的环境(dev),然后拼接我们bootstrap.yml中nacos.config.file-extension的值(yml)然后找到nacos上的配置文件的
8. 如果你想要读取配置文件中的某些信息,可以在指定需要这些信息的类中,通过@Value("${dk.upload.image}")就可以拿到相应的值
9. 关于nacos自动刷新配置:如果你不想要每次在nacox配置文件上更改,都要重启对应的服务,那么可以在这个服务上面添加@RefreshScope //自动刷新配置注解
所以,在我们平时的开发中,我们可以将不同的项目在nacos上创建对应的namespace,然后根据该项目下不同的部门配置不同的group,再针对于不同的开发环境我们可以指定配置不同环境下的配置信息,不同的项目之间的namespace不同且group不同,可以互相隔离,方便我们平时对项目的管理,另一点就是我们nacos配置中心上的配置信息我们修改了可以不停止项目,通过在启动类上添加注解@RefreshScopr,就可以自动刷新配置
10. nacos是自带持久化功能的,在nacos的安装文件夹下有一个derby-data文件,这是nacos自带的数据库,保存我们nacos的数据,但是对于我们nacos如果做集群的话,每个nacos中都有其自身的数据库,那么我们对应nacos上只会保留其自己的数据,我们没有办法做数据共享了,所以我们集群的数据我们需要使用同一份数据源,那么我们需要使用自己的mysql来作为数据源了
我们在搭建nacos的时候数据源一定要提前切换好,如果是单机的话基本没啥影响,如果我们是搭建集群的话,需要提前切换我们mysql的数据源
nacos搭建集群
1. 首先我们集群一般都是启动奇数台nacos,好处就是防止脑裂----就是防止选举的时候,剩余节点选举的时候如果票数相同就会产生脑裂(主从架构模式情况下)
2. 搭建步骤:在linux系统下
创建nacos文件夹:mkdir nacos
解压我们的nacos压缩包:tar -zxvf 包名 关于我们linux解压:tar -zxvf-----x:解压 如果是c的话就是压缩 v:展示详细信息
3. 进入nacos的conf文件夹下,编辑我们的application.properties文件,修改端口,因为是搭建集群,所以我们需要统一配置数据源,也就是我们统一访问mysql,目前nacos也仅支持mysql
4.复制三分解压后的nacos(使用cp -r 文件夹名字)
5. 复制后的另外两份nacos文件夹也需要修改配置以及端口号
6. 然后进入nacos下的conf文件夹,先复制一份cluster.conf.example并重命名为cluster.conf,然后编辑cluster.conf,里面配置的就是我们集群信息,也就是我们三个集群的ip+端口号
7. 每一份nacos中都需要复制cluster.conf.example,并且更改
8. 如果是服务器内存比较大的话,到这一步就可以直接启动了,如果服务器小的话,就走下面步骤
9. 修改每一个nacos中bin目录下的startup.sh中的下面配置,改小一点
10. 然后启动nacos集群
./nacos/bin/startup.sh
./nacos2/bin/startup.sh
./nacos3/bin/startup.sh
补充:查看nacos进程命令
ps -ef | grep nacos
11. 我们可以使用nginx进行方向代理:修改nginx.conf文件
upstream nacos.cluster { #服务器集群的名字
server 127.0.0.1:8847;
server 127.0.0.1:8848;
server 127.0.0.1:8849;
}
location / {
#root html;
#index index.html index.htm;
proxy_pass http://nacos.cluster;
}
#服务器代理的路径一定要和upstream中服务器集群的名字保持一致
12. 启动nginx
13. 访问集群:http://192.168.43.10/nacos.cluster
14.
将 地址换成nginx的即可
cloud:
nacos:
discovery:
server-addr: 192.168.43.10:80
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了