SpringCloud Alibaba核心知识点
Spring Cloud Alibaba 是阿里巴巴开源的一套微服务解决方案,与 Spring Cloud 生态深度集成。以下是其主要组件及其功能:
Nacos
- 服务注册与发现:支持动态服务注册、健康监测及DNS-Based服务发现。
- 配置中心:提供分布式配置管理,支持配置动态更新和版本管理。
- 特性:AP/CP模式切换、权重路由、元数据管理。
- AP模式:适用于服务注册与发现,场景如微服务架构中允许短暂数据不一致但需保障服务持续可用
- CP模式:适用于配置管理场景,如金融、支付系统等对数据一致性要求高的领域
心跳机制核心原理
Nacos采用两种健康检查机制,对应不同类型的服务实例:
- 临时实例(Ephemeral):
- 客户端默认每5秒向Nacos服务端发送心跳包。
- 服务端若15秒未收到心跳,将实例标记为不健康状态;30秒未收到则直接剔除实例。
- 持久实例(Persistent):
- 服务端主动发起健康探测(默认20秒间隔),通过HTTP请求验证实例可用性。
- 探测失败后标记为不健康,但不会立即删除,需人工干预或持续失败后才移除。
spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848config:server-addr: 127.0.0.1:8848file-extension: yaml
Sentinel
- 流量控制:支持QPS、线程数、熔断降级等规则配置。
- 熔断降级:通过慢调用比例、异常比例触发熔断。
- 热点防护:针对高频参数自动限流。
Seata
- 分布式事务:提供AT、TCC、SAGA、XA模式。
- 核心机制:全局锁+分支事务协调,保证数据一致性。
Dubbo
OpenFeign
- RPC通信:高性能Java RPC框架,支持多种协议(如Dubbo、HTTP)。
- 集成方式:通过
@DubboTransported
注解与Spring Cloud OpenFeign兼容。
OpenFeign 是一个声明式的 HTTP 客户端,用于简化微服务之间的 RESTful API 调用。通过注解配置接口,自动生成实现类,减少手动编写 HTTP 请求代码的工作量。
核心特性
- 声明式 API 定义:通过 Java 接口和注解描述 HTTP 请求。
- 集成负载均衡:默认与 Ribbon 结合实现客户端负载均衡。
- 支持熔断降级:可与 Hystrix 或 Resilience4j 集成。
- 编码解码灵活:支持 JSON、XML 等格式,默认使用 Spring 的
HttpMessageConverter
。
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2. 启用 OpenFeign
在 Spring Boot 启动类添加 @EnableFeignClients
注解:
@SpringBootApplication
@EnableFeignClients
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
3. 定义 Feign 客户端接口
@FeignClient(name = "user-service", url = "http://localhost:8080")
public interface UserClient {@GetMapping("/users/{id}")User getUserById(@PathVariable("id") Long id);
}
@FeignClient
name
/value
:指定服务名称(用于服务发现)。url
:直接指定目标 URL(适用于非服务发现场景)。fallback
/fallbackFactory
:定义熔断降级的实现类。
核心特性
- 声明式 API 定义:通过 Java 接口和注解描述 HTTP 请求。
- 集成负载均衡:默认与 Ribbon 结合实现客户端负载均衡。
- 支持熔断降级:可与 Hystrix 或 Resilience4j 集成。
- 编码解码灵活:支持 JSON、XML 等格式,默认使用 Spring 的
HttpMessageConverter
。
Dubbo采用 RPC协议 (如 Dubbo协议 、 Hessian协议 ),通过二进制传输实现高效通信,适合内部高频调用。OpenFeign基于 HTTP协议 ( RESTful风格 ),支持跨语言调用,适合跨服务通信。
Alibaba Cloud OSS
- 对象存储:提供文件上传、下载、管理功能。
- 集成方式:通过
spring-cloud-starter-alicloud-oss
自动化配置。