專案實戰 分布式事務的應用(一)

2021-09-24 11:17:44 字數 798 閱讀 7614

處理方式最多的大概就是保證資料的最終一致性吧。

在我們的業務系統中,快取(redis或者memcached)通常被用在資料庫之前,作為資料讀取的緩衝,使得i/o操作不至於直接落在資料庫上,造成很大的壓力。

在我們的系統中相當於做了兩層快取。首先通過建立任務,將服務端提供的一些可靜態化的基礎資料靜態化到mongodb中,此操作分為定時任務和手動執行任務。而後設定了瀏覽器快取(這塊待確認。看看**底層是怎麼設定的)。

以文章詳情為例,

首先建立任務,基於skynet分布式排程平台來實現的。大致流程如下:

任務的目的就是將服務端獲取到的資料存到mongodb中。

業務中,如果作者修改了文章,並寫到了資料庫中,但是此時使用者並不能立即從文章詳情中看到所修改的內容。因為他依然讀的快取時間內的資料,過了快取時間後還會先去讀一下mongodb中的資料。此時就造成了mongodb(快取系統)資料與資料庫系統中資料不一致的現象。

為解決這種場景下造成的資料不一致現象,允許一定時間內資料不一致,但是通過定時執行任務,傳送訊息,將資料庫系統中的資料定時更新到mongodb中。

另外除以上應用外,可以加入快取系統,有其他兩種解決方案:

為快取資料設定過期時間。當快取中資料過期後,業務系統會從資料庫中獲取資料,並將新值放入快取。這個過期時間就是系統可以達到最終一致的容忍時間。

更新資料庫資料後同時清除快取資料。資料庫資料更新後,同步刪除快取中資料,使得下次對商品詳情的獲取直接從資料庫中獲取,並同步到快取。

分布式 分布式事務

是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...

分布式事務 分布式事務的實現

如果在多個服務中需要對不同的資料庫進行操作。因為不同服務操作的資料庫都不同,所以保證在同乙個事務中完成操作顯然是不科學的。那實現分布式事務的思想 1 方法入口,建立一條日誌記錄,狀態定義為初始狀態,即儲存本條日誌記錄 可以儲存在資料庫中,也可以寫出到本地磁碟檔案 2 可以在非同步執行緒或在定時任務中...

WCF 分布式事務 應用

wcf 支援分布式事務,也就是說事務可以跨越服務 程序 機器邊界,在多個服務和客戶端間存在.那麼在wcf中如何使用分布式事務呢?下面我們以乙個例子來演示在wcf中使用分布式事務。為了便於測試,我們在建立乙個臨時表用於測試。表名為mgender.表中有兩個字段 gendercode,char 1 ge...