分佈式環境各類問題 與 CAP/BASE

通訊異常sql

  • 單機內存延時在納秒級(10ns)
  • 正常一次網絡通訊延時在(0.1ms--1ms)   
  • 相差100倍

網絡分區數據庫

  • 因爲網絡發生異常,致使分佈式系統中部分網絡延時加大,最終致使僅僅有部分系節點能使用,叫作網絡分區

三態網絡

  • 三種狀態,每次請求存在三種狀態:成功、失敗、超時
    • 超時的緣由:
      • 可能根本沒發送到接收方
      • 接收方返回的結果沒發回發送方

節點故障併發

  • 分佈式系統節點出現宕機或僵死的現象

ACID事務的隔離性、一致性、原子性、持久性分佈式

  • 原子性
    • 所有成功、所有失敗
  • 一致性
    • 一個事務執行先後、數據必須保持先後一致的
  • 隔離性
    • 標準sql 定義了4個隔離級別
      1. 未受權讀
        • 一個事務還沒完成,另外一個事務能夠讀取其正在操做的數據
      2. 受權讀
        • 只容許讀取已被提交的數據
      3. 可重複讀取
        • 讀取值都和事務開始時刻一致,可能致使幻讀
        • 幻讀:不一樣時刻,同一事務執行結果不一樣
      4. 串行化
        • 最嚴格的事務隔離級別
        • 全部事務都串行執行,不能併發執行

  • 事務隔離級別越高,完整性一致性越強,同時對併發性能影響越大
  • 對於絕大多數應用程序,設置爲受權讀取
    • 既保證一致性完整性,兼顧併發性能

持久性性能

  • 對數據的變動是永久的

分佈式事務blog

  • 也稱嵌套型事務
  • 實現嚴格的事務,就要犧牲分佈式系統可用性
  • 可用性與一致性的妥協

CAP理論進程

  • 分佈式系統不能同時知足C(consitency)一致性、A(availablity)可用性、P(partition tolerance)分區容錯性
  • 最多隻能同時知足倆
  • 一致性
    • 數據在多個副本之間是否保持一致
    • 一個節點上數據更新後,在其餘節點上能讀到更新後的數據,稱爲一致
  • 可用性
    • 用戶的操做須要在「有限的時間內」  「返回結果」(兩者缺一 都不叫可用)
      • 有限時間:用戶對於不一樣系統的指望值是不同的
  • 分區容錯性
    • 分佈式系統遇到任何網絡分區故障的時候,仍然能提供一致性和可用性的服務

  • 分區容錯性每每是分佈式系統的一個基本要求,所以,大多數分佈式系統都是在一致性可用性之間作平衡

BASE 理論事務

  • BA(基本可用)、S(軟狀態)、E(最終一致性)
  • BASE 是對CAP 理論可用性、一致性權衡的結果,是大型互聯網系統分佈式實踐的總結
  • 基本可用
    • 是指系統遇到不可預知故障時,容許損失部分可用性(好比雙十一,部分次要功能下線)
      • 好比時間上損失(搜索結果不是0.5秒返回結果,1--2秒返回)
      • 好比雙十一部分消費者被引導到降級頁面
  • 軟狀態
    • 容許出現中間狀態,容許在不一樣節點之間複製數據延時
  • 最終一致性
    • 五大類變種:
      • 因果一致性
        • A更新數據後通知B,B操做要基於A更新後的值
        • 不相關的 C操做無限制
      • 讀本身所寫
        • 本身只能看到本身更新的最新數據
      • 會話一致性
        • 同一會話中總能讀到更新後的最新值
      • 單調讀一致性
        • 一個進程從系統中讀取數據項某個值,該進程不能讀到比這個值更舊的值
      • 單調寫一致性
        • 系統保證同一進程全部寫順序執行
    • 能夠將上述5項中,部分項結合起來構建最終一致性的分佈式系統
      • ​​​​​​​關係型數據庫,提供最終一致性典範
相關文章
相關標籤/搜索