java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway

  • 作用:作为微服务架构的网关,统一入口,处理所有外部请求。
  • 核心能力:
    • 路由转发(基于路径、服务名等)
    • 过滤器(鉴权、限流、日志、Header 处理)
    • 支持负载均衡(结合服务发现)
    • 支持自定义路由规则、熔断(集成 Resilience4j)、降级等

2. spring-cloud-starter-alibaba-nacos-discovery

  • 作用:服务注册与发现中心,每个微服务上线后将自己注册进 Nacos,其他服务通过 Nacos 查找并访问它。
  • 核心能力:
    • 服务注册与发现(类似 Eureka,但更强)
    • 健康检查
    • 动态负载均衡
    • 配合 Feign、RestTemplate 实现服务名访问

3. spring-cloud-starter-alibaba-nacos-config

  • 作用:集中配置中心,所有微服务的配置文件统一托管在 Nacos 中。
  • 核心能力:
    • 支持动态刷新配置(结合@RefreshScope)
    • 多环境配置、共享配置
    • YAML、Properties 格式都支持

|-----------------|------|---------------------|
| 项目 | 功能分类 | 主要用途 |
| gateway | 网关层 | 请求统一入口、路由转发、过滤器、限流等 |
| nacos-discovery | 注册发现 | 服务注册、调用、负载均衡 |
| nacos-config | 配置中心 | 统一配置管理、动态刷新 |

Gateway 是入口,Nacos 是路由图(服务注册表)+ 配置字典,两者一起组成微服务体系的"导航+配置+调用"基础能力。

Nacos ≠ Feign

Nacos 提供"地址簿",Feign 负责"打电话"。

Nacos 是服务发现,Feign 是远程调用。

4. RestTemplate + Ribbon 为何过时?

  • Ribbon

是 Netflix 提供的客户端负载均衡组件,Spring Cloud 在早期版本中默认使用它(和 RestTemplate 搭配)。

  • RestTemplate

虽然还能用,但 Spring 官方已明确表示将在后续版本中弃用,推荐改用 WebClient。

  • Spring Cloud 2020+ 之后已经把 Ribbon 替换成

Spring Cloud LoadBalancer。

📌 官方推荐替代方案:

  • 使用 WebClient + LoadBalancer
  • 或者直接使用 OpenFeign(底层已集成 LoadBalancer)

5. OpenFeign 是什么?还推荐吗?

OpenFeign 是 当前推荐的主流服务调用方式。

作用:

  • 基于接口,自动生成远程调用代码,像调用本地方法一样调用远程服务。
  • 内置支持:
    • 请求参数绑定
    • 请求日志
    • 超时重试
    • 负载均衡(结合 Nacos 服务发现)
相关推荐
weixin_4378309413 分钟前
使用冰狐智能辅助实现图形列表自动点击:OCR与HID技术详解
开发语言·javascript·ocr
鹿鹿学长42 分钟前
2025年全国大学生数学建模竞赛(C题) 建模解析|婴儿染色体数学建模|小鹿学长带队指引全代码文章与思路
c语言·开发语言·数学建模
zhousenshan1 小时前
Python爬虫常用框架
开发语言·爬虫·python
皮皮林5511 小时前
SpringBoot 全局/局部双模式 Gzip 压缩实战:14MB GeoJSON 秒变 3MB
java·spring boot
weixin_456904272 小时前
Spring Boot 用户管理系统
java·spring boot·后端
趁你还年轻_2 小时前
异步编程CompletionService
java
DKPT2 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
sibylyue2 小时前
Guava中常用的工具类
java·guava
奔跑吧邓邓子2 小时前
【Java实战㉞】从0到1:Spring Boot Web开发与接口设计实战
java·spring boot·实战·web开发·接口设计
专注API从业者2 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python