???????????????????????????????????????????????????????????????????????????????? S p r i n g C l o u d A l i b a b a S e a t a 處理分布式事務(wù) \color{#FF1493}{Spring Cloud Alibaba Seata 處理分布式事務(wù)} SpringCloudAlibabaSeata處理分布式事務(wù)?? ?????????
?? 仰望天空,妳我亦是行人.?
?? 個(gè)人主頁(yè)——微風(fēng)撞見(jiàn)云的博客??
?? 《數(shù)據(jù)結(jié)構(gòu)與算法》專欄的文章圖文并茂??生動(dòng)形象??簡(jiǎn)單易學(xué)!歡迎大家來(lái)踩踩~??
?? 《Java學(xué)習(xí)筆記》專欄的文章是本人在Java學(xué)習(xí)中總結(jié)的一些知識(shí)點(diǎn)~ ??
?? 《每天一點(diǎn)小知識(shí)》專欄的文章可以豐富你的知識(shí)庫(kù),滴水成河~ ??
?? 《Redis》專欄的文章是在學(xué)習(xí)Redis時(shí),整理的筆記與記錄的思考~ ??
?? 《RabbitMQ》專欄的文章是在學(xué)習(xí)尚硅谷課程時(shí)整理的筆記,方便復(fù)習(xí)鞏固~ ??
?? 希望本文能夠給讀者帶來(lái)一定的幫助~??文章粗淺,敬請(qǐng)批評(píng)指正!??
??Spring Cloud Alibaba Seata 處理分布式事務(wù)
分布式事務(wù)是在微服務(wù)架構(gòu)中常見(jiàn)的挑戰(zhàn)之一。隨著微服務(wù)的快速發(fā)展,保持?jǐn)?shù)據(jù)一致性變得越來(lái)越重要。Spring Cloud Alibaba Seata 是一個(gè)開(kāi)源的分布式事務(wù)解決方案,它提供了一套完整的工具和框架,用于管理和協(xié)調(diào)分布式事務(wù)。
分布式事務(wù)問(wèn)題
在微服務(wù)架構(gòu)中,每個(gè)服務(wù)通常都有自己的數(shù)據(jù)庫(kù)。當(dāng)一個(gè)業(yè)務(wù)操作涉及到多個(gè)服務(wù)時(shí),就需要保證這些操作要么全部成功,要么全部失敗,以保持?jǐn)?shù)據(jù)的一致性。然而,傳統(tǒng)的本地事務(wù)機(jī)制無(wú)法直接應(yīng)用于分布式環(huán)境,因?yàn)榉植际绞聞?wù)面臨網(wǎng)絡(luò)延遲、節(jié)點(diǎn)故障和并發(fā)訪問(wèn)等挑戰(zhàn)。
Seata 簡(jiǎn)介
Seata 是由阿里巴巴開(kāi)源的分布式事務(wù)解決方案。它提供了一個(gè)簡(jiǎn)單而強(qiáng)大的機(jī)制來(lái)管理和協(xié)調(diào)分布式事務(wù)。Seata 主要由三個(gè)核心組件組成:
- TC (Transaction Coordinator): TC 是事務(wù)協(xié)調(diào)器,負(fù)責(zé)協(xié)調(diào)并管理分布式事務(wù)的提交和回滾。
- TM (Transaction Manager): TM 是事務(wù)管理器,負(fù)責(zé)事務(wù)的開(kāi)始、提交和回滾操作。
- RM (Resource Manager): RM 是資源管理器,負(fù)責(zé)管理和協(xié)調(diào)參與分布式事務(wù)的各個(gè)資源。
Seata-Server 安裝
首先,我們需要安裝 Seata-Server,它是 Seata 的服務(wù)端組件。您可以按照以下步驟進(jìn)行安裝:
- 下載 Seata-Server 壓縮包并解壓。
- 進(jìn)入解壓后的目錄,修改
conf/registry.conf
文件中的注冊(cè)中心配置,例如使用 Nacos 作為注冊(cè)中心。 - 修改
conf/file.conf
文件中的事務(wù)日志存儲(chǔ)配置。 - 運(yùn)行
bin/seata-server.sh
(Linux/macOS)或bin/seata-server.bat
(Windows)啟動(dòng) Seata-Server。
實(shí)戰(zhàn)小案例
讓我們通過(guò)一個(gè)簡(jiǎn)單的示例來(lái)演示如何在 Spring Cloud Alibaba 中使用 Seata 處理分布式事務(wù)。
假設(shè)我們有兩個(gè)微服務(wù):Order-Service
和 Inventory-Service
。訂單服務(wù)負(fù)責(zé)創(chuàng)建訂單,庫(kù)存服務(wù)負(fù)責(zé)扣減庫(kù)存。當(dāng)一個(gè)訂單創(chuàng)建成功時(shí),我們需要確保庫(kù)存被正確扣減,否則需要回滾訂單操作。
以下是一個(gè)簡(jiǎn)化的示例:
// Order-Service
@Service
public class OrderService {
@Autowired
private OrderRepository orderRepository;
@Autowired
private InventoryServiceClient inventoryServiceClient;
@GlobalTransactional
public void createOrder(Order order) {
// 創(chuàng)建訂單
orderRepository.create(order);
// 調(diào)用庫(kù)存服務(wù)扣減庫(kù)存
inventoryServiceClient.decreaseStock(order.getProductId(), order.getQuantity());
}
}
// Inventory-Service
@Service
public class InventoryService {
@Autowired
private InventoryRepository inventoryRepository;
@Transactional
public void decreaseStock(Long productId, int quantity) {
// 扣減庫(kù)存
inventoryRepository.decreaseStock(productId, quantity);
}
}
在上述示例中,我們使用了 @GlobalTransactional
注解標(biāo)記了 createOrder
方法,表示該方法是一個(gè)分布式事務(wù)的入口。當(dāng) createOrder
方法執(zhí)行時(shí),Seata 將自動(dòng)創(chuàng)建一個(gè)分布式事務(wù),并協(xié)調(diào)兩個(gè)服務(wù)的事務(wù)操作。
TC/TM/RM 三個(gè)組件
Seata 的 TC、TM 和 RM 組件在示例中起著關(guān)鍵作用。以下是這些組件的詳細(xì)解釋:
-
TC (Transaction Coordinator): TC 組件負(fù)責(zé)協(xié)調(diào)并管理分布式事務(wù)的提交和回滾。它接收來(lái)自 TM 的事務(wù)操作請(qǐng)求,并與 RM 協(xié)同工作來(lái)保持事務(wù)的一致性。
-
TM (Transaction Manager): TM 組件負(fù)責(zé)事務(wù)的開(kāi)始、提交和回滾操作。在示例中,
@GlobalTransactional
注解標(biāo)記的方法會(huì)由 TM 來(lái)處理。 -
RM (Resource Manager): RM 組件負(fù)責(zé)管理和協(xié)調(diào)參與分布式事務(wù)的各個(gè)資源。在示例中,Order-Service 和 Inventory-Service 分別充當(dāng)了 RM 的角色。
AT 模式如何做到對(duì)業(yè)務(wù)的無(wú)侵入
Seata 采用了 AT (Auto-Transfer) 模式來(lái)實(shí)現(xiàn)對(duì)業(yè)務(wù)的無(wú)侵入。AT 模式是一種基于數(shù)據(jù)庫(kù)的分布式事務(wù)解決方案。Seata 通過(guò)在分布式事務(wù)中記錄和回放 SQL 日志的方式,來(lái)確保分布式事務(wù)的原子性和一致性。
在示例中,@GlobalTransactional
注解將自動(dòng)開(kāi)啟一個(gè)分布式事務(wù),并在需要的時(shí)候?qū)⑾嚓P(guān)的數(shù)據(jù)庫(kù)操作納入到事務(wù)管理中。這種方式對(duì)業(yè)務(wù)代碼是無(wú)侵入的,您可以像普通的本地事務(wù)一樣編寫(xiě)代碼,而無(wú)需關(guān)心分布式事務(wù)的處理細(xì)節(jié)。
總結(jié)
Spring Cloud Alibaba Seata 是一個(gè)功能強(qiáng)大的分布式事務(wù)解決方案,它提供了對(duì)分布式事務(wù)的管理和協(xié)調(diào)支持。通過(guò)使用 Seata,我們可以輕松處理微服務(wù)架構(gòu)中的分布式事務(wù)問(wèn)題,保證數(shù)據(jù)的一致性。
??結(jié)語(yǔ)
??初學(xué)一門(mén)技術(shù)時(shí),總有些許的疑惑,別怕,它們是我們學(xué)習(xí)路上的點(diǎn)點(diǎn)繁星,幫助我們不斷成長(zhǎng)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-520889.html
??積少成多,滴水成河。文章粗淺,希望對(duì)大家有幫助!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-520889.html
到了這里,關(guān)于【Spring Cloud Alibaba Seata 處理分布式事務(wù)】——每天一點(diǎn)小知識(shí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!