天天看點

架構與思維:分布式環境下,互斥性與幂等性問題,分析與解決方案

作者:猿之生活JAVA技術學堂

創作不易,關注、點贊,分享,轉發,評論,收藏,掌握網際網路前沿知識,支援一下,謝謝。

架構與思維:分布式環境下,互斥性與幂等性問題,分析與解決方案

分布式場景下概述

架構與思維:分布式環境下,互斥性與幂等性問題,分析與解決方案

随着網際網路資訊技術的快速發展,資料量越來越大,業務邏輯越來越複雜,系統高并發通路和海量資料處理的場景越來越多。

如何以較低的成本實作系統的高可用性、可擴充性和可擴充性非常重要。

為了解決系統架構的性能問題,系統架構也在不斷發展。

分布式系統由通過網絡松散耦合的獨立伺服器組成。

分布式系統具有以下特征:

1.可擴充性:通過水準擴充可以提高系統的性能和吞吐量。

2.高可靠性:高容錯性,即使一個或幾個系統出現故障,系統仍能提供服務。

3.高并發:每台機器并行獨立處理和計算。

4.廉價高效:多台小型機代替單台高性能計算機。

基于分布式系統的這些特征,最經典的有兩個問題:

1、互斥性問題。

2、幂等性問題。

分布式存儲系統中的一緻性問題

為了保持系統的高可用,同時增加讀操作的并發性,同一份資料會有多份副本,不同的副本存儲于不同的節點上

架構與思維:分布式環境下,互斥性與幂等性問題,分析與解決方案

微服務應用的分布式一緻性問題

微服務架構下,原有的單體應用按功能被拆分成一個個微服務應用,每個微服務應用被部署在不同的機器節點上,隻完成原有單體應用的某一部分功能,操作屬于該業務功能的資料庫或表。

架構與思維:分布式環境下,互斥性與幂等性問題,分析與解決方案

一緻性類型

架構與思維:分布式環境下,互斥性與幂等性問題,分析與解決方案

互斥的

互斥是對共享資源的搶占,保證了對共享資源的序列化通路。最常用的是synchronized和lock,兩個内置的鎖,适用于單個程序的多線程。

分布式系統中的程式如何互斥通路關鍵資源?

基于zookeeper的分布式鎖具有以下特點:

1.順序節點:可以避免群體奇襲效應。

2.臨時節點:為避免機器停機,鎖不能被釋放。

3.watch機制:可以及時喚醒等待的線程。

架構與思維:分布式環境下,互斥性與幂等性問題,分析與解決方案

分布式鎖在日常Coding中已經很常用。但是分布式鎖這方面的知識依然非常深奧。

幂等性

幂等性指的是,使用相同參數對同一資源重複調用某個接口的結果與調用一次的結果相同。

架構與思維:分布式環境下,互斥性與幂等性問題,分析與解決方案

常見幂等性問題

1、重複下單

2、重複消費

3、發送短信

4、form表單送出

5、接口逾時重試

繼續閱讀