Spring Cloud Alibaba 全解析
一、核心定位 & 核心價(jià)值(面試開(kāi)篇必答,定調(diào)必背)
? 什么是 Spring Cloud Alibaba
Spring Cloud Alibaba 是 阿里巴巴開(kāi)源的一站式微服務(wù)解決方案,是 Spring Cloud 生態(tài)的核心子項(xiàng)目,完全兼容 Spring Cloud 標(biāo)準(zhǔn)規(guī)范,是目前國(guó)內(nèi)企業(yè) 95% 以上微服務(wù)架構(gòu)的首選技術(shù)棧。
? 誕生背景(面試必考)
原生的 Spring Cloud 核心組件(Eureka、Hystrix、Zuul、Config)基于 Netflix 系列開(kāi)源組件,但 Netflix 從 2018 年開(kāi)始對(duì)核心組件陸續(xù)宣布停更 / 閉源,導(dǎo)致原生 Spring Cloud 存在穩(wěn)定性、維護(hù)性、本土化適配的問(wèn)題;阿里基于自身多年微服務(wù)實(shí)戰(zhàn)經(jīng)驗(yàn),開(kāi)源了一套本土化、高性能、一站式的微服務(wù)組件,完美替代 Netflix 組件,并且新增了熔斷限流、分布式事務(wù)、服務(wù)治理等企業(yè)剛需能力,最終整合為 Spring Cloud Alibaba 生態(tài)。
? 核心優(yōu)勢(shì)(面試必答,4 個(gè)核心亮點(diǎn))
- 一站式解決方案:一個(gè)技術(shù)棧搞定「服務(wù)注冊(cè)發(fā)現(xiàn) + 配置中心 + 熔斷限流 + 遠(yuǎn)程調(diào)用 + 網(wǎng)關(guān) + 分布式事務(wù) + 消息隊(duì)列」所有微服務(wù)核心能力;
- 完美兼容 Spring 生態(tài):無(wú)縫整合 SpringBoot/SpringCloud,開(kāi)發(fā)體驗(yàn)一致,幾乎無(wú)學(xué)習(xí)成本;
- 本土化 + 高性能:阿里自研組件,針對(duì)國(guó)內(nèi)業(yè)務(wù)場(chǎng)景深度優(yōu)化,性能遠(yuǎn)超 Netflix 原生組件;
- 組件成熟度高:所有組件均經(jīng)過(guò)阿里雙十一高并發(fā)場(chǎng)景驗(yàn)證,生產(chǎn)環(huán)境穩(wěn)定性拉滿(mǎn)。
? 對(duì)比:Spring Cloud Alibaba vs 原生 Spring Cloud(面試高頻)
| 能力維度 | 原生 Spring Cloud (Netflix) | Spring Cloud Alibaba |
|---|---|---|
| 服務(wù)注冊(cè)與發(fā)現(xiàn) | Eureka (停更)、Consul | Nacos(注冊(cè) + 配置 二合一,首選) |
| 配置中心 | Spring Cloud Config (簡(jiǎn)陋) | Nacos(動(dòng)態(tài)配置、灰度發(fā)布、配置分層) |
| 熔斷限流降級(jí) | Hystrix (停更) | Sentinel(熔斷 + 限流 + 降級(jí) + 熱點(diǎn)規(guī)則,全能) |
| 遠(yuǎn)程調(diào)用 | OpenFeign、Ribbon | OpenFeign + Nacos 負(fù)載均衡、Dubbo(高性能 RPC) |
| 網(wǎng)關(guān) | Zuul1.x (性能差)、Gateway | Spring Cloud Gateway + Nacos 整合(首選) |
| 分布式事務(wù) | 無(wú)官方組件 | Seata(阿里開(kāi)源,分布式事務(wù)事實(shí)標(biāo)準(zhǔn)) |
| 服務(wù)治理 | 弱 | Nacos 權(quán)重、隔離、元數(shù)據(jù)、健康檢查(完善) |
| 生態(tài)完善度 | 低(組件停更) | 極高(持續(xù)迭代、阿里背書(shū)) |
? 核心結(jié)論:目前國(guó)內(nèi)企業(yè)開(kāi)發(fā)微服務(wù),Spring Cloud Alibaba 是唯一首選,原生 Spring Cloud 幾乎無(wú)企業(yè)使用。
二、Spring Cloud Alibaba 核心版本兼容(實(shí)戰(zhàn)必看,避坑第一?。?/h2>
? 致命大坑:版本強(qiáng)綁定
Spring Cloud Alibaba 對(duì) SpringBoot + SpringCloud 的版本有嚴(yán)格的強(qiáng)綁定關(guān)系,版本搭配錯(cuò)誤會(huì)導(dǎo)致項(xiàng)目啟動(dòng)失敗、依賴(lài)沖突、組件失效等各種奇奇怪怪的問(wèn)題,這是新手最容易踩的坑!
核心原則:先定 SpringBoot 版本,再匹配對(duì)應(yīng) SpringCloud 和 SpringCloud Alibaba 版本,絕對(duì)不要亂選版本!
? 主流穩(wěn)定版本匹配表(生產(chǎn)環(huán)境首選,2026 年最新推薦)
? 組合1(企業(yè)首選,最穩(wěn)定):SpringBoot 2.3.9.RELEASE + SpringCloud Hoxton.SR10 + SpringCloud Alibaba 2.2.6.RELEASE
? 組合2(次選,新版本):SpringBoot 2.6.13 + SpringCloud 2021.0.5 + SpringCloud Alibaba 2021.0.5.0
? 組合3(入門(mén)學(xué)習(xí)):SpringBoot 2.2.5.RELEASE + SpringCloud Hoxton.SR3 + SpringCloud Alibaba 2.2.1.RELEASE
注意:SpringBoot 3.x 版本對(duì)應(yīng) SpringCloud Alibaba 2022.x 版本,兼容無(wú)問(wèn)題,生產(chǎn)可放心使用。
? 核心統(tǒng)一父依賴(lài)(Maven,所有微服務(wù)工程通用)
所有微服務(wù)子工程建議創(chuàng)建父工程,統(tǒng)一管理版本,避免依賴(lài)沖突,直接復(fù)制即用:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.9.RELEASE</version>
<relativePath/>
</parent>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR10</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
</properties>
<!-- 統(tǒng)一管理SpringCloud依賴(lài) -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 統(tǒng)一管理SpringCloud Alibaba依賴(lài) -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>三、Spring Cloud Alibaba 核心組件(靈魂核心,面試 + 實(shí)戰(zhàn)全覆蓋)
核心結(jié)論:Spring Cloud Alibaba 的核心就是「三大金剛 + 生態(tài)組件」,
Nacos + Sentinel + Seata是絕對(duì)核心,所有微服務(wù)架構(gòu)都圍繞這三個(gè)組件搭建,面試必考這三個(gè)組件的作用 + 原理 + 使用!所有組件均為「按需引入依賴(lài)」,哪個(gè)組件不用就不加對(duì)應(yīng)的依賴(lài),輕量化集成。
? 核心組件 1:Nacos 【注冊(cè)中心 + 配置中心 二合一,重中之重】
1. 核心定位
Nacos = Naming (服務(wù)注冊(cè)發(fā)現(xiàn)) + Configuration (配置中心),一個(gè)組件搞定兩個(gè)核心能力,完全替代 Eureka + Config + Bus,是 Spring Cloud Alibaba 的「基石組件」,所有微服務(wù)都必須接入 Nacos,面試必考 TOP1。
2. 核心能力(面試必背,缺一不可)
?? 能力①:服務(wù)注冊(cè)與發(fā)現(xiàn)(替代 Eureka/Consul)
- 所有微服務(wù)啟動(dòng)時(shí),自動(dòng)將自身服務(wù)名、IP、端口注冊(cè)到 Nacos Server;
- 微服務(wù)之間通過(guò)「服務(wù)名」遠(yuǎn)程調(diào)用,無(wú)需寫(xiě)死 IP 端口,Nacos 自動(dòng)做負(fù)載均衡;
- 支持健康檢查、服務(wù)上下線感知、權(quán)重配置、服務(wù)隔離、元數(shù)據(jù)管理;
- 核心優(yōu)勢(shì):比 Eureka 性能高、功能全,支持 AP+CP 雙模式切換,宕機(jī)自動(dòng)恢復(fù)。
?? 能力②:分布式配置中心(替代 Config+Bus)
- 所有微服務(wù)的配置文件(application.yml)統(tǒng)一托管到 Nacos,實(shí)現(xiàn)「配置集中管理」;
- 支持動(dòng)態(tài)配置刷新:配置修改后,微服務(wù)無(wú)需重啟,實(shí)時(shí)生效;
- 支持配置分層 / 分組 / 命名空間:完美適配「開(kāi)發(fā) / 測(cè)試 / 生產(chǎn)」多環(huán)境、多服務(wù)、多集群的配置隔離;
- 支持配置灰度發(fā)布、配置回滾、配置加密,企業(yè)級(jí)生產(chǎn)能力拉滿(mǎn)。
3. 最簡(jiǎn)集成步驟(所有微服務(wù)通用,直接復(fù)制)
?? 步驟 1:引入依賴(lài)
<!-- Nacos 注冊(cè)中心 + 配置中心 核心依賴(lài) -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>?? 步驟 2:配置文件(必須是 bootstrap.yml/bootstrap.properties)
核心坑:Nacos 配置中心的配置必須寫(xiě)在 bootstrap.yml,因?yàn)?bootstrap.yml 的加載優(yōu)先級(jí)高于 application.yml,保證項(xiàng)目啟動(dòng)時(shí)先從 Nacos 拉取配置,再啟動(dòng)服務(wù)。
spring:
application:
name: order-service # 服務(wù)名,核心!注冊(cè)到Nacos的唯一標(biāo)識(shí),遠(yuǎn)程調(diào)用用這個(gè)名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # Nacos服務(wù)端地址
config:
server-addr: 127.0.0.1:8848 # 同一個(gè)Nacos地址即可
file-extension: yml # 配置文件格式,yml/properties
group: DEFAULT_GROUP # 配置分組
namespace: dev # 命名空間,對(duì)應(yīng)開(kāi)發(fā)環(huán)境?? 步驟 3:?jiǎn)?dòng)類(lèi)加注解
@SpringBootApplication
@EnableDiscoveryClient // 開(kāi)啟服務(wù)注冊(cè)與發(fā)現(xiàn),SpringCloud標(biāo)準(zhǔn)注解
public class OrderServiceApplication {
public static void main(String[] args) {
SpringApplication.run(OrderServiceApplication.class, args);
}
}
4. 核心面試考點(diǎn)
- Nacos 的 AP/CP 模式切換?→ 默認(rèn)為 AP(高可用,適合服務(wù)注冊(cè)),手動(dòng)切換為 CP(強(qiáng)一致,適合配置中心);
- Nacos 和 Eureka 的區(qū)別?→ Nacos 功能更全、性能更高、支持配置中心、健康檢查更完善,Eureka 僅支持服務(wù)注冊(cè);
- Nacos 配置優(yōu)先級(jí)?→ 本地配置 <Nacos 配置,Nacos 中:命名空間> 分組 > 配置文件;
? 核心組件 2:Sentinel 【熔斷 + 限流 + 降級(jí),微服務(wù)高可用守護(hù)神】
1. 核心定位
Sentinel 是阿里開(kāi)源的流量治理組件,核心能力是 熔斷、限流、降級(jí)、熱點(diǎn)規(guī)則、系統(tǒng)保護(hù),完全替代 Hystrix,并且功能比 Hystrix 強(qiáng)大 10 倍,是保證微服務(wù)「高可用」的核心組件,面試必考 TOP2。
2. 核心解決的問(wèn)題(面試必答)
微服務(wù)架構(gòu)中,一個(gè)服務(wù)的故障會(huì)通過(guò)調(diào)用鏈路蔓延,導(dǎo)致「雪崩效應(yīng)」(一個(gè)服務(wù)掛→整條鏈路掛),Sentinel 通過(guò)三大核心能力解決:
- 限流:限制服務(wù)的 QPS / 并發(fā)數(shù),防止服務(wù)被突發(fā)流量打垮(比如秒殺、促銷(xiāo));
- 熔斷:當(dāng)被調(diào)用的服務(wù)異常率達(dá)到閾值時(shí),自動(dòng)「熔斷」調(diào)用鏈路,快速失敗,避免服務(wù)雪崩;
- 降級(jí):當(dāng)服務(wù)壓力過(guò)大時(shí),關(guān)閉非核心接口(比如商品詳情的評(píng)論、推薦),釋放資源保證核心接口可用;
3. 核心特性
- 無(wú)侵入:支持注解式開(kāi)發(fā),業(yè)務(wù)代碼無(wú)需改造;
- 實(shí)時(shí)監(jiān)控:自帶可視化控制臺(tái),實(shí)時(shí)查看流量、異常率、熔斷狀態(tài);
- 規(guī)則豐富:支持限流、熔斷、降級(jí)、熱點(diǎn)參數(shù)、系統(tǒng)保護(hù)、黑白名單等;
- 規(guī)則持久化:支持將規(guī)則持久化到 Nacos,服務(wù)重啟不丟失。
4. 最簡(jiǎn)集成步驟(直接復(fù)制)
?? 步驟 1:引入依賴(lài)
<!-- Sentinel 核心依賴(lài) -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>?? 步驟 2:配置文件
spring:
cloud:
sentinel:
transport:
dashboard: 127.0.0.1:8080 # Sentinel控制臺(tái)地址
port: 8719 # 客戶(hù)端和控制臺(tái)通信端口?? 步驟 3:業(yè)務(wù)代碼使用(注解式,零侵入)
@RestController
@RequestMapping("/order")
public class OrderController {
// 限流規(guī)則:該接口QPS最多10,超過(guò)則返回自定義提示
@GetMapping("/get/{id}")
@SentinelResource(value = "orderGet", blockHandler = "orderGetBlockHandler")
public Result getOrder(@PathVariable Long id) {
return Result.success("查詢(xún)訂單成功:" + id);
}
// 限流后的兜底方法,參數(shù)和返回值必須和原方法一致,多一個(gè)BlockException參數(shù)
public Result orderGetBlockHandler(Long id, BlockException e) {
return Result.fail(500, "接口限流啦,稍等再試!");
}
}? 核心組件 3:Seata 【分布式事務(wù),最終一致性解決方案】
1. 核心定位
Seata 是阿里開(kāi)源的分布式事務(wù)中間件,是目前 Java 微服務(wù)領(lǐng)域分布式事務(wù)的事實(shí)標(biāo)準(zhǔn),完全替代 2PC/XA/TCC 手寫(xiě)方案,也是我們上一輪詳細(xì)聊的核心內(nèi)容,面試必考 TOP3。
2. 核心定位 & 核心模式
- 解決:微服務(wù)跨服務(wù)、跨數(shù)據(jù)庫(kù)的「數(shù)據(jù)一致性」問(wèn)題(比如訂單創(chuàng)建 + 庫(kù)存扣減 + 支付扣款);
- 核心模式:AT 模式(99% 企業(yè)首選) 零侵入、最終一致性、高性能;TCC 模式(金融核心場(chǎng)景)強(qiáng)一致、侵入性強(qiáng);
- 核心角色:TC (事務(wù)協(xié)調(diào)器)、TM (事務(wù)管理器)、RM (資源管理器) (必須背會(huì));
- 核心表:
undo_log表是 AT 模式的靈魂,所有參與事務(wù)的數(shù)據(jù)庫(kù)必須創(chuàng)建該表。
3. 最簡(jiǎn)集成步驟(AT 模式,零侵入,直接復(fù)制,上一輪詳細(xì)講過(guò))
?? 步驟 1:引入依賴(lài)
<!-- Seata 核心依賴(lài) -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>?? 步驟 2:配置文件
spring:
cloud:
alibaba:
seata:
tx-service-group: my_tx_group # 事務(wù)分組,和Seata服務(wù)端一致
seata:
registry:
type: nacos
nacos:
server-addr: 127.0.0.1:8848
config:
type: nacos
nacos:
server-addr: 127.0.0.1:8848?? 步驟 3:業(yè)務(wù)代碼(零侵入,只加一個(gè)注解)
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
private StockFeignClient stockFeignClient;
@Autowired
private OrderMapper orderMapper;
// 全局事務(wù)入口:加該注解,異常時(shí)自動(dòng)回滾所有分支事務(wù)
@GlobalTransactional(rollbackFor = Exception.class)
@Override
public void createOrder(OrderDTO dto) {
// 1. 本地事務(wù):創(chuàng)建訂單
orderMapper.insert(dto);
// 2. 遠(yuǎn)程調(diào)用:扣減庫(kù)存(跨服務(wù)、跨庫(kù))
stockFeignClient.deductStock(dto.getProductId(), dto.getNum());
}
}? 核心記憶:Seata AT 模式是無(wú)侵入、最終一致性、高性能,是企業(yè)分布式事務(wù)的唯一首選。
四、Spring Cloud Alibaba 其他核心生態(tài)組件(按需集成,必懂)
以上三個(gè)是核心中的核心,以下組件是企業(yè)級(jí)微服務(wù)的「標(biāo)配能力」,按需引入即可,都是阿里生態(tài)的優(yōu)質(zhì)組件,整合成本極低:
? 1. OpenFeign 遠(yuǎn)程調(diào)用(標(biāo)配)
Spring Cloud 標(biāo)準(zhǔn)組件,基于 HTTP 的聲明式遠(yuǎn)程調(diào)用,替代原生的 RestTemplate,代碼更優(yōu)雅,無(wú)縫整合 Nacos 和 Sentinel,所有微服務(wù)必用。
<!-- OpenFeign 依賴(lài) -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
使用方式:?jiǎn)?dòng)類(lèi)加@EnableFeignClients,然后寫(xiě)接口:
@FeignClient(value = "stock-service") // 調(diào)用的服務(wù)名(Nacos注冊(cè)的名稱(chēng))
public interface StockFeignClient {
@PostMapping("/stock/deduct")
Result deductStock(@RequestParam Long productId, @RequestParam Integer num);
}
? 2. Spring Cloud Gateway 網(wǎng)關(guān)(標(biāo)配)
微服務(wù)的「統(tǒng)一入口」,替代 Zuul,基于 Netty 開(kāi)發(fā),高性能,核心能力:路由轉(zhuǎn)發(fā)、統(tǒng)一鑒權(quán)、限流、日志、跨域,所有前端請(qǐng)求都先經(jīng)過(guò)網(wǎng)關(guān),再轉(zhuǎn)發(fā)到具體微服務(wù),生產(chǎn)環(huán)境必用。
<!-- Gateway 核心依賴(lài) -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
? 3. Dubbo 高性能 RPC 調(diào)用(可選)
阿里開(kāi)源的高性能 RPC 框架,基于 TCP 協(xié)議,性能比 OpenFeign(HTTP)高 10 倍以上,適合高并發(fā)、大數(shù)據(jù)量的遠(yuǎn)程調(diào)用場(chǎng)景,無(wú)縫整合 Nacos 注冊(cè)中心,Spring Cloud Alibaba 提供了完美的整合方案。
? 4. RocketMQ 消息隊(duì)列(可選)
阿里開(kāi)源的分布式消息隊(duì)列,替代 Kafka/RabbitMQ,適合異步解耦、削峰填谷、可靠消息投遞,無(wú)縫整合 Spring Cloud Alibaba,是微服務(wù)異步化的核心組件。
? 5. Alibaba OSS / 短信 / 支付(可選)
阿里云的商業(yè)化組件,一鍵集成:對(duì)象存儲(chǔ) OSS(文件上傳)、短信服務(wù)(驗(yàn)證碼)、支付寶支付,適合企業(yè)級(jí)項(xiàng)目快速接入阿里云生態(tài)。
五、Spring Cloud Alibaba 企業(yè)級(jí)微服務(wù)完整技術(shù)棧(生產(chǎn)環(huán)境標(biāo)配,面試必背)
這是企業(yè)真實(shí)落地的技術(shù)棧組合,也是面試時(shí)回答「你們項(xiàng)目用的是什么技術(shù)棧?」的標(biāo)準(zhǔn)答案,背下來(lái)!
? 完整技術(shù)棧組合(從底層到上層,一站式)
基礎(chǔ)框架:SpringBoot 2.3.9.RELEASE + SpringCloud Hoxton.SR10 + SpringCloud Alibaba 2.2.6.RELEASE 核心組件:Nacos(注冊(cè)+配置) + Sentinel(熔斷限流) + Seata(分布式事務(wù)) 遠(yuǎn)程調(diào)用:OpenFeign(常規(guī)場(chǎng)景) + Dubbo(高并發(fā)場(chǎng)景) 網(wǎng)關(guān)組件:Spring Cloud Gateway(路由+鑒權(quán)+限流) 數(shù)據(jù)持久化:Mybatis-Plus + MySQL + Redis(緩存) 消息隊(duì)列:RocketMQ(異步解耦、可靠消息) 部署方式:Docker + Kubernetes(容器化部署) 鏈路追蹤:SkyWalking(分布式鏈路追蹤,阿里開(kāi)源)
六、Spring Cloud Alibaba 面試高頻考點(diǎn)(必考,標(biāo)準(zhǔn)答案,直接背)
? 高頻面試題 TOP10(按考頻排序,全部是考點(diǎn))
1. Spring Cloud Alibaba 核心組件有哪些?各自的作用?
答:核心三大組件:
①Nacos:服務(wù)注冊(cè)發(fā)現(xiàn) + 配置中心二合一;
②Sentinel:熔斷限流降級(jí),保證服務(wù)高可用;
③Seata:分布式事務(wù),解決跨服務(wù)數(shù)據(jù)一致性問(wèn)題。其他組件:Gateway 網(wǎng)關(guān)、OpenFeign 遠(yuǎn)程調(diào)用、Dubbo RPC 調(diào)用。
2. Nacos 的核心能力是什么?和 Eureka 的區(qū)別?
答:Nacos 有兩大核心能力:服務(wù)注冊(cè)發(fā)現(xiàn) + 分布式配置中心。
區(qū)別:
①功能:Nacos 功能更全,Eureka 僅支持注冊(cè)發(fā)現(xiàn);
②一致性:Nacos 支持 AP+CP 切換,Eureka 僅支持 AP;
③性能:Nacos 性能更高,支持健康檢查、權(quán)重配置等;
④生態(tài):Nacos 是阿里生態(tài),持續(xù)迭代,Eureka 已停更。
3. Sentinel 的核心功能是什么?和 Hystrix 的區(qū)別?
答:Sentinel 核心功能:限流、熔斷、降級(jí)、熱點(diǎn)規(guī)則、系統(tǒng)保護(hù)。
區(qū)別:
①功能:Sentinel 功能更豐富,Hystrix 僅支持熔斷和降級(jí);
②性能:Sentinel 基于原生代碼實(shí)現(xiàn),性能更高;
③易用性:Sentinel 注解式開(kāi)發(fā),控制臺(tái)更友好;
④生態(tài):Sentinel 持續(xù)迭代,Hystrix 已停更。
4. Seata 的三大核心角色是什么?AT 模式的核心原理?
答:Seata 三大角色:TC (事務(wù)協(xié)調(diào)器)、TM (事務(wù)管理器)、RM (資源管理器)。AT 模式是無(wú)侵入的最終一致性分布式事務(wù),分兩階段:
①一階段:分支事務(wù)提交,寫(xiě)入 undo_log,釋放行鎖;
②二階段:全局提交則刪除 undo_log,全局回滾則根據(jù) undo_log 自動(dòng)生成補(bǔ)償 SQL 回滾數(shù)據(jù)。
5. 微服務(wù)中分布式事務(wù)的解決方案有哪些?為什么選 Seata?
答:方案有:本地消息表、MQ 事務(wù)消息、Seata AT/TCC、2PC。選 Seata 的原因:AT 模式零侵入,開(kāi)發(fā)成本低,性能高,最終一致性滿(mǎn)足絕大多數(shù)業(yè)務(wù)場(chǎng)景,是阿里開(kāi)源的成熟組件,企業(yè)落地最多。
6. 微服務(wù)的雪崩效應(yīng)是什么?怎么解決?
答:雪崩效應(yīng)是指一個(gè)服務(wù)故障,導(dǎo)致調(diào)用鏈路中其他服務(wù)也相繼故障的連鎖反應(yīng)。解決方式:
①熔斷:Sentinel 熔斷異常服務(wù);
②限流:限制服務(wù)的 QPS;
③降級(jí):關(guān)閉非核心接口;
④隔離:服務(wù)之間做線程池隔離;
⑤緩存:熱點(diǎn)數(shù)據(jù)緩存,減少服務(wù)調(diào)用。
7. Nacos 的配置優(yōu)先級(jí)是怎樣的?
答:優(yōu)先級(jí)從高到低:Nacos 遠(yuǎn)程配置 > 本地 bootstrap.yml > 本地 application.yml。Nacos 內(nèi)部?jī)?yōu)先級(jí):命名空間 > 配置分組 > 配置文件。
8. Spring Cloud Alibaba 中如何實(shí)現(xiàn)服務(wù)的負(fù)載均衡?
答: ①基于 OpenFeign:整合 Nacos 的負(fù)載均衡,默認(rèn)輪詢(xún)策略,支持權(quán)重配置;
②基于 Dubbo:整合 Nacos 的負(fù)載均衡,支持輪詢(xún)、隨機(jī)、一致性哈希等策略; ③手動(dòng)配置:通過(guò) Nacos 的權(quán)重配置實(shí)現(xiàn)自定義負(fù)載均衡。
9. Seata AT 模式中 undo_log 表的作用是什么?
答:undo_log 是 AT 模式的核心表,三大作用:
①存儲(chǔ)數(shù)據(jù)的前置 / 后置鏡像,作為回滾的依據(jù);
②實(shí)現(xiàn)臟寫(xiě)防護(hù),通過(guò)唯一索引保證并發(fā)安全;
③標(biāo)記事務(wù)狀態(tài),作為二階段清理的依據(jù)。
10. 微服務(wù)拆分的原則是什么?
答: ①單一職責(zé)原則:一個(gè)服務(wù)只做一件事;
②業(yè)務(wù)閉環(huán)原則:一個(gè)業(yè)務(wù)流程的核心操作盡量放在一個(gè)服務(wù);
③低耦合高內(nèi)聚:服務(wù)之間盡量通過(guò)遠(yuǎn)程調(diào)用,內(nèi)部邏輯高內(nèi)聚;
④避免過(guò)度拆分:拆分粒度太細(xì)會(huì)導(dǎo)致分布式事務(wù)、調(diào)用鏈路復(fù)雜。
七、核心總結(jié)(面試 + 實(shí)戰(zhàn)速記,重中之重)
? 實(shí)戰(zhàn)核心原則
- Spring Cloud Alibaba 是國(guó)內(nèi)微服務(wù)的唯一首選,版本兼容是第一大坑,必須嚴(yán)格匹配 SpringBoot 版本;
- 核心三板斧:Nacos 做基礎(chǔ)、Sentinel 保高可用、Seata 解決一致性,這三個(gè)組件是必選;
- 分布式事務(wù)優(yōu)先選 Seata AT 模式,零侵入、高性能,99% 場(chǎng)景夠用;
- 微服務(wù)的高可用核心是「限流 + 熔斷 + 降級(jí)」,必須接入 Sentinel,避免雪崩效應(yīng)。
? 面試核心原則
- 回答組件相關(guān)問(wèn)題時(shí),先講定位,再講核心能力,最后講優(yōu)勢(shì),邏輯清晰;
- 回答分布式事務(wù)、服務(wù)雪崩等問(wèn)題時(shí),先講問(wèn)題根源,再講解決方案,最后講選型理由;
- 記住:Spring Cloud Alibaba 的核心價(jià)值是「一站式、本土化、高性能、成熟穩(wěn)定」。
到此這篇關(guān)于Spring Cloud Alibaba 詳解的文章就介紹到這了,更多相關(guān)Spring Cloud Alibaba內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)PDF附件添加與刪除的四種實(shí)用方法
在很多專(zhuān)業(yè)或?qū)W術(shù)場(chǎng)景中,PDF 文檔常常需要附帶額外的文件,本文將介紹 四種在 Java 中添加和刪除 PDF 附件的方法,感興趣的小伙伴可以了解下2026-05-05
Mybatis不啟動(dòng)項(xiàng)目直接測(cè)試Mapper的實(shí)現(xiàn)方法
在項(xiàng)目開(kāi)發(fā)中,測(cè)試單個(gè)Mybatis Mapper方法通常需要啟動(dòng)整個(gè)SpringBoot項(xiàng)目,消耗大量時(shí)間,本文介紹通過(guò)Main方法和Mybatis配置類(lèi),快速測(cè)試Mapper功能,無(wú)需啟動(dòng)整個(gè)項(xiàng)目,這方法使用AnnotationConfigApplicationContext容器2024-09-09
SpringSecurity在單機(jī)環(huán)境下使用方法詳解
本文詳細(xì)介紹了SpringSecurity和SpringBoot的整合過(guò)程,包括配置用戶(hù)認(rèn)證、JSP頁(yè)面的使用、數(shù)據(jù)庫(kù)認(rèn)證以及授權(quán)功能的實(shí)現(xiàn),感興趣的朋友一起看看吧2025-02-02
Spring的Eureka續(xù)約(心跳檢測(cè))詳解
這篇文章主要介紹了Spring的Eureka續(xù)約(心跳檢測(cè))詳解,eureka?client每隔一定的時(shí)間,會(huì)給eureka?server發(fā)送心跳,保持心跳,讓eureka?server知道自己還活著,需要的朋友可以參考下2023-11-11
關(guān)于Java的Character類(lèi)詳解
這篇文章主要介紹了關(guān)于Java的Character類(lèi)詳解,Java中的Character類(lèi)是一個(gè)包裝類(lèi),用于封裝一個(gè)基本數(shù)據(jù)類(lèi)型char的值,它提供了一些靜態(tài)方法來(lái)操作字符,需要的朋友可以參考下2023-05-05
mybatis-plus查詢(xún)無(wú)數(shù)據(jù)問(wèn)題及解決
這篇文章主要介紹了mybatis-plus查詢(xún)無(wú)數(shù)據(jù)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12

