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.	

9) 配置管理

10) 消息驱动与总线

11) 链路监控

相关推荐
神奇小汤圆1 小时前
K8s生产环境那些文档不会告诉你的坑
后端
流觞 无依1 小时前
Spring Boot 未授权访问漏洞排查与修复指南
java·spring boot·后端
Java开发的小李1 小时前
SpringBoot 高流量高并发 基础全面讲解
java·spring boot·后端·性能优化
Flynt1 小时前
Uber 75000测试类JUnit迁移:OpenRewrite+Bazel实战
后端
Kqwert2 小时前
C# PDF转图片工具类 - 基于Docnet和SkiaSharp的实现
后端
随风,奔跑2 小时前
Spring Cloud Alibaba(六)-链路追踪SkyWalking
java·后端·spring·skywalking
铁皮饭盒2 小时前
成为AI全栈 - 第1课:后端到底是干嘛的?一张图拆解登录
前端·后端·ai编程
Flynt2 小时前
LangGraph 生产环境跑了三个月,我的真实感受
后端
Rust语言中文社区2 小时前
【Rust日报】2026-04-28 Pacquet:pnpm 的 Rust 重写版本
开发语言·后端·rust