news 2026/5/6 22:04:45

SpringCloud的了解和使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringCloud的了解和使用

1)概述

SpringCloud 是一系列框架的有序集合,利于SpringBoot 开发的便利性,简化了分布式系统基础设施的开发,它没有重复造轮子,只是将各家公司比较成熟的框架组合起来,通过SpringBoot 风格再封装,屏蔽复杂的配置和实现原理,最终给开发者留下一套简单易懂、易部署、易维护的分布式系统开发包。 SpringCloud 的版本名称:伦敦地铁站的名称+版本号

2)SpringCloud 和SpringBoot 的区别与联系

1)SpringCloud 是一个基于SpringBoot 的云应用开发工具。 2)SpringBoot 注重单个微服务,SpringCloud 关注服务治理框架。 3)SpringCloud 依赖于 SpringBoot 而存在。

3)SpringCloud 相关组件

1. 【服务注册与发现】:服务自动注册和发现,实现服务间调用 Netflix Eureka---Netflix 组件,目前进入维护模式 【Alibaba Nacos】---阿里的国产方案,功能强大且社区活跃 【HashiCorp Consul】----非 Netflix 系的主流选择 Spring Cloud Zookeeper--合已使用 ZK 的架构 2. 【API网关】:请求路由、统一鉴权、限流熔断 【Spring Cloud Gateway】---基于 Spring WebFlux 的响应式网关,现代首选,性能优异 Netflix Zuul 1.x---基于 Servlet 的阻塞式网关,已进入维护模式,不推荐新项目使用 3. 【客户端负载均衡】:调用方从注册中心获取服务列表,自行选择调用 【Spring Cloud LoadBalancer】---官方首选,用于替代已停更的 Netflix Ribbon 4. 【声明式远程调用】:声明式 HTTP 客户端 【Spring Cloud OpenFeign】---声明式的 HTTP 客户端,简化服务间调用,官方推荐,配合 LoadBalancer 使用 【Apache Dubbo】---高性能 Java RPC 框架,在 Spring Cloud Alibaba 生态中支持 5. 【服务容错(熔断降级)】:防止服务雪崩 Spring Cloud Circuit Breaker---统一的熔断器抽象层 API,官方抽象接口 【Alibaba Sentinel】---阿里出品,功能远超 Hystrix 【Resilience4J】---轻量级的容错库,推荐,设计优雅,是 Hystrix 的现代替代品 Netflix Hystrix---著名的经典组件,但已停止开发,进入维护模式 6. 【分布式配置管理】:集中管理配置,动态刷新 【Spring Cloud Config】---官方经典方案 【Alibaba Nacos】---动态配置管理,阿里的国产方案,提供界面管理,支持配置实时生效 7. 【消息驱动与总线】:异步解耦 【Spring Cloud Stream】---简化开发,可切换 RabbitMQ, Kafka, RocketMQ Spring Cloud Bus---通过轻量级消息代理连接分散的服务,常用于配合 Config 实现配置的动态刷新 Alibaba RocketMQ---阿里出品,在特定场景下性能优于 Kafka 8. 【分布式链路追踪】:请求链路监控 Spring Cloud Sleuth---为 Spring Cloud 应用提供分布式追踪解决方案,常与 Zipkin, Jaeger 配合使用 9. 安全与密钥管理 Spring Cloud Security---提供 OAuth2、单点登录等安全功能 Spring Cloud Vault---与 HashiCorp Vault 集成,安全管理敏感配置 10. 测试与契约 Spring Cloud Contract---支持消费者驱动的契约(CDC)测试,保障服务间 API 的可靠性 11. 云平台集成 Spring Cloud Kubernetes---适合在 K8s 环境部署的应用 Spring Cloud Alibaba---中国开发者与云环境首选

4) 服务注册与发现

1. 分client(服务消费者)和server(服务注册者),server 提供注册服务,将自己的注册地址(IP+端口)注册到注册中心,client 可以向server进行注册,获取它依赖的其他服务实例列表。 2. 注册中心会通过心跳机制,定期检查服务实例的健康状态,nacos默认是5S每次,eureka默认是30s每次,3次监测不到,会自动剔除不健康的实例,防止请求打到有问题的服务上。

5) 网关

1. 是微服务架构中的统一入口,所有外部请求都先到达网关,再由网关路由到后端具体的微服务。 2. 使用网关可以通过访问同一个ip和端口,来完成访问不同微服务的需求,避免了访问每个微服务都需要有不同ip和端口的问题。 3. 网关的核心功能: 1)请求路由:网关根据请求的路径、域名、Header等信息,将请求转发到正确的微服务。 2)统一鉴权:在网关层集中处理身份认证(如JWT验证、OAuth token校验),合法请求才放行,后端服务可以专注于业务逻辑。 3)限流熔断: 限流:限制每个用户/IP在单位时间内的请求次数,防止恶意攻击或突发流量冲垮系统(如每秒最多100次)。 熔断:当某个后端服务持续失败时,网关快速返回降级响应,避免故障扩散。 4)日志监测:在网关层统一记录所有请求的日志(请求路径、耗时、状态码等),便于监控和问题排查。 5)跨域处理:统一配置CORS策略,所有微服务无需单独处理跨域问题。 6)协议转换:客户端发送HTTP请求,网关转成gRPC给后端服务。

6) 负载均衡

1. 将用户请求分摊到多个服务器上执行,从而扩展系统处理能力,提高可用性的核心技术。 2. 常见的负载均衡策略有:轮询、加权轮询、最少连接、IP哈希,随机等。

7) 远程调用

1. 远程调用是允许一个程序调用另一个地址空间(通常是不同服务器)的函数或者方法,就像调用本地方法一样的技术。 2. 远程调用的作用: 1)解耦:服务之间通过网络调用,不直接依赖对方的代码实现。 2)分布式:可以跨越不同的服务器、数据中心、甚至云平台。 3)抽象网络细节:开发者像调用本地方法一样调用远程服务,无需手写Socket、HTTP等底层代码。 3. 远程调用分类: 按照通信协议,可以分为: 1)HTTP/REST 常见技术:Spring RestTemplate、OpenFeign、WebClient。 特点:轻量、跨语言、易调试、基于HTTP协议,通常使用 JSON 作为数据格式。 2)RPC 框架 常见技术:Dubbo、gRPC、Thrift。 特点:性能高、通常需配合注册中心、跨语言支持各异。封装了底层通信细节,通常支持 TCP 协议、二进制序列化(如 Hessian、Protobuf)。 4. 核心流程:代理 → 序列化 → 网络传输 → 反序列化 → 执行 → 返回。 5. 常见问题与处理方案 1)网络延迟:跨网络调用比本地调用慢几十到几百毫秒。 处理方案: 合理设置超时、异步调用、减少调用次数。 2)服务故障:被调服务可能宕机或响应慢。 处理方案:熔断(Sentinel/Hystrix)、重试、降级。 3)数据一致性:分布式环境下难以保证强一致性。 处理方案:分布式事务(Seata)或最终一致性方案。 4)链路追踪:调用链路复杂,难以定位问题。 处理方案:分布式链路追踪(SkyWalking、Zipkin)。 5)序列化性能:序列化/反序列化耗时。 处理方案:选用高效序列化协议(Protobuf、Kryo)。 6)版本兼容:接口变更可能导致调用失败。 处理方案:接口版本管理、灰度发布。

8) 熔断降级

1. 微服务中通常会有多个服务之间的相互调用,如果某个微服务出现了故障,会造成服务雪崩,导致整个系统不可用。 2. 熔断降级是微服务架构中的自我保护机制。当某个服务出现故障或者响应过慢时,系统不会再等待或者反复重试,而是快速失败或者执行备选方案,防止故障像雪崩一样扩散到整个系统。 3.熔断器能够在服务失效的时候,通过隔离失效的服务,来防止级联失效,服务修复后,熔断器会关闭,使系统更快恢复正常。 4. 熔断:当下游服务故障达到一直阈值时,自动切断对其的调用,快速失败。【防止故障像雪崩一样向上游服务扩散】。 降级:当熔断触发或者系统高负载时,执行替代方案(如返回默认值、缓存数据等)来提供有损服务。【牺牲非核心功能,保证核心业务的基本可用性】。 5. 核心技术:通过一个名为熔断器的状态机,在不同状态间切换来自动管理服务调用。 1)关闭状态(正常工作):熔断器的初始状态,放行所有请求,并暗中统计调用结果(如 失败率、慢调用比例),一旦统计指标超过预设的阈值,熔断器就会跳闸,进入打开状态。 2)打开状态(熔断中):在词状态下,所有对该服务的调用都会被直接拒绝,并立即执行降级逻辑,不在发起远程调用。这个状态会持续一个休眠时间窗,让故障服务有时间恢复。 3)半开状态(服务探测):休眠时间窗结束后,熔断器会进入半开状态,他像一个哨兵,只放行少量探测请求去尝试调用下游服务,如果这些请求成功,说明下游服务已经恢复,熔断器就切回关闭状态;如果失败,熔断器再次回到打开状态,继续熔断。 6. 熔断策略 1)慢调用比例:统计窗口中,超过响应时间阈值(比如 1s)的请求比例。这是生产环境首选,能提前预防线程阻塞。 2)异常比例:统计窗口中,系统级异常(如超时、网络异常)的比例。注意排除业务异常,避免误判。 3)异常数量:统计窗口中,异常发生的绝对数量。 7. 降级方案 1)兜底数据降级:当服务不可用时,返回静态默认值或者本地/分布式 缓存 的旧数据。 2)快速失败降级:熔断触发后,直接返回一个友好的失败提示或者抛出特定业务异常。 3)功能降级开关:大促或者高负载前,通过配置中心,动态关闭非核心功能。

9) 配置管理

1. 是系统稳定的基石,通过利用代码和自动化,来标准化管理IT系统,核心目标是确保所有环境(开发、测试、生产)的配置都一致。可靠、可追溯。 2. 作用: 1)消除配置漂移:系统能自动检测并修复与预期状态的偏差,保证所有环境配置一致, 2)让系统更可靠:通过自动化避免人为失误,配置变更可审计、可回滚,让系统行为更稳定。 3)提升团队效率:开发、测试、运维环境能快速复制,文档实时更新,部署更快捷。 4)确保合规安全:完整的变更记录和审批流程,能轻松满足合规审计要求,并有效管控敏感信息。

10) 消息驱动与总线

1. 消息驱动(做什么) 定义:一种架构风格,系统组件之间通过发送和接收消息来通信,而不是直接调用。 特点:异步、解耦、可靠。发送方不需要等待接收方响应,系统弹性更好。 2. 消息总线(用什么做,通常指消息中间件) 定义:一种中间件架构。它是一条逻辑上的“总线”,所有应用都连接到它,通过它来订阅、发布或接收消息。 特点:集中路由、多对多通信。总线负责消息的分发、过滤、转换。 3. 常见消息总线 Kafka 高吞吐、持久化强、支持流处理。 日志收集、大数据分析、事件溯源。 RabbitMQ 功能丰富、稳定可靠、支持复杂路由。 传统企业应用集成、任务分发、后台作业。 RocketMQ 阿里出品,低延迟、高可用。 金融级交易、订单处理、实时同步。 ActiveMQ 老牌,支持多种协议。 传统Java应用中。 Pulsar 云原生,存储计算分离,多租户。 对多租户和弹性有高要求的场景。

11) 链路监控

1. 核心作用:还原一个请求在多个服务之间的完整调用路径,方便在错综复杂的服务网络中,一眼看清服务在哪里耗时,在哪里报错。 2. 常用方案 1)Jaeger:Uber开源,CNCF毕业项目,兼容OpenTelemetry。存储后端灵活(Cassandra/ES),UI强大。适用云原生/K8s环境,如果你在用Istio,Jaeger几乎是标配。 2)Zipkin:Twitter开源,老牌方案,稳定可靠。轻量级,部署简单,Spring Cloud Sleuth默认支持。适用Spring Cloud生态,中小规模系统。 3)SkyWalking:国产开源,Apache顶级项目。性能极强,对Java生态支持最好,自带应用性能监控与告警。适用大型Java微服务,希望一个系统同时解决链路监控和应用性能监控。 4)Pinpoint:韩国Naver开源。代码无侵入,统计信息粒度极细(能到方法级别)。适用对代码侵入零容忍,需要精细化分析方法级别耗时。 3. 技术选型 1)中小规模 /Spring Cloud:Zipkin + Sleuth 足够,轻量省事。 2)大规模Java/要应用性能监控一体化:SkyWalking 是国产优选。 3)K8s/Istio云原生:Jaeger + OpenTelemetry 是标准答案。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 22:02:58

PASTA框架:GPU加速器的模块化性能分析工具

1. PASTA框架:GPU加速器的模块化程序分析工具在深度学习和高性能计算领域,GPU加速器已成为不可或缺的计算引擎。然而,随着模型规模的不断扩大和计算需求的日益复杂,传统的性能分析工具已难以满足开发者的需求。PASTA框架应运而生&…

作者头像 李华
网站建设 2026/5/6 21:59:06

别只用来生成大头照了!解锁 GPT Image 2 的最新设计实战玩法

AI 绘画圈的头把交椅又要换人了。OpenAI 刚刚发布了最新一代生图模型 GPT-Image-2。经过第一时间的上手实测,我们可以明显感受到,它在文本输出的准确性、以及对复杂现实世界知识的理解上,表现得比此前的 Nano Banana 2 更加出色。像库拉KULAA…

作者头像 李华
网站建设 2026/5/6 21:57:31

效率倍增:用快马AI自动生成模块化树莓派环境监测站代码

最近在折腾树莓派的环境监测项目,发现从零开始写代码实在太费时间了。尤其是要同时处理传感器数据采集、本地存储和远程传输这些基础功能,经常要重复造轮子。后来发现了InsCode(快马)平台,用它的AI生成功能快速搭建了一个模块化的环境监测站框…

作者头像 李华
网站建设 2026/5/6 21:56:30

照片去背景的方法有哪些?2026年最实用的抠图工具推荐指南

最近我发现身边很多人都在问同一个问题:照片去背景的方法有哪些?无论是做电商的小老板需要处理商品图,还是学生党要制作证件照,或者自媒体创作者要处理素材,去背景这个需求真的太普遍了。我自己也经历过那种困境——手…

作者头像 李华
网站建设 2026/5/6 21:55:40

Firefox质疑Google LLM Web API论断,自身AI功能争议下推“AI Controls”

Firefox质疑Google LLM Web API论断Mozilla旗下Firefox for Web Developers官方账号日前在Mastodon上公开质疑Google关于某LLM Prompt相关Web API的“开发者强烈支持”论断。Google在blink - dev邮件列表中发布声明,称Web开发者反应“Strongly positive”&#xff0…

作者头像 李华