Spring Cloud Nacos

一、Nacos的安装:

常见的问题:

①Nacos的默认启动方式为集群,要把它改为单机模式(set MODE=“standalone”)

②端口号冲突:

1)关闭8848端口号

2)修改nacos的端口号

二、Linux中安装nacos

1、下载  解压

2、如果需要,修改端口号

3、启动nacos (bash startup.sh -m standalone)

4、开放原服务器的端口号(8848或者修改后的端口号)

5、访问

三、nacos的使用

1、在⽗⼯程的pom⽂件中的 <dependencyManagement> 中引⼊Spring Cloud Alibaba的依赖:

<properties>
<spring-cloud-alibaba.version>2022.0.0.0-RC2</spring-cloud-alibaba.version>
</properties>
<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>

2、在order-service和product-service中引⼊nacos依赖

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

3、引⼊Load Balance依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>

4、配置Nacos地址

5、远程调用

6、测试

四、Nacos的负载均衡

1、服务下线:

点击下线后, 再次请求接⼝, 会发现该服务没有请求进来了     再次单击上线, 该节点会继续收到请求.

2、权重配置:

     由于Spring Cloud LoadBalance组件⾃⾝有负载均衡配置⽅式, 所以不⽀持Nacos的权重属性配置. 我们需要开启Nacos的负载均衡策略, 让权重配置⽣效

修改权重时可能会报错:

原因: Nacos 采⽤ raft 算法来计算 Leader, 并且会记录前⼀次启动的集群地址, 当服务器 IP 改变时会导致 raft 记录的集群地址失效, 导致选 Leader 出现问题. (⽹络环境发⽣变化时, IP地址也会发⽣变化)
解决办法: 删除 Nacos 根⽬录下 data ⽂件夹下的 protocol ⽂件夹即可.

3、同集群优先访问:

product-service有两个集群(上海和北京),order-service是在北京这个集群中。当order-service向product-service发送请求时,就会优先发送给北京集群的服务器,而当北京集群的服务器关闭了,才会发送给上海集群的服务器 

配置集群:

五、nacos的健康检查

两种健康检查机制:

1、客⼾端主动上报机制:
①客⼾端通过⼼跳上报⽅式告知服务端(nacos注册中⼼)健康状态, 默认⼼跳间隔5秒;
②nacos会在超过15秒未收到⼼跳后将实例设置为不健康状态, 超过30秒将实例删除
2、服务器端反向探测机制:
① nacos主动探知客⼾端健康状态, 默认间隔为20秒.
②健康检查失败后实例会被标记为不健康, 不会被⽴即删除.

默认是临时实例

配置一个实例为永久实例:

注:Nacos会记录每个服务实例的IP和端⼝号, 当发现IP和端⼝都没有发⽣变化时, Nacos不允许⼀个服务实例类型发⽣变化, ⽐如从临时实例,变为⾮临时实例, 或者从⾮临时实例, 变成临时实例.

解决办法:
1. 停掉nacos
2. 删除nacos ⽬录下 /data/protocol/raft 信息, ⾥⾯会保存应⽤实例的元数据信息.

六、nacos的环境隔离

1、 ⼀个服务会分为开发环境, 测试环境和⽣产环境:
①开发环境:开发⼈员⽤于开发的服务器, 是最基础的环境. ⼀般⽇志级别设置较低, 可能会开启⼀些
调试信息.
②测试环境:测试⼈员⽤来进⾏测试的服务器, 是开发环境到⽣产环境的过渡环境.
③ ⽣产环境:正式提供对外服务的环境, 通常关掉调试信息

2、 创建Namespace

3、配置namespace

注:不同命名空间下不能远程调用

七、配置中心

1、引入:

当前项⽬的配置都在代码中, 会存在以下问题:
① 配置⽂件修改时, 服务需要重新部署. 微服务架构中, ⼀个服务可能有成百个实例, 挨个部署⽐较⿇烦, 且容易出错.
② 多⼈开发时, 配置⽂件可能需要经常修改, 使⽤同⼀个配置⽂件容易冲突.

2、

1. 服务启动时, 从配置中⼼读取配置项的内容, 进⾏初始化.
2. 配置项修改时, 通知微服务, 实现配置的更新加载.

3、在nacos控制台中添加配置

4、在项目中获取配置

1)引⼊Nacos Config依赖

2)配置bootstrap.properties:

微服务启动前, 需要先获取nacos中配置, 并与application.yml配置合并. 在微服务运⾏之前, Nacos要求必须使⽤ bootstrap.properties 配置⽂件来配置Nacos Server 地址.

spring.application.name 需要和nacos配置管理的Data ID⼀致
spring.cloud.nacos.config.server-addr 为Nacos Server的地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值