技术面:SpringCloud(SpringCloud有哪些组件,SpringCloud与Dubbo的区别)

news/2025/11/11 15:00:35/文章来源:https://www.cnblogs.com/jimoer/p/19210319

什么是SpringCloud

Spring Cloud 是一个基于 Spring Framework 的开源微服务架构工具集,用于简化和快速构建分布式系统。它提供了一套完整的微服务解决方案,基于 Spring Boot 框架,它像是一个"大的容器",将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。

我们在做后端服务时,单体应用使用Spring,需要快速构建,简化开发使用SpringBoot,构建分布式、微服务应用,使用SpringCloud。

SpringCloud的核心价值在于:

  • 简化分布式系统开发
  • 提供微服务架构的完整套件
  • 通过集成成熟的技术组件,减少开发成本
  • 提供开箱即用的微服务解决方案

image

SpringCloud有哪些组件

Eureka注册中心

Eureka是服务发现和注册中心,可以帮助服务消费者自动发现和调用服务提供者。

  • 作用:服务提供者将自己注册到注册中心,服务消费者通过查询注册中心获取服务实例列表。
  • 原理:Eureka 由 Service Provider(服务提供方)、Service Consumer(服务消费方)和 Eureka Server(服务注册中心)组成。
  • 特点:Eureka 通过心跳检测、健康检查与客户端缓存机制,提高系统的灵活性与可用性。

Spring Boot 3.x移除了对 Java EE(Jakarta EE)|AP|(如 javax包)的支持,而 Eureka仍然依赖javax.xml.bind 等API,另一方面,Netflix 整个套件(Eureka/Ribbon/Hystrix/Zuul)进入维护模式,Spring Cloud 2020.x 起用自研组件替换Eureka。

可替代Eureka的方案有Zookeeper、Nacos、Consul。

Zookeeper是最早流行的开源分布式协调服务框架之一,同时也提供了分布式配置中心的功能。Zookeeper以高可用、一致性和可靠性著称,但是需要用户自己来开发实现分布式配置的功能。

Nacos是阿里巴巴开源的服务注册中心和配置中心。与Zookeeper不同的是,Nacos自带了配置中心功能,并提供了更多的可视化配置管理工具。Nacos的目标是成为一个更全面的云原生服务发现、配置和管理平台。

ConsulHashiCorp开源的服务注册中心和配置中心,提供了服务发现、健康检查、KV存储和多数据中心功能。Consul提供了更丰富的健康检查和路由功能,同时也提供了丰富的API和Web Ul。

Ribbon负载均衡组件

Ribbon是负载均衡组件,可以帮助客户端在多个服务提供者之间进行负载均衡。

  • 功能:实现客户端负载均衡。
  • 作用:基于某种负载均衡算法,自动帮助服务消费者请求。
  • 特点:与 Zuul 默认集成,完成请求到后端实例的分发。

Spring Cloud 2020.0 (Ilford)起移除 Ribbon,默认使用 spring-cloud-loadbalancer;Netflix Ribbon 进入维护模式。

Ribbon的具体实现原理可以看我之前写过的文章:你都用过SpringCloud的哪些组件,它们的原理是什么?

Feign/OpenFeign:声明式HTTP客户端,可以帮助开发人员更容易地编写HTTP调用代码。

Feign的作用与特点如下
简化HTTP客户端开发:通过声明式接口,Feign自动生成HTTP请求代码,减少重复的样板代码。开发者只需定义接口方法,Feign就会将其映射到HTTP请求上。
支持多种注解Feign原生支持Feign注解和JAX-RS注解,让HTTP请求的定义更加简洁。
整合负载均衡与服务发现Feign默认与Ribbon(客户端负载均衡器)和Eureka(服务注册中心)整合,能自动实现服务地址解析和请求分发,提高系统的可扩展性和可靠性。
可扩展性强:支持多种HTTP客户端实现(如OkHttpApache HttpClient),开发者可以灵活切换底层库以适应不同性能需求。
支持自定义拦截器:可以通过实现Request.InterceptorResponse.Interceptor接口,对HTTP请求和响应进行拦截处理,例如添加认证信息、修改请求数据、记录日志等。

但是从Spring Cloud 2020版本开始,官方宣布Feign将不再维护和支持,推荐使用OpenFeign作为替代方案。

OpenFeign是Spring Cloud对Feign进行的二次封装和增强。

Feign和OpenFeign的区别:

  • 所属生态Feign是Netflix的独立开源项目,而OpenFeign是Spring Cloud生态的一部分。
  • 注解支持Feign使用原生注解(如@RequestLine),OpenFeign使用Spring MVC注解(如@GetMapping)。
  • 配置方式Feign需要手动配置编码器、解码器、拦截器等,而OpenFeign通过Spring的自动配置机制简化了配置。
  • 维护状态Feign自2019年起进入维护模式,不再添加新功能;OpenFeign作为Spring Cloud核心组件,会持续更新。
  • 与Spring集成OpenFeign与Spring Bean紧密结合,能自动注册为Spring Bean,而Feign需要额外配置。

但是,随着SpringCloud 2022的发布,官方宣布OpenFeign将被视为功能完整。这意味着Spring Cloud团队将不再向模块添加新特性,进入维护阶段,只会修复bug和安全问题。

熔断器 (Hystrix)

功能:容错管理工具,提供服务熔断和降级机制
作用:当服务调用失败率超过阈值时,自动熔断服务调用,避免"雪崩效应"
特点:提供 fallback 逻辑,即使部分服务故障,系统仍可保持基本可用性;提供实时监控和指标收集

Hystrix的具体实现原理可以看我之前写过的文章:你都用过SpringCloud的哪些组件,它们的原理是什么? 这里面有介绍Hystrix的实现原理,本质上是用线程池或信号量将各个服务进行了隔离。

在做熔断,降级的作用方面,Sentinel是可以替代Hystrix的,并且在各方面都是优于Hystrix的,更推荐使用Sentinel。

Sentinel与Hystrix的对比

对比维度 Sentinel Hystrix
维护主体 阿里巴巴 Netflix
维护状态 持续维护,社区活跃 2018年已进入维护模式,Netflix已停止维护
核心设计理念 以流量为切入点,多维度保护服务稳定性 熔断器模式,防止服务调用失败引发级联故障
隔离策略 信号量隔离 线程池隔离/信号量隔离
熔断降级策略 基于响应时间或异常比例 基于失败比率
流量控制 支持基于QPS,支持基于调用关系的限流 有限支持(主要通过线程池容量控制)
热点参数限流 支持 不支持
流量整形 支持慢启动、匀速排队模式 不支持
系统负载保护 支持(借鉴TCP BBR思想) 不支持
实时指标实现 滑动窗口(精确到毫秒级) 滑动窗口(基于RxJava)
规则配置 支持多种数据源(Nacos/ZooKeeper等) 支持多种数据源
扩展性 多个扩展点(SPI接口) 插件的形式
基于注解支持 支持(@SentinelResource) 支持
实时监控与控制面板 开箱即用,可配置规则、查看秒级监控、机器发现等 监控功能有限,需结合Turbine等工具
性能开销 较低(信号量隔离) 较高(线程池隔离资源消耗大)
适用场景 API网关、流量入口、需要精细流量控制的场景 微服务间调用保护、需要明确状态管理的场景
生态支持 Servlet、Spring Boot/Spring Cloud、Dubbo、gRPC、Reactor、Quarkus等 Servlet、Spring Cloud Netflix
系统保护能力 提供系统级自适应保护,让入口流量与系统负载达到平衡 无系统级保护机制
典型场景 电商秒杀、高并发API入口 服务间调用保护、传统微服务架构

但是如果项目已全面拥抱 Spring Cloud 202x,官方更常用的熔断选型是 resilience4j(已内置在 spring-cloud-circuitbreaker)。
Sentinel 功能最强,但引入阿里生态;resilience4j 更轻量,对 Reactive 友好。选型应看团队技术栈,而非“一律 Sentinel”。

API 网关 (Zuul / Spring Cloud Gateway)

  • 功能:所有外部请求的统一入口
  • 作用:实现路由、限流、熔断、鉴权等功能
  • 特点:
    • Zuul:基于 Netflix 的 API 网关
    • Spring Cloud Gateway:基于响应式编程的高性能网关,提供灵活的路由和强大的过滤器机制

不管是Zuul还是Gateway,都是Spring Cloud生态的一部分,他的主要功能是API网关。支持请求路由、负载均衡、权限认证、限流、请求过滤等功能。

核心区别

  1. 技术架构与底层实现
    Zuul 1.x:基于Servlet技术栈开发(依赖Tomcat等Servlet容器),采用阻塞式I/O模型(每个请求对应一个线程,线程阻塞直到请求处理完成)。
    Spring Cloud Gateway:基于Spring 5、Spring Boot 2.x和Project Reactor开发,采用非阻塞响应式编程模型(Netty作为底层服务器,支持异步非阻塞I/O)
  2. 性能对比
指标 Zuul 1.x Spring Cloud Gateway
并发处理能力 通常数千QPS 万级QPS以上
高并发表现 线程资源易耗尽,响应延迟高 在简单路由+空负载场景下,性能约为Zuul 1.x的1.6倍
CPU/内存消耗 高并发时CPU使用率常超80%,GC频繁 相同流量下内存占用减少约25%

Netflix 已发布 Zuul 2,基于 Netty 非阻塞,但 Spring Cloud 官方并未集成,因此实际场景几乎不用

配置中心 (Spring Cloud Config / Nacos Config)

  • 功能:实现配置的集中管理和动态刷新
  • 作用:将应用程序的配置集中管理,支持动态更新配置
  • 特点
    • Spring Cloud Config:与 Git 集成好,功能成熟
    • Nacos Config:提供更友好的 UI 控制台,配置动态刷新更高效便捷

其他重要组件

Spring Cloud Bus:消息总线,实现配置在分布式系统中的传播和更新

Spring Cloud Sleuth:分布式追踪,通过唯一标识跟踪请求流程

Spring Cloud Stream:消息驱动的微服务抽象,连接消息中间件如 RabbitMQ、Kafka

Spring Security:用于简化 OAuth2 认证和资源保护

但是,我们并不一定非要全部都用SpringCloud的这些组件,有的时候我们也可以选择其他的开源组件替代。比如经常用Dubbo/gRPC来代替Feign进行服务间调用。经常使用Nacos代替Config+Eureka来实现服务发现/注册及配置中心的功能。

Spring Cloud 架构实现流程

  • 请求统一通过 API 网关(ZuulSpring Cloud Gateway)访问内部服务
  • 网关接收到请求后,从注册中心(Eureka)获取可用服务
  • Ribbon 进行均衡负载后,分发到后端具体实例
  • 微服务之间通过 Feign 进行通信处理业务
  • Hystrix 负责处理服务超时熔断
  • 配置信息通过 Spring Cloud ConfigNacos Config 进行集中管理

Spring Cloud 通过这些组件的协同工作,为开发者提供了一套简单、高效、稳定的分布式系统开发工具包,使微服务架构的开发、部署和管理更加便捷。

SpringCloud与Dubbo的区别

Spring CloudDubbo都是为了简化分布式系统开发而设计的开源框架DubboSpring Cloud 都侧重在对分布式系统中常见问题模式的抽象(如服务发现、负载均衡、动态配置等)。

  1. 核心定位与设计哲学
维度 Spring Cloud Dubbo
核心定位 微服务一站式解决方案 高性能RPC框架
设计哲学 约定优于配置、开箱即用 轻量级、高度可定制
目标 提供完整的微服务生态 专注于服务调用与治理
  1. 通信协议与性能
维度 Spring Cloud Dubbo
通信协议 默认使用HTTP/REST协议(文本协议) 自定义二进制协议(Dubbo协议)
性能 通信效率较低(HTTP头部冗余,JSON序列化开销大) 数据传输性能较好(二进制协议,TCP长连接)
带宽占用 较高(HTTP传输,JSON报文) 较低(二进制协议)
  1. 生态系统与组件丰富度
维度 Spring Cloud Dubbo
组件覆盖 服务治理、配置、网关、监控等全方位 专注服务调用与治理,其他需集成
典型组件 Eureka(注册中心)、Hystrix(熔断器)、Config(配置中心)、Zuul(网关) Zookeeper(注册中心)、负载均衡、容错机制
生态完善度 生态更完善,Spring生态支持 生态相对匮乏,但逐渐丰富
  1. 社区支持与活跃度
维度 Spring Cloud Dubbo
全球社区 庞大活跃的全球开发者社区 国内社区活跃,中文支持好
文档支持 官方文档完善,但中文资源质量参差 文档以中文为主,对国内开发者更友好
更新活跃度 高频更新 早期活跃度较低,被阿里重新维护后恢复
  1. 适用场景与规模
维度 Spring Cloud Dubbo
集群规模 更适用于中小规模微服务集群 可在超大规模集群中实现水平扩容
典型场景 中小型互联网公司快速构建分布式系统 需要高性能服务调用的大型系统
  1. 多语言支持
维度 Spring Cloud Dubbo
多语言支持 通过HTTP协议支持多语言开发 提供Java外的多语言实现,支持构建多语言异构微服务体系
跨语言能力 基于HTTP协议,天然支持 通过Triple协议(主要基于HTTP/2 + Protobuf)支持跨语言
  1. 开发成本与学习曲线
维度 Spring Cloud Dubbo
学习曲线 较陡峭(需掌握多个组件) 相对平缓(核心概念简单)
开发成本 开箱即用,集成相对简单 定制性高,可能需要实现自定义Filter、Interceptor等
  1. 服务治理能力
维度 Spring Cloud Dubbo
服务发现 基于Eureka等注册中心 基于Zookeeper/Nacos等注册中心
负载均衡 与Ribbon结合,客户端负载均衡 自带软负载均衡及容错机制
容错处理 Hystrix提供熔断机制 自带容错策略(快速失败/重试/熔断降级)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/962436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年不锈钢四方管制造企业权威推荐榜单:无缝不锈钢方管/拉丝不锈钢方管/不锈钢抛光方管源头厂家精选

在当今工业与建筑领域,不锈钢四方管因其优异的耐腐蚀性、高强度和美观性,已成为众多工程项目不可或缺的核心材料。市场数据显示,不锈钢方管的需求近年来持续增长,广泛应用于建筑装饰、市政工程、机械制造、石油化工…

Consul(服务全生命周期治) 单节点部署测试以及脚本制作示例(v1.21.2)

Consul(服务全生命周期治) 单节点部署测试以及脚本制作示例(v1.21.2)本文介绍了 HashiCorp 开发的开源工具 Consul,其定位为服务网格与服务治理工具,核心解决分布式系统中服务发现、配置同步、流量安全管控问题。文…

详细介绍:【NestJS】NestJS三件套:校验、转换与文档生成,对比Django DRF

详细介绍:【NestJS】NestJS三件套:校验、转换与文档生成,对比Django DRFpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family…

java+vue+SpringBoot网上点餐架构(脚本+数据库+报告+部署教程+答辩指导)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

102302142罗伟钊第二次作业

作业①: – 要求:在中国气象网(http://www.weather.com.cn)给定城市集的7日天气预报,并保存在数据库。 1)代码内容: --------------------------------------------------点击查看代码 import sqlite3 import ur…

Hadoop大数据平台在中国AI时代的后续发展趋势研究

Hadoop大数据平台在中国AI时代的后续发展趋势研究Hadoop大数据平台在中国AI时代的后续发展趋势研究 CMP(类Cloudera CDP 7.3 404版华为Kunpeng版) 摘要 随着人工智能(AI)技术的迅猛发展和国家“数字中国”战略的深…

20251111noip模拟赛

8:14 想到T1做法,写完T1 8:45 大致看了T2T3T4,感觉T4不是很可做,又去想T2 9:05 在想矩阵做法的时候直接推出了公式,用倍增写完了 9:55 想到可以先跑两遍dij后再在后两遍dij中dp,写完了T3,但是没有过大样例 10:50…

uni-app iOS日志管理实战,从调试控制台到系统日志的全链路采集与分析指南

uni-app iOS日志管理全攻略:结合Xcode Console、Safari Web Inspector、克魔(KeyMob)、Firebase Crashlytics实现多层日志采集、崩溃分析与智能化调试流程。在跨平台开发的世界里,uni-app 以高效的多端适配能力成为…

2025年优秀的列管式换热器厂家推荐及采购参考

2025年优秀的列管式换热器厂家推荐及采购参考行业背景与市场趋势列管式换热器作为工业传热领域的关键设备,在石油化工、制药、食品加工、电力等行业中扮演着不可或缺的角色。根据《2024-2029年中国换热器行业市场前瞻…

2025 年 11 月配电柜/配电箱/开关柜厂家推荐排行榜,智能配电系统,高低压配电柜,动力配电箱,户外配电箱公司推荐

在当今工业化和智能化深度融合的背景下,配电柜、配电箱、开关柜以及智能配电系统作为电力基础设施的核心组成部分,其性能与可靠性直接影响着各行各业的运营效率与安全。随着新能源、数据中心、智能制造等领域的快速发…

开通同路由两台电脑的ping

方法 1:图形界面放行(适合新手)两台电脑都要操作:打开「控制面板」→「系统和安全」→「Windows Defender 防火墙」→ 左侧「高级设置」; 点击「入站规则」,在右侧找两条规则:“文件和打印机共享 (回显请求 - I…

零些二元函数

有标号边双计数(25.11.11) 设 \(f_{n, m}\) 表示 \(n\) 个点形成含 \(m\) 个点双的连通图的方案数。 \(g_n\) 表示 \(n\) 个点的连通图数量。\(g_n\) 容易通过容斥算出: \[g_n = 2^{\binom{n}{2}} - \sum_{i=1}^{n …

实用指南:Quill 富文本编辑器 功能介绍,使用场景说明,使用示例演示

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年杭州汽修门店接单App服务商权威推荐榜单:汽车改装服务/汽车改装平台/汽修门店接单工具源头服务商精选

在数字化浪潮席卷汽车后市场的今天,汽修门店的运营模式正经历深刻变革。专业接单App服务商已成为汽修门店提升运营效率、拓展客户资源的重要合作伙伴。行业数据显示,2025年中国汽车后市场数字化服务规模预计突破千亿…

2025年11月义乌租车公司权威榜:五家实测对比与口碑排行

在义乌国际商贸城日均客流超20万人次的背景下,临时商务接待、市场采购、跨境采购团队、婚庆车队、短途自驾等多元场景让“随租随走”成为刚需。用户常见痛点集中在:取还车网点是否覆盖机场与火车站、能否用芝麻信用免…

三场比赛(e)

0.前言 Pointless Machine 的操作次数为 \(k(\lfloor \log_k n \rfloor +1)+1\),当 \(k=3\) 时能取到 \(31\),刚好能够通过本题。不过我有一个此题更好的做法,能把操作次数变成 \(30.90110011304949758896316218487…

RPC的介绍,和网络通信的区别,效果实现(服务寻址,序列化,网络传输),两种服务发现机制的区别,函数定位

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Ci24R02:高集成低功耗RISC-V SoC,轻松打造物联网核心

Ci24R02是一款高度集成的低功耗SOC芯片,具有低功耗、Low Pin Count、宽电压工作范围,集成了13/14/15/16位精度的ADC、LVD、UART、SPI、I2C、TIMER、WUP、IWDG、RTC、无线收发器等丰富的外设。内核采用RISC-V RV32IMA…

老司机注意事项

1. 不要一直盯着后视镜 2. 不要一直盯着仪表盘 3. 不要反反复复调整定速巡航 4. 变道要果决, 观察后视镜后, 可以先打灯过去一点试探一下, 切记不要减速变道 , 一般正常人类都会让一下 5. 找到一个自己很舒服的姿势开车…

步进电机加减速

步进电机加减速T型、S型加减速算法原理及实现_t型算法-CSDN博客