分佈式理論總結

  • 冪等性

    爲什麼會出現冪等性問題呢?

    在傳統單體架構中,服務調用只有成功與失敗兩種狀態,但是在分佈式環境下,服務調用還可能出現超時問題.服務調用超時如何解決呢?我們不能盲目重試,因爲我們無法確定上次調用是否成功,如果成功了還去調用,就會多調用一次.所以我們需要在服務提供方暴露一個接口用來根據請求的ID回查是否調用成功.

    當然我們也可以直接重試,將接口設計成冪等性,即接口調用多次後,對服務提供方內部的影響一致(返回的數據可能不一致).

    如何設計一個冪等性呢?

    一般是結合實際業務,利用數據庫來設計.對插入請求,設計一個唯一鍵約束,或者利用樂觀鎖的思想.對於更新操作,也同樣利用樂觀鎖的思想.

  • 最終一致性

    由於強一致性不太好實現,我們可以考慮實現最終一致性.可以使用消息隊列,消費者最終可以消費數據.也可以將要調用的參數轉成JSON格式,存入數據庫,然後開一個定時任務,去輪詢數據庫,執行異步任務.第一種方案太依賴消息隊列,第二種依賴數據庫的可用性,不易於擴展.

  • 分佈式鎖設計思想

    1. 避免"驚羣效應",釋放鎖後避免喚醒大量的進程競爭鎖.
    2. 考慮可重入
    3. 自旋鎖與阻塞鎖的考慮
    4. 鎖釋放的問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章