逸辰轩39225113头像
关注
用豆包辅助从头开始学习Java Spring Cloud(十):Nacos 权重 + 上下线感知封面图

用豆包辅助从头开始学习Java Spring Cloud(十):Nacos 权重 + 上下线感知

用豆包辅助从头开始学习Java Spring Cloud(十):Nacos 权重 + 上下线感知

系列说明:本系列为 Spring Cloud 从零学习笔记的第二阶段,基于 SpringBoot 2.7.x + Spring Cloud Alibaba 2022.0.0.0,面向后端初学者,侧重原理理解与工程实践思维,非纯粹源码解读。

本文目标:掌握 Nacos 实例权重流量分配、服务下线感知机制,了解 Nacos 集群、Eureka、Consul 注册中心对比。

前置知识:已经掌握 OpenFeign 声明式调用、Spring Cloud LoadBalancer 负载均衡、Sentinel 熔断降级基础。

前言

上一篇完成了 OpenFeign 远程调用、LoadBalancer 负载均衡、Sentinel 熔断降级,搭建 order‑service 订单微服务,实现微服务内部通信。

本篇动手实操 Nacos 权重配置实现流量灰度分配,理解消费者本地实例缓存带来的各类现象;完成服务下线感知实验;同时横向学习 Nacos 集群高可用原理,对比 Eureka、Consul 主流注册中心的特性与取舍。

第一部分、Nacos 实例权重配置

知识点:权重控制流量分配,权重取值范围 0 ~ 100;权重越大分到的流量越多;权重 = 0 不会接收新流量,可以做灰度、版本下线。
⚠️重点:order‑service 本地会缓存服务实例列表,缓存默认 30 秒,修改权重不会立刻生效,需要等待缓存刷新

操作步骤

  1. 打开 Nacos 控制台 http://127.0.0.1:8848/nacos

  2. 菜单:【服务管理】→【服务列表】→找到 user‑service → 点击右侧【详情】在这里插入图片描述

  3. 列表看到两个实例:

    • 8081:把权重改为 1
    • 8082:把权重改为 9在这里插入图片描述
  4. 点击「确定」保存配置。

理论流量占比:8081 约 10%,8082 约 90%。

  1. 等待 30 秒缓存过期,浏览器疯狂刷新接口 http://127.0.0.1:8090/order/create,观察后端控制台打印的端口。

✅预期现象:绝大多数请求落到 8082,少量请求落到 8081。

如果刚改完权重,还是对半分,属于客户端缓存,等待一会就变化,不是 bug。

面试考点:权重是Nacos 服务端配置,由消费者客户端本地负载均衡组件实现流量分配,服务提供者本身不知道自己权重是多少

然而,现在和预期不一样,实际大量刷新之后,统计了一下,两个端口实际出现频率差不多。

需要再次修改yml:

spring:
  application:
    name: order-service
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    sentinel:
      transport:
        # sentinel控制台地址
        dashboard: 127.0.0.1:8858
        port: 8719 # 客户端和控制台通信端口,默认8719,被占用自动+1
        client-ip:

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/qq_39225113/article/details/164148544

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--