-
冪等性
爲什麼會出現冪等性問題呢?
在傳統單體架構中,服務調用只有成功與失敗兩種狀態,但是在分佈式環境下,服務調用還可能出現超時問題.服務調用超時如何解決呢?我們不能盲目重試,因爲我們無法確定上次調用是否成功,如果成功了還去調用,就會多調用一次.所以我們需要在服務提供方暴露一個接口用來根據請求的ID回查是否調用成功.
當然我們也可以直接重試,將接口設計成冪等性,即接口調用多次後,對服務提供方內部的影響一致(返回的數據可能不一致).
如何設計一個冪等性呢?
一般是結合實際業務,利用數據庫來設計.對插入請求,設計一個唯一鍵約束,或者利用樂觀鎖的思想.對於更新操作,也同樣利用樂觀鎖的思想.
-
最終一致性
由於強一致性不太好實現,我們可以考慮實現最終一致性.可以使用消息隊列,消費者最終可以消費數據.也可以將要調用的參數轉成JSON格式,存入數據庫,然後開一個定時任務,去輪詢數據庫,執行異步任務.第一種方案太依賴消息隊列,第二種依賴數據庫的可用性,不易於擴展.
-
分佈式鎖設計思想
- 避免"驚羣效應",釋放鎖後避免喚醒大量的進程競爭鎖.
- 考慮可重入
- 自旋鎖與阻塞鎖的考慮
- 鎖釋放的問題
分佈式理論總結
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.