<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 什么是分布式事務 分布式事務是指事務的參與者、支持事務的服務器、資源服務器以及事務管理器分別位于分布式系統的不同節點之上。 ## CAP 1. C Consistency 一致性。操作成功后所有節點在同一時間,存儲的數據都是完全一致的。 2. A Availability 可用性。指在**規定的時間**內返回**響應結果**。 3. P Partition Tolerance 分區容錯性。指分布式系統在遇到網絡擁塞、網卡故障等,會導致網絡故障或不通,導致整個系統環境被切分成若干個獨立的區域,形成了網絡分區,分區中的節點之間可通信,分區間不 可通信。 網絡分區出現后,各個節點之間數據無法馬上同步,為了保證高可用,分布式系統需要即刻 響應用戶的請求。但,此時可能某些節點還沒有拿到最新數據,只能將本地舊的數據返回給 用戶,從而導致數據不一致的情況。 CAP原理指出,這3個指標不能同時滿足,最多只能滿足其中的兩個。 ## CAP為什么只能滿足其中倆個? P 分區容錯性 是必須要滿足的,因為分布式本身就是系統功能部署在不同的計算機節點,這種結構就導致 P 是必選的。在滿足 P 分區容錯性 的前提 下, C 一致性 和 A 可用性 只能選擇一個,無法同時滿足。 ## CP系統 強一致性系統,一般是金融場景下用的多,該場景可以為了數據一致,容忍系統長時間無響應。 ## AP系統 適合保證 AP 放棄 C 的場景有很多。比如,很多查詢網站、電商系統中的商品查詢等,用 戶體驗非常重要,所以大多會保證系統的可用性,而犧牲一定的數據一致性。 ## 數據庫ACID * A - Atomicity(原子性),事務中的操作要么都做,要么都不做。 * C - Consistency(一致性),系統必須始終處在強一致狀態下。 * I - Isolation(隔離性),一個事務的執行不能被其他事務所干擾。 * D - Durability(持久性),一個已提交的事務對數據庫中數據的改變是永久性的。 ACID強調的是強一致性,要么全做,要么全不做 ## BASE原理 * 基本可用(Basically Available) 是指分布式系統在出現故障的時候,允許損失部分可用性,即保證核心可用。電商大促時,為了應對訪問量激增,部分用戶可能會被引導到降級頁面,服務層也可能只提供降級服務。這就是損失部分可用性的體現。 * 軟狀態(Soft State) 軟狀態是指允許系統存在中間狀態,而該中間狀態不會影響系統整體可用性。分布式存儲中一般一份數據至少會有兩到三個副本,允許不同節點間副本同步的延時就是軟狀態的體現。mysql replication的異步復制也是一種體現。 * 最終一致性(Eventual Consistency) 最終一致性是指系統中的所有數據副本經過一定時間后,最終能夠達到一致的狀態。弱一致性和強一致性相反,最終一致性是弱一致性的一種特殊情況。 BASE模型是傳統ACID模型的反面,不同與ACID,BASE強調犧牲高一致性,從而獲得可用性,**數據允許在一段時間內的不一致,只要保證最終一致就可以了**。 **基于XA協議的兩階段提交和事務補償機制就是基于ACID實現的。 而基于本地消息表和基于MQ的最終一致方案都是通過BASE原理實現的** ## 使用分布式事務的場景 1. 不同業務使用各自的數據庫,獨立的數據庫之間無法使用事務。 2. 使用微服務開發,但是只使用了一個數據庫沒物理切割,服務之間調用無法使用事務。 倆種情況都會導致數據不一致問題
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看