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
自動化配置。