当前位置: 首页 > news >正文

微服务组件(E、L、N、O、G)

Eureka、LoadBalance、Nacos、OpenFeign、Gateway

这五个组件正是 Spring Cloud 生态中实现服务注册发现通信负载均衡网关的核心。它们共同协作支撑微服务架构运行,各自承担不同角色,又存在明确的依赖关系。

组件名称核心知识点作用范围典型使用场景
Eureka1. 基于 AP 原则(可用性、分区容错性)设计,优先保证服务可用。2. 包含 Server(服务端)和 Client(客户端),Client 会定时向 Server 发送心跳。3. 无中心化设计,Server 节点间相互同步数据,避免单点故障。服务注册与发现层1. 微服务集群中,所有服务启动后向 Eureka Server 注册自身信息(IP、端口、服务名)。2. 服务消费者从 Eureka Server 获取服务提供者的地址列表,用于后续通信。
LoadBalance1. Spring Cloud 提供的负载均衡组件,默认集成 Ribbon(新版本逐步替换为 LoadBalancerClient)。2. 核心是 “规则算法”,如轮询、随机、权重、最少连接数等。3. 透明化处理,无需开发者手动编写负载均衡逻辑。服务通信层(消费者侧)1. 服务消费者调用服务提供者时,从地址列表中选择一个节点发起请求,避免单节点过载。2. 配合 OpenFeign 或 RestTemplate 使用,自动实现请求分发。
Nacos1. 基于 CP+AP 双模设计,可按需切换(默认 AP,满足服务发现;切换 CP,满足配置一致性)。2. 集 “服务注册发现” 和 “配置中心” 于一体,功能覆盖 Eureka+Config。3. 支持动态配置推送,无需重启服务即可更新配置。服务注册发现层 + 配置中心层1. 替代 Eureka 实现服务注册发现,同时管理微服务的配置文件(如数据库地址、限流阈值)。2. 多环境配置隔离,如开发、测试、生产环境的配置分开管理。
OpenFeign1. 基于 Feign 封装整合了 LoadBalance,支持声明式 RESTful API 调用。2. 采用接口 + 注解形式定义服务调用,无需手动拼接 URL 和处理 HTTP 请求。3. 支持请求超时、重试、熔断等扩展功能(需配合 Resilience4j 等组件)。服务通信层(消费者侧)1. 服务消费者通过编写接口(如@FeignClient("user-service")),直接调用服务提供者的接口方法。2. 替代 RestTemplate,简化跨服务调用代码,提高可读性。
Gateway1. 基于 Netty 实现的异步非阻塞网关,替代 Zuul,性能更优。2. 核心功能:路由转发、负载均衡、熔断降级、权限认证、日志监控。3. 基于 “断言(Predicate)” 匹配请求,基于 “过滤器(Filter)” 处理请求。微服务入口层(全局)1. 作为微服务集群的统一入口,所有外部请求(如前端、第三方接口)先经过 Gateway。2. 对请求进行统一处理,如验证 Token、路由到指定服务、限制接口访问频率。

代码实现

1. Eureka(服务注册发现)

① Eureka Server 配置(独立服务)

② Eureka Client 配置(微服务)

2. LoadBalance(负载均衡,配合 RestTemplate)

3. Nacos(服务注册 + 配置中心)

① 服务注册(替代 Eureka)

作用是让 “order-service” 这个微服务能找到 Nacos 服务端并完成自身注册

② 配置中心(新增功能)

这段bootstrap.yml配置是 Nacos 作为配置中心时的核心配置,专门用于微服务从 Nacos 获取配置信息。

4. OpenFeign(声明式远程调用)

5. Gateway(网关路由)

二、组件间的区别与共同点

1. 核心区别
  • 功能定位不同
    • Eureka/Nacos:聚焦 “服务注册发现”(Nacos 额外含配置中心功能),是微服务的 “地址簿”。
    • OpenFeign:聚焦 “服务通信”,是微服务的 “远程调用工具”。
    • LoadBalance:聚焦 “请求分发”,是微服务的 “流量分配器”,通常依附于 OpenFeign/RestTemplate。
    • Gateway:聚焦 “全局入口管理”,是微服务的 “守门人”,处理所有外部请求。
  • 设计原则不同
    • Eureka:仅支持 AP,适合对可用性要求高、一致性要求低的场景。
    • Nacos:支持 AP/CP 双模,场景适应性更强。
    • Gateway:基于异步非阻塞设计,性能优于传统的 Zuul 网关。
  • 作用范围不同
    • 局部组件:LoadBalance、OpenFeign 仅在服务消费者内部生效。
    • 全局组件:Eureka/Nacos、Gateway 需独立部署,为整个集群服务。
2. 共同点
  • 均属于 Spring Cloud 生态组件,设计目标是解决微服务架构的核心痛点(服务解耦、通信、治理)。
  • 均支持高可用部署:Eureka/Nacos/Gateway 可部署多节点,避免单点故障;LoadBalance 通过多服务节点实现高可用。
  • 均支持动态扩展:服务节点可随时新增 / 下线,组件能自动感知(如 Eureka 的心跳检测、Gateway 的动态路由)。

三、组件间的依赖与协作关系

它们并非独立工作,而是形成一条完整的 “请求链路”,典型协作流程如下:

  1. 服务注册:所有微服务(如用户服务、订单服务)启动后,向Nacos/Eureka注册自身信息,完成 “地址登记”。
  2. 请求进入:外部请求(如用户下单)首先发送到Gateway,Gateway 通过 “断言” 匹配路由规则,确定需要转发到 “订单服务”。
  3. 服务发现:Gateway 向Nacos/Eureka查询 “订单服务” 的所有可用节点地址,获取地址列表。
  4. 负载均衡:Gateway 内部集成了LoadBalance,从地址列表中选择一个节点(如轮询选择节点 A)。
  5. 远程调用:若 Gateway 需要调用其他服务(如订单服务需查询用户信息),会通过OpenFeign(整合 LoadBalance)调用 “用户服务”,实现跨服务通信。

简单来说,协作关系可总结为:Gateway(入口) → Nacos/Eureka(查地址) → LoadBalance(选节点) → OpenFeign(发请求)

微服务组件协作流程图

1. 整体架构分层(从左到右)

层级包含组件核心作用
外部请求层前端 / 第三方系统发起业务请求(如 “查询订单”“获取用户信息”)
网关层Gateway(端口 8080)统一入口,路由转发、负载均衡、权限校验
服务注册发现层Nacos/Eureka(端口 8848/8761)存储服务地址,提供服务发现能力
业务服务层订单服务(order-service)、用户服务(user-service)处理核心业务逻辑(订单管理、用户查询)
远程调用层OpenFeign + LoadBalance简化跨服务调用,实现请求分发

2. 核心请求流向(以 “查询订单” 为例)

  1. 外部发起请求:前端发送请求 http://localhost:8080/order/123(访问网关端口,路径含/order)。
  2. 网关路由匹配:Gateway 根据配置的路由规则(Path=/order/**),匹配到order-service-route,并通过 Nacos 获取order-service的可用节点(如192.168.1.10:8082)。
  3. 网关负载均衡:Gateway 通过lb://order-service自动选择一个节点(如 10 节点),将请求转发到http://192.168.1.10:8082/order/123
  4. 订单服务调用用户服务order-service处理时需要用户信息,通过 OpenFeign 调用user-service(接口定义@FeignClient("user-service"))。
  5. 服务发现与负载均衡:OpenFeign 整合 LoadBalance,从 Nacos 获取user-service的地址列表(如192.168.1.11:8081),自动选择节点发起请求 http://192.168.1.11:8081/user/456
  6. 结果返回user-service返回用户信息 → order-service组装订单 + 用户信息 → Gateway 将结果返回给前端。

3. 组件协作关键关联

  • Gateway ↔ Nacos:Gateway 依赖 Nacos 获取服务地址,实现动态路由(服务上下线无需改网关配置)。
  • OpenFeign ↔ LoadBalance:OpenFeign 调用时自动触发 LoadBalance,无需手动写负载均衡逻辑。
  • 业务服务 ↔ Nacos:所有业务服务(order-service、user-service)启动时注册到 Nacos,提供自身地址信息。

核心总结

  • Eureka/Nacos:服务 “身份证登记处”,所有服务需在此注册地址。
  • LoadBalance:隐藏在调用过程中,自动选择服务节点(OpenFeign 默认集成)。
  • OpenFeign:用接口定义远程调用,简化 HTTP 请求代码。
  • Gateway:外部请求的 “总入口”,统一处理路由、认证等。
http://www.dtcms.com/a/570845.html

相关文章:

  • 做网站如何自己寻找客户海口网站提升排名
  • 算法学习入门---二分查找(C++)
  • 网页自助建站百度建立自己的网站
  • 长春平面网站建设网站开发赚钱吗?
  • 华东民航机场建设公司网站通过WordPress开发的主题
  • 网站负责人核验现场拍摄照片电子件自己如何制作一个app
  • 企业营销型企业网站建设网站设计需求分析
  • 怎么自己编码做网站哈尔滨网站制作哪家好薇
  • GPU,CPU,DPU,NPU
  • 保定 网站建设软件开发上海招聘网站排名
  • Java 多线程机制专项
  • ESP32C3:性价比超高
  • 使用 FastAPI 构建大模型应用的系统教程(工程化实战指南)
  • 郑州网站建设做推广吗做企业推广去哪个网站比较好
  • 海口网站建设方案咨询网站开发团队人员构成
  • 专业郑州网站建设华为品牌策划方案
  • 西宁城西区建设局网站石家庄网页定制开发
  • 【见刊检索快速】第二届教育、管理与艺术文化国际学术会议 (EMAC 2025)
  • 电子商务网站栏目wordpress图片站点
  • 【AI入门】通俗易懂讲AI(一)
  • 第四十三篇|日本语言学校教育数据建模实录:惠比寿语校的语义结构与AI可计算化
  • 做交易平台网站适合初学者做的网站
  • 北京做兼职从哪个网站茶叶网站实际案例
  • 无需下载直接进入的网站的代码制作一个网站的费用是多少
  • 大连地区做网站手机开网店用什么软件
  • FastAPI 初识
  • 做论坛网站看什么书五金件外发加工网
  • 苍穹外卖资源点整理+个人错误解析-Day04-套餐模块
  • 网站建设哪公司微信开发时间
  • 河南郑州网站顾问什么公司能做网站建设