偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一致性框架:供應(yīng)鏈分布式事務(wù)問(wèn)題解決方案

開(kāi)發(fā) 架構(gòu)
在當(dāng)今微服務(wù)架構(gòu)盛行的時(shí)代,分布式系統(tǒng)已經(jīng)成為企業(yè)級(jí)應(yīng)用的標(biāo)準(zhǔn)模式。然而,隨之而來(lái)的分布式事務(wù)問(wèn)題也成為了開(kāi)發(fā)人員的一大挑戰(zhàn)。在復(fù)雜的供應(yīng)鏈系統(tǒng)中,各個(gè)業(yè)務(wù)模塊之間的數(shù)據(jù)一致性一直是一個(gè)重要且棘手的問(wèn)題。物流、庫(kù)存、訂單等系統(tǒng)相互協(xié)作,如何在保證業(yè)務(wù)高效運(yùn)轉(zhuǎn)的同時(shí),確??缦到y(tǒng)操作的數(shù)據(jù)一致性?

一、前言

二、一致性理論基礎(chǔ)

    1.  一致性模型概述

    2. 最終一致性的必要性

三、供應(yīng)鏈一致性框架總體架構(gòu)

    1.  一致性框架的核心功能

    2. 一致性框架整體框架

    3. 一致性框架整體流程

四、一致性框架實(shí)現(xiàn)原理

    1.  核心組件設(shè)計(jì)

    2. 異步執(zhí)行實(shí)現(xiàn)原理

    3. 重試機(jī)制實(shí)現(xiàn)

五、領(lǐng)域模型

六、數(shù)據(jù)模型

七、一致性框架案例

八、結(jié)語(yǔ)

一、前言 

在當(dāng)今微服務(wù)架構(gòu)盛行的時(shí)代,分布式系統(tǒng)已經(jīng)成為企業(yè)級(jí)應(yīng)用的標(biāo)準(zhǔn)模式。然而,隨之而來(lái)的分布式事務(wù)問(wèn)題也成為了開(kāi)發(fā)人員的一大挑戰(zhàn)。在復(fù)雜的供應(yīng)鏈系統(tǒng)中,

各個(gè)業(yè)務(wù)模塊之間的數(shù)據(jù)一致性一直是一個(gè)重要且棘手的問(wèn)題。物流、庫(kù)存、訂單等系統(tǒng)相互協(xié)作,如何在保證業(yè)務(wù)高效運(yùn)轉(zhuǎn)的同時(shí),確??缦到y(tǒng)操作的數(shù)據(jù)一致性?

今天,我們將深入探討一個(gè)專為解決供應(yīng)鏈分布式事務(wù)問(wèn)題而設(shè)計(jì)的框架——「一致性框架」。

二、一致性理論基礎(chǔ) 

一致性模型概述

在分布式系統(tǒng)中,一致性模型主要分為幾種類型。

一致性模型類型

※  強(qiáng)一致性

任何時(shí)刻,所有節(jié)點(diǎn)看到的數(shù)據(jù)都是一樣的。

※  弱一致性

不保證所有節(jié)點(diǎn)同時(shí)看到相同的數(shù)據(jù)。

※  最終一致性

在一段時(shí)間后,所有節(jié)點(diǎn)最終會(huì)看到相同的數(shù)據(jù)。

其中,最終一致性是CAP理論(一致性、可用性、分區(qū)容忍性)中的一個(gè)重要妥協(xié)方案,它在保證系統(tǒng)高可用性的同時(shí),通過(guò)異步機(jī)制確保數(shù)據(jù)的最終一致。

圖片圖片

最終一致性的必要性

在微服務(wù)架構(gòu)的系統(tǒng)中,我們常常面臨著跨服務(wù)調(diào)用中的分布式事務(wù)問(wèn)題、網(wǎng)絡(luò)暫時(shí)性故障導(dǎo)致的調(diào)用失敗、第三方系統(tǒng)響應(yīng)慢導(dǎo)致的超時(shí)問(wèn)題等。這些問(wèn)題如果使用強(qiáng)一致性方案解決,往往會(huì)導(dǎo)致系統(tǒng)可用性下降、響應(yīng)時(shí)間增加。因此,"先完成本地事務(wù),異步確保遠(yuǎn)程調(diào)用的最終成功"的最終一致性方案被廣泛采用。

三、供應(yīng)鏈一致性框架總體架構(gòu) 

一致性框架的核心功能

供應(yīng)鏈一致性框架包含以下核心功能:

  • 聲明式API:簡(jiǎn)潔易用的接口供開(kāi)發(fā)者使用
  • 操作記錄持久化:記錄操作信息,以便重試
  • 自動(dòng)重試機(jī)制:失敗后按策略自動(dòng)重試
  • 并發(fā)控制:避免并發(fā)重試導(dǎo)致的問(wèn)題
  • 超時(shí)與熔斷:防止無(wú)效重試消耗資源
  • 監(jiān)控與告警:重試失敗達(dá)閾值時(shí)進(jìn)行告警

一致性框架整體框架

圖片圖片

一致性框架整體流程

供應(yīng)鏈的一致性框架基于Spring Boot生態(tài),這提供了簡(jiǎn)單易用的注解式API 。其總體流程如下:

初始化階段

  1. 應(yīng)用啟動(dòng)時(shí),加載一致性框架配置。
  2. 初始化線程池、策略組件、監(jiān)聽(tīng)器等核心組件。
  3. 注冊(cè)定時(shí)任務(wù)(重試任務(wù)、清理任務(wù))。

方法攔截階段

  1. AOP攔截標(biāo)注了 @EventualConsistency 注解的方法。
  2. 解析注解參數(shù)(referenceNo、是否異步、重試策略等)。
  3. 創(chuàng)建一致性操作上下文(ConsistencyContext)。

事務(wù)處理階段

  1. 執(zhí)行業(yè)務(wù)方法,記錄執(zhí)行結(jié)果。
  2. 事務(wù)提交后,進(jìn)行一致性操作的執(zhí)行。

一致性框架執(zhí)行階段

  1. 根據(jù)配置決定同步執(zhí)行或異步執(zhí)行。
  2. 保存執(zhí)行記錄到數(shù)據(jù)庫(kù)。
  3. 同步執(zhí)行直接調(diào)用目標(biāo)方法,異步執(zhí)行提交到線程池。
  4. 根據(jù)執(zhí)行結(jié)果更新記錄狀態(tài)(DONE、EXCEPTION、FAILED)。

重試階段

  1. 從數(shù)據(jù)庫(kù)找出異常狀態(tài)的記錄,包含執(zhí)行方法名、方法參數(shù)等。
  2. 執(zhí)行器重試方法。
  3. 根據(jù)執(zhí)行結(jié)果更新記錄狀態(tài)(DONE、EXCEPTION、FAILED)。

 一致性框架整體流程如下 :

圖片圖片

四、一致性框架實(shí)現(xiàn)原理 

核心組件設(shè)計(jì)

我們的一致性框架包含以下核心組件:

注解層

 @EventualConsistency 注解是框架的入口,它是一個(gè)運(yùn)行時(shí)注解,可以應(yīng)用于方法和類。其核心屬性如下:

  •  async() :控制第一次執(zhí)行是否為異步執(zhí)行,默認(rèn)為 true 。
  •  maxRetryTimes() :設(shè)置最大重試次數(shù),默認(rèn)為6次。
  •  delay() : 配置重試延遲策略,使用嵌套的 @Delay 注解。
  •  listeners() :指定監(jiān)聽(tīng)器的Bean名稱,用于監(jiān)聽(tīng)重試過(guò)程。
  •  beanName() :指定Bean名稱,用于定位執(zhí)行目標(biāo)。
  •  referenceNo() :設(shè)置業(yè)務(wù)參考號(hào),用于業(yè)務(wù)追蹤和冪等性控制。
  •  serializerListener() :指定用于序列化和反序列化的監(jiān)聽(tīng)器Bean名稱。

攔截層

 AnnotationAwareRetryOperationsInterceptor 負(fù)責(zé)攔截帶有注解 @EventualConsistency 的方法,根據(jù)注解配置創(chuàng)建相應(yīng)的執(zhí)行策略。

執(zhí)行層

執(zhí)行層負(fù)責(zé)根據(jù)當(dāng)前帶有一致性注解方法的狀態(tài)來(lái)選擇合適的執(zhí)行器,執(zhí)行帶有一致性框架注解的方法。一致性框架會(huì)記錄執(zhí)行方法的狀態(tài),包含初始化、異常、失敗和完成狀態(tài)。

根據(jù)狀態(tài)不同,會(huì)選擇不同的執(zhí)行器:

  •  SyncConsistencyExecutor :同步執(zhí)行器,在當(dāng)前線程中執(zhí)行。
  •  AsyncConsistencyExecutor :異步執(zhí)行器,通過(guò)異步線程執(zhí)行,不等待執(zhí)行結(jié)果立即返回成功。
  •  RetryConsistencyExecutor :重試執(zhí)行器,專門對(duì)執(zhí)行狀態(tài)為異常的記錄進(jìn)行重試。
  •  NestedConsistencyExecutor :嵌套執(zhí)行器,專門處理嵌套一致性調(diào)用場(chǎng)景,記錄執(zhí)行信息但不立即執(zhí)行方法,通過(guò)重試機(jī)制來(lái)執(zhí)行嵌套任務(wù),解決同一事務(wù)中嵌套調(diào)用的問(wèn)題。

持久層

使用數(shù)據(jù)庫(kù)存儲(chǔ)執(zhí)行記錄,支持記錄的創(chuàng)建、更新和查詢。大消息存儲(chǔ)到MongoDB,避免數(shù)據(jù)庫(kù)性能問(wèn)題。

異步執(zhí)行實(shí)現(xiàn)原理

異步執(zhí)行的核心是將操作持久化,然后在事務(wù)提交后異步執(zhí)行。這種設(shè)計(jì)確保了只有當(dāng)原事務(wù)提交成功后,才會(huì)執(zhí)行異步操作,避免了事務(wù)回滾后執(zhí)行異步操作的問(wèn)題。

圖片圖片

重試機(jī)制實(shí)現(xiàn)

重試機(jī)制基于以下幾個(gè)關(guān)鍵點(diǎn):

  1. 持久化記錄:記錄每次執(zhí)行的參數(shù)和狀態(tài)
  2. 定時(shí)掃描:定期掃描需要重試的記錄
  3. 分布式鎖:確保在集群環(huán)境下只有一個(gè)實(shí)例執(zhí)行重試
  4. 反射調(diào)用:通過(guò)反射動(dòng)態(tài)調(diào)用目標(biāo)方法

五、領(lǐng)域模型 

圖片圖片

六、 數(shù)據(jù)模型 

圖片圖片

七、一致性框架案例 

買家在得物App下單后,供應(yīng)鏈會(huì)接收商品發(fā)貨單據(jù)。商品從倉(cāng)庫(kù)發(fā)貨時(shí),倉(cāng)儲(chǔ)域要將發(fā)貨信息通知履約域,并扣減倉(cāng)儲(chǔ)庫(kù)存。代碼如下:

public void ship(String orderCode){
    //通知履約域
    notifyOfcShip(orderCode);
    //庫(kù)存扣減
    inventorySubtract(orderCode);


}


@EventualConsistency(referenceNo = "#orderCode")
public void notifyOfcShip(String orderCode){
     // 發(fā)貨調(diào)用履約域
}

效果:即使履約系統(tǒng)出現(xiàn)異常,庫(kù)存也能正??蹨p,確保商品發(fā)貨成功。一致性框架會(huì)重試通知履約域的方法,確保履約域發(fā)貨單狀態(tài)變更并通知交易域。

八、結(jié)語(yǔ) 

在分布式系統(tǒng)中,一致性框架是確保系統(tǒng)可靠性的重要工具。通過(guò)正確使用一致性框架,我們可以構(gòu)建既高可用又最終一致的系統(tǒng),應(yīng)對(duì)各種復(fù)雜的分布式場(chǎng)景。希望本文能幫助您更好地理解一致性框架的原理和應(yīng)用,為您的系統(tǒng)添磚加瓦。

責(zé)任編輯:武曉燕 來(lái)源: 得物技術(shù)
相關(guān)推薦

2021-06-06 12:45:41

分布式CAPBASE

2021-06-16 08:33:02

分布式事務(wù)ACID

2023-11-01 10:11:00

Java分布式

2024-06-04 10:58:30

2019-10-11 23:27:19

分布式一致性算法開(kāi)發(fā)

2022-06-21 21:47:13

數(shù)據(jù)系統(tǒng)

2017-09-22 12:08:01

數(shù)據(jù)庫(kù)分布式系統(tǒng)互聯(lián)網(wǎng)

2019-09-05 08:43:34

微服務(wù)分布式一致性數(shù)據(jù)共享

2021-11-22 16:30:30

分布式一致性分布式系統(tǒng)

2023-07-25 09:52:00

本地事務(wù)宕機(jī)

2024-01-31 09:54:51

Redis分布式

2017-09-21 10:59:36

分布式系統(tǒng)線性一致性測(cè)試

2024-11-28 10:56:55

2021-07-28 08:39:25

分布式架構(gòu)系統(tǒng)

2022-06-07 12:08:10

Paxos算法

2021-06-03 15:27:31

RaftSOFAJRaft

2017-09-04 14:46:10

分布式事務(wù)問(wèn)題

2025-03-27 03:00:00

2025-04-29 04:00:00

分布式事務(wù)事務(wù)消息

2023-08-22 09:32:44

邊緣計(jì)算管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)