Nacos

article/2025/8/22 20:05:09

注册发现各种第三方组件的比较介绍:

CAP  C:一致性   A:可用性  P:分区容错性

启动nacos

Linux环境:找到startup.sh,编辑文件将启动模式从集群cluster模式修改为单机模式standalone,如下图

然后执行 startup.sh即可

Windows环境:startup.cmd -m standalone 启动即可

注册发现

spring:application:name: sawarth-systemcloud:nacos:discovery:server-addr: localhost:8848 # 服务注册地址namespace: b0e83780-0d9b-4bee-bc1a-9dd0e499af4f #默认为 publicusername: nacos #默认为nacospassword: nacos #默认为nacosgroup: POWER_STATION_GROUP #默认是DEFAULT-PUBLIC
# 暴露监控端点 给springboot的actuator使用,不配置也可以正常使用nacos实现服务注册
management:endpoints:web:exposure:include: '*'

注意yml配置中的namespace,这个你配置的是那个命名空间,注册的实力就会在那个命名空间中,我配置的不是pulic而是lhb_dev这个命名空间,实例就在这下面,如下图:

下面说明一下yml配置与截图中的对应关系

yml图片
spring.application.name服务名
spring.cloud.nacos.discovery.namespacelhb_dev
spring.cloud.nacos.discovery.group分组名称

备注:lhb_test  lhb_dev  lhb_pro这三个命名空间(所有的命名空间)要自己先体检在控制台建立

配置中心

配置中心三个核心概念讲解:

参考:Redirecting to: https://nacos.io/docs/v2/ecology/use-nacos-with-spring-cloud/

Step1:引入pom依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

Step2:创建bootstrap.yaml文件
 

spring:application:name: sawarth-systemcloud:nacos:discovery:server-addr: localhost:8848 # 服务注册地址namespace: b0e83780-0d9b-4bee-bc1a-9dd0e499af4f #默认为 publicusername: nacos #默认为nacospassword: nacos #默认为nacosgroup: POWER_STATION_GROUP #默认是DEFAULT-PUBLICconfig:# 配置中心地址server-addr: localhost:8848# 配置文件格式file-extension: yml# 共享配置shared-configs:- sufdsou-application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}namespace: b0e83780-0d9b-4bee-bc1a-9dd0e499af4fgroup: POWER_STATION_GROUP
# 暴露监控端点 给springboot的actuator使用,不配置也可以正常使用nacos实现服务注册
management:endpoints:web:exposure:include: '*'

cloud.nacos.config下的配置就是配置中心的内容。这里要注意namespace和group与注册发现的意思是一样的。

Step3:在nacos控制台的配置管理中创建配置信息。

在nacos配置中心创建好这个Data ID为sawarth-system.yml的配置后,程序启动时就会通过一定的规则自动组成一个DataID的名字,然后去nacos中来找。规则如下:

根据这个规则,我们的程序启动时就会从bootstrap.yml中根据规则自动生成对应的Data ID,如:

springboot.application.name = sawarth-system
spring.profiles.active=“”
file-extension=yml
最后就会就会得到sawarth-system.yml这个Data ID,然后去nacos中去找与之相同的的那个DataID中的配置信息。

所以我们程序中必须要正确的配置上面这几个内容,否则Data ID与Nacos中的对应不上就无法获取到对应的配置信息了

Step4:读取naocs中配置的内容

方式一:

public class SystemApplication
{public static void main(String[] args) throws InterruptedException {ConfigurableApplicationContext applicationContext = SpringApplication.run(SystemApplication.class, args);while(true) {//When configurations are refreshed dynamically, they will be updated in the Enviroment, therefore here we retrieve configurations from Environment every other second.String swaggerLicense = applicationContext.getEnvironment().getProperty("swagger.license");System.err.println("swagger license :" + swaggerLicense );TimeUnit.SECONDS.sleep(3);}}
}

方式二:通过controller获取并返回配置信息

public class UserController{@Value("${user.name}")private String userName;@GetMapping("/user")public String getUserName(){return userName;}
}

实战

项目开发中切换dev,test,pro三种不同环境的方案。

方案1:通过DataID来实现
step1:
在nacos的配置管理中分别创建order-service-dev.yml , order-service-test.yml , order-service-pro.yml三个DataID相关的配置

 


step2:

通过修改bootstrap.yml或者application.yml中的spring.profiles.active的值来切换,如下:

spring:profiles:active: dev#active: test#active: pro

step3:在bootstrap.yml中配置nocos

spring:application:name: order-servicecloud:nacos:discovery:server-addr: localhost:8848 # 服务注册地址username: nacos #默认为nacospassword: nacos #默认为nacosconfig:# 配置中心地址server-addr: localhost:8848# 配置文件格式file-extension: yml

根据nacos的client端的DataID自动生成规则${prefix}-${spring.profiles.active}.${file-extension}就会生成一个为order-service-dev.yml的 DataID,然后去nacos控制台中找对应的这个order-service-dev.yml的配置信息,进行使用了。

当我们把spring.profiles.active改为test,那么程序运行时,就会到nacos控制台找order-service-test.yml这个DataID对应的配置信息。从而是写基于DataID的环境切换。

方案2:通过group来实现

step1:

Nacos控制台中创建DataID对应的配置时,Data ID不变,通过修改Group来实现(因为官网说过不同的分组下是可以使用相同的DataID)

step2:修改bootstrap.yml,添加gruop键值对

spring:application:name: order-servicecloud:nacos:discovery:server-addr: localhost:8848 # 服务注册地址username: nacos #默认为nacospassword: nacos #默认为nacosconfig:# 配置中心地址server-addr: localhost:8848# 配置文件格式file-extension: ymlgruop: DEV-GROUP  #如果要切换到TEST-GROUP下,修改这里即可

通过修改group的值,就可以实现环境切换了 

方案3:通过namespace来实现

step1:创建3个命名空间,分别是lhb_dev,lhb_test,lhb_pro

创建好命名空间后,在[配置管理]-[配置列表]和[服务管理]-[服务列表]就会出现,如下:

然后在[配置列表]的每个命名空间下创建名为order-service.yml的DataID的配置项

 step2:在bootstrap.yml中设置namespace属性

spring:application:name: order-servicecloud:nacos:discovery:server-addr: localhost:8848 # 服务注册地址username: nacos #默认为nacospassword: nacos #默认为nacosconfig:# 配置中心地址server-addr: localhost:8848# 配置文件格式file-extension: ymlnamespace: 39f1a970-68b0-46f5-b30e-3b666b125734 #这个号,在创建命名空间后会自动生成。lhb_dev,lhb_test,lhb_pro每个都对应一个,在这里修改即可

然后再bootstrap.yml中通过修改namespace就可以实现环境的切换

Nacos集群

例子中我们使用一个nginx,结构如下,端口我们将3333/4444/5555改为8847/8848/8849 

要搭建集群,官方建议使用Linux并且数据持久化到MySql中

 Step1:Linux下安装Nacos
到官网下载linux版本的nacos(nacos-server-2.0.3.tar.gz),放到linux的/opt目录下。

tar  -zxvf nacos-server-2.0.3.tar.gz解压,解压后/opt目录就会多出解压后的文件。

Step2:修改nacos中的属性文件,设置mysql数据库

Step3:配置nacos中的集群配置文件cluster.conf

如果是三个nacos都在一个linux上,就通过端口来区分启动三个实例,注意定要写ip地址,不能写127.0.0.1或者localhost。如果是nacos分别放到3个linux机器上,端口号写一样的也没事

Step4:编辑nacos启动脚本startup.sh,设置端口号,这样能保证一个linux上启动3个nacos

 添加内容如下:

 

 Step4:测试启动nacos是否好用

./startup.sh -o 8847

./startup.sh -o 8848

./startup.sh -o 8849

启动完成后,可以通过一下命令看一下集群是否全部启动成功,数量为3
ps -ef|grep nacos|grep -v grep | wc -l

Step5:配置nginx

【3】处改成我们的8847,8848,8849 。

【2】处和【3】处配套使用,【2】处相当于进行一个反向代理,将将监听的1111端口对nginx的访问 ,通过反向代理进入到【3】处,然后最后实际调用的是【3】中的地址

Step6:启动nginx

cd /usr/local/nginx/sbin./nginx -c /usr/local/nginx/conf/nginx.conf

Step7:通过浏览器访问nginx来实现访问nacos控制台

http://nginx所在的ip地址:1111/nacos

这样nginx就会自动通过负载均衡去找nacos,打开nacos控制台了。

Step8:配置代码,让代码通过nginx访问nacos

spring:application:name: order-servicecloud:nacos:discovery:server-addr: http://nginx的ip地址:1111 # 服务注册地址username: nacos #默认为nacospassword: nacos #默认为nacosconfig:# 配置中心地址server-addr: http://nginx的ip地址:1111# 配置文件格式file-extension: yml

就是将原先nacos的地址,改为nginx的地址就行,然后通过nginx反向代理到nacos中了。


http://www.hkcw.cn/article/JEDPMXKeLQ.shtml

相关文章

苹果公司计划按年份来重命名重大的软件,将升级iOS 18软件至iOS 26

苹果公司计划从今年开始&#xff0c;所有苹果操作系统将统一采用年份标识&#xff0c;而非此前混乱的版本号体系。苹果将在6月9日的全球开发者大会上正式宣布这一变革。周三截至发稿&#xff0c;苹果股价震荡微涨0.46%&#xff0c;重回3万亿美元市值。 苹果公司正在筹划其操作…

How to Initiate Back-to-Back Write Transactions from Master

Q: How to Initiate Back-to-Back Write Transactions from Master A: following are the modification required at master end to achieve back-to-back transaction driving the VIP: constraint all the master relevant delays to ‘0’ during transaction randomizatio…

纵览网丨新视角下的黑洞探索:传统奇点理论的挑战与未来观测的可能性

纵览网&#xff08;www.zonglan.com&#xff09;在宇宙的浩瀚无垠中&#xff0c;黑洞一直以其神秘莫测的特性吸引着人类的目光。从爱因斯坦的广义相对论到现代天文学的观测成果&#xff0c;黑洞的研究不断取得突破&#xff0c;但同时也伴随着无数未解之谜。其中&#xff0c;传统…

冯彬实现女子铁饼亚锦赛三连冠 中国田径再添辉煌

韩国当地时间5月29日晚,2025年亚洲田径锦标赛结束了第三个比赛日的争夺。女子铁饼决赛中,中国选手冯彬凭借最后一投的61米90顺利夺得金牌,并实现了个人的亚锦赛三连冠。这也是中国田径队连续12届摘得女子铁饼项目的亚锦赛金牌。31岁的冯彬此前曾获得2022年俄勒冈世锦赛金牌和…

4.1.4 基于数据帧做SQL查询

在本节实战中&#xff0c;我们探讨了如何基于Spark DataFrame执行SQL查询。首先&#xff0c;我们学习了如何通过createOrReplaceTempView方法将DataFrame注册为一个临时视图&#xff0c;以便在SQL查询中使用。接着&#xff0c;我们使用spark.sql方法执行了各种SQL查询&#xff…

DUBBO介绍

1.1 DUBBO简介 Dubbo是Alibaba开源的分布式服务框架&#xff0c;致力于提供高性能和透明化的RPC远程服务调用方案&#xff0c;以及SOA服务治理方案。它最大的特点是按照分层的方式来架构&#xff0c;使用这种方式可以使各个层之间解耦合&#xff08;或者最大限度地松耦合&…

这个西部城市登顶全国消费第一城 重庆连续超越上海

这个西部城市登顶全国消费第一城 重庆连续超越上海!重庆的消费数据再次超过了上海。根据重庆市统计局的数据,1-4月,重庆社会消费品零售总额达到5385.43亿元,同比增长4.4%。同期,上海的社会消费品零售总额为5355.46亿元,同比下降0.3%。这意味着重庆成为当前中国消费总额最…

solidworks报错-只有合并特征才能被阵列。如果恰当,请选择实体的阵列

当我想要阵列这个特征的时候出现了如下报错&#xff0c;报错提示我使用实体的阵列&#xff0c;但这明显不合适&#xff0c;因为我在创建特征的时候已经合并了特征所以只有一个实体&#xff0c;有一个不算聪明的解决方法 重新退回特征创建阶段&#xff0c;取消合并结果 这样设计…

【加密社】私钥碰撞工具 最新版

最近有很多朋友问我能不能做一款针对指定地址进行爆破的工具 【指定地址进行碰撞】 当然可以做。 这里要说明的是&#xff0c;私钥碰撞工具的概率是非常非常非常非常小的&#xff0c;几乎无限趋近于0的几率&#xff0c;除非你是天选之子。 &#xff08;但是这里我还是做了一…

基于React和TypeScript的金融市场模拟器开发与模式分析

基于React和TypeScript的金融市场模拟器开发与模式分析 项目概述 本项目开发了一个基于React和TypeScript的金融市场模拟器&#xff0c;通过模拟订单流和价格发现机制&#xff0c;重现了真实市场的动态特性。该模拟器不仅提供了实时价格图表、订单簿和交易功能&#xff0c;还…

进程控制与调度下

内核总控程序返回调度程序 这个点 可剥夺的调度 实现多个进程轮流运行 真正的变发运行 短进程优先问题:后面就是不断来短进程的 长进程就没法运行 优化来了:最高响应比优先法 例子:io等待太久 然后给他cpu 运行完一个时间片 然后降低优先级 给其他进程运行 Linux和window…

高精度厚金 PCB 技术白皮书:参数标准、应用案例及猎板 PCB 解决方案

一、厚金 PCB 线路板技术参数与工艺原理 厚金 PCB 通过脉冲电镀工艺在导体表面形成高纯度金层&#xff0c;核心参数需满足严苛工业标准。以猎板 PCB 的技术方案为例&#xff0c;金层厚度通常控制在 1.2-2.5μm&#xff08;典型值 1.8μm0.15μm&#xff09;&#xff0c;底层沉…

生成式人工智能重塑商业价值:从任务分解到战略跃迁的全景解析

引言 生成式人工智能&#xff08;GenAI&#xff09;正通过任务分解框架重塑商业价值&#xff0c;其核心在于精准定位“增强”与“自动化”的结合点&#xff0c;而非全盘替代人类工作。基于布林乔尔森的经济学模型&#xff0c;企业可拆解岗位任务&#xff0c;评估GenAI在效率提…

数据结构(7)树-二叉树-堆

一、树 1.树的概述 现实生活中可以说处处有树。 在计算机里&#xff0c;有一种数据结构就是像现实中的树一样&#xff0c;有根&#xff0c;有分支&#xff0c;有叶子&#xff1b;一大片树就叫做森林。 这些性质抽象到计算机里也叫树&#xff0c;大致长这个样子&#xff1a; …

MySQL入门笔记

MySQL的逻辑架构 第一层&#xff1a; 处理客户端连接、线程处理、身份验证、确保安全。每一个客户端都会在服务器进程中拥有一个线程&#xff0c;该连接的命令操作都只会在这个单独的线程执行。 第二层&#xff1a; MySQL服务器层。主要分为解析器、优化器。 查询解析、分析…

纤维组织效应偏斜如何影响您的高速设计

随着比特率继续飙升&#xff0c;光纤编织效应 &#xff08;FWE&#xff09; 偏移&#xff0c;也称为玻璃编织偏移 &#xff08;GWS&#xff09;&#xff0c;正变得越来越成为一个问题。今天的 56GB/s 是高速路由器中最先进的&#xff0c;而 112 GB/s 指日可待。而用于个人计算机…

wechat-003-学习笔记

1.路由跳转页面&#xff1a;携带的参数会出现在onlaod中的options中。 注意&#xff1a;原生小程序对路由传参的长度也有限制&#xff0c;过长会被截掉。 2.wx.setNavigationBarTitle(Object object) 动态设置当前页面的标题 3.在根目录中的app.json文件中配置 后台播放音乐的能…

瞬时高温 15 秒合成过渡金属磷化物,开启高效析氢新征程

在碳中和目标的驱动下&#xff0c;开发高效清洁能源技术已成为全球科学界与工业界的共同使命。过渡金属磷化物&#xff08;TMPs&#xff09;因其优异的导电性和催化活性&#xff0c;被视为电解水制氢、燃料电池等能源器件的理想电催化剂。然而&#xff0c;传统合成方法依赖数小…

外贸邮件营销推广怎么做才有效果?

一、精准定位 1.细分客户群体&#xff1a;按客户行业、采购规模、地理位置等划分群体&#xff0c;制定差异化策略。 2.动态内容适配&#xff1a;借助邮件营销工具变量插入功能&#xff0c;依客户信息生成个性化内容。 3.合规性保障&#xff1a;遵守GDPR、CAN-SPAM等国际法规…

c#跨平台桌面地图-mapsui

c#跨平台桌面系统 目前c#的跨平台有几种方式&#xff0c;这里还是以前介绍的Avalonia结合&#xff0c;使用地图&#xff0c;前面已经有一点介绍提供一个加载&#xff0c;但是现在都是发展阶段&#xff0c;版本修改比较大&#xff0c;可能在一段时间后新版的接口就变了&#xf…