分布式架構---資料一致性
分布式架構下的資料一致性存在很多問題:1.跨系統間分布式事務如何解決?2.系統內多個服務的分布式事務如何解決?3.乙個服務內多個資料來源/資料庫的分布式事務如何解決?等等問題。
域是乙個虛擬的分類,幾個系統屬於某乙個域,例如網上銀行和手機銀行都屬於電子渠道領域;
傳統的單體應用,指的就是系統,在微服務架構下,單體應用採用前後端分離模式,前端一般使用 nginx,ngnix 程序間採用主備模式,系統的後端可以分為多個應用,每個應用有一組對等的應用程序(也稱為應用例項)提供服務,每個應用對應乙個資料庫,實際上在分庫的情況下,有可能乙個應用對應多個資料庫。複雜一點的是閘道器,閘道器由一組對等的閘道器例項組成,如果多個系統共享乙個閘道器,閘道器和系統就是1對多的關係,也可以乙個系**享乙個閘道器,就是一對一情況,
系統間的資料一致性、系統內應用間的資料一致性、應用內部對應多資料庫的資料一致性,另外可以增加乙個資料庫對應多個應用的資料一致性,處理以上情況:需要我們總結歸納,往往希望首先確定原則,這裡的原則是從業務的角度進行分析,而不是考慮技術的可能性,因為技術的可能性無窮無盡,是乙個無限組合,理論上任何情況都能發生,考慮所有情況就是不現實了,必須根據業務的特徵進行歸納。稱為資料一致性而非分布式事務就是這個道理,從業務角度目標是解決分布式情況下的資料一致性,而不是技術角度看的分布式事務。
①系統間的資料一致性
需要服務實現 tcc或者業務補償模式,由框架(業務協調器)自動呼叫,減少人工參與,或者實現冪等服務,反覆投遞。這兩種方式都沒法做到資料的 100% 一致,在失敗的時候都需要有重試的機制,例如補償失敗要重試(這就是框架的好處),多次重試還是失敗,記錄失敗歷史,業務上人工處理。不要害怕人工處理,只要減少人工處理的機會。
②系統內應用間的資料一致性
建立乙個共享的事務協調器模式,用共享的事務協調器模式,記錄服務呼叫的事件,在合適的時機呼叫tcc和補償服務。
③應用內部對應多資料庫的資料一致性,是個反模式,不要做通用方案
一般來說,乙個應用對應乙個資料庫,不允許乙個應用對應多個資料庫,多個資料庫的情況應該分成多個應用,通過服務呼叫方式解決,這是乙個基本原則,否則就是乙個反模式設計。讓設計者必須在架構解決,不是利用技術手段解決不合理的架構設計。
④乙個資料庫對應多個應用的資料一致性
共享乙個資料庫,可以把應用放在一起,乙個模組部署過於頻繁,單獨拆出來做乙個應用,那也應該和多應用多資料庫一樣處理。
資料一致性,分布式系統
最近寫了乙個關於 鐵道部購票系統的若干文章 鐵道部新客票系統的設計 一 鐵道部新客票系統的設計 二 鐵道部新客票系統的設計 三 正好遇到乙個博友,諮詢了乙個問題,這個問題正好可以作為分布式系統的資料一致性的簡單例子,當然,這個只是比較簡單的情況 現在先丟擲問題,假設有乙個主資料中心在北京m,然後有成...
分布式系統資料一致性級別
在分布式系統中乙個需要解決的重要問題就是資料的複製。分布式系統對於資料的複製需求一般都來自於以下兩個原因 所謂的分布式一致性問題,是指在分布式環境中引入資料複製機制後,不同資料節點間可能出現的,並無法依靠計算機應用程式自身解決的資料不一致情況。簡單地講,資料一致性就是指在對乙個副本資料進行更新的同時...
分布式一致性
分布式一致性是指在分布式環境中對某個副本資料進行更新操作時,必須確保其他副本也會更新,避免不同副本資料不一致。分布式系統乙個重要的問題時解決資料複製,一是為了增加系統的可用性防止單點故障,二是提高系統可用性,通過負載聚恆,使分布在不同位置的資料副本能夠提供服務。理想狀態下,當然希望分布式系統能夠實現...