Bootstrap

Nacos学习笔记

Nacos的优势

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中⼼的现代 应⽤架构 (例如微服务范式、云原⽣范式) 的服务基础设施

• Nacos = Spring Cloud Eureka + Spring Cloud Config

• 服务发现与健康服务检查

• 动态配置管理

• 动态DNS服务

• 服务和元数据管理 nacos 会根据相同的服务名称⾃动做负载均衡,即不同端⼝的同⼀个项⽬就是两 个服务,就会⾃动做负载均衡。

Nacos与其他注册中⼼的对⽐:

Nacos的启动

 通过Github拉取Nacos源码的⽅式启动

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

进⼊C:\***\nacos\distribution\target\nacos-server-2.4.0\nacos\bin⽬录,打开cmd 输入

startup.cmd -m standalone #表⽰单机启动,因为默认是集群启动
#如果懒得加命令可以直接在startup.cmd这个脚本⽂件⾥直接改 MODE的值改为standalone

进⼊给定的url即可进⼊nacos的可视化界⾯

账号密码都是 nacos

Springboot+Nacos做配置中⼼使⽤(Maven管理)

1.⾸先引⼊依赖:

<!-- https://mvnrepository.com/artifact/com.alibaba.boot/nacos-config-spring-
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.7</version>
</dependency>

2.配置application.yaml⽂件,指定nacos服务的地址

3.创建并指定dataId,group,开启reflash(动态配置的关键参数),开启boostrap

 

 4.测试能否读取,在测试类⾥使⽤

成功读取!

SpringCloud+Nacos做配置中心使用

 ⼤致部分和Springboot整合类似,只提⼀些不同点:

a. 使⽤的是@Value⽽不是@NacosValue

b. 可以⽤@RefreshScope指定哪个类使⽤动态刷新配置

c. 配置中通过指定spring.application.name,和dataId对应

SpringCloud+Nacos做服务注册+发现

服务提供⽅Provider

a. 先引⼊依赖

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${latest.version}</version>
</dependency>

b. 和注册中⼼⼀样指定nacos服务的地址

spring.application.name=service-provider #指定你提供的微服务名称
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

 c. 启动类上加上@EnableDiscoveryClient

服务消费⽅Consumer

a. 同样引⼊依赖

<dependency>
<groupId>com.alibaba.cloud</groupId>
1
2
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${latest.version}</version>
</dependency>
<!--如果要做负载均衡还需要引⼊负载均衡器-->
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-clou
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>${latest.version}</version>
</dependency>

 b.配置文件

spring.application.name=service-consumer
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#负载均衡器配置(如果使⽤):
loadbalancer.retry.enabled=true # 启⽤重试机制

 c. 启动类上加上@EnableDiscoveryClient

踩坑记录

注意Springboot版本和Nacos依赖版本的兼容,本⽂所⽤的Springboot是2.6.13版本,与Nacos 的0.2.7冲突,但是与0.2.12兼容,当使⽤0.2.7版本会出现如下错误:(也就是⽆法读取到,导致启动类 启动失败),切回12版本正常使⽤

 官⽹也提供了Nacos-config和springboot以及springcloud的对照表,参照使⽤即可:版本说明

 使⽤注意:

1.配置读取优先级: 从源码可以看出:

 举例: 命令⾏>xxx_dev.properties>xxx.properties>xxx>本地

 2.公用配置的使用

配置⽂件中指定shared-config/extension-config指定⼀个或多个公⽤配置

 同样要注意优先级:

举例:主配置>extension-configs[1]>extension-configs[0]>shared-configs[1]>shared-configs[0]

3.Nacos 1.x和2.x的⼀些区别:

Nacos1.x:实际使⽤的Http 1.1这样的短连接模拟⻓连接,通过每30s发送⼀个⼼跳⽐对配置,⼀致 则保持连接,不⼀致的推给客⼾端最新的配置,TPS(每秒事务数)很⾼。 Nacos2.x:升级为⻓连接模式(gRPC+Rsocket),当服务端的配置变更可以直接推送给客⼾端,使得 通信效率⼤幅提升。⻓连接避免了1.x频繁的连接开销,⼤幅缓解了TIME_WAIT问题

;