[導讀]隨著互聯(lián)網(wǎng)信息技術(shù)的飛速發(fā)展,數(shù)據(jù)量不斷增大,業(yè)務邏輯也日趨復雜,對系統(tǒng)的高并發(fā)訪問、海量數(shù)據(jù)處理的場景也越來越多。如何用較低成本實現(xiàn)系統(tǒng)的高可用、易伸縮、可擴展等目標就顯得越發(fā)重要。為了解決這一系列問題,系統(tǒng)架構(gòu)也在不斷演進。傳統(tǒng)的集中式系統(tǒng)已經(jīng)逐漸無法滿足要求,分布式系統(tǒng)被使...
隨著互聯(lián)網(wǎng)信息技術(shù)的飛速發(fā)展,數(shù)據(jù)量不斷增大,業(yè)務邏輯也日趨復雜,對系統(tǒng)的高并發(fā)訪問、海量數(shù)據(jù)處理的場景也越來越多。如何用較低成本實現(xiàn)系統(tǒng)的高可用、易伸縮、可擴展等目標就顯得越發(fā)重要。為了解決這一系列問題,系統(tǒng)架構(gòu)也在不斷演進。傳統(tǒng)的集中式系統(tǒng)已經(jīng)逐漸無法滿足要求,分布式系統(tǒng)被使用在更多的場景中。分布式系統(tǒng)由獨立的服務器通過網(wǎng)絡松散耦合組成。在這個系統(tǒng)中每個服務器都是一臺獨立的主機,服務器之間通過內(nèi)部網(wǎng)絡連接。分布式系統(tǒng)有以下幾個特點:- 可擴展性:可通過橫向水平擴展提高系統(tǒng)的性能和吞吐量。
- 高可靠性:高容錯,即使系統(tǒng)中一臺或幾臺故障,系統(tǒng)仍可提供服務。
- 高并發(fā)性:各機器并行獨立處理和計算。
- 廉價高效:多臺小型機而非單臺高性能機。
然而,在分布式系統(tǒng)中,其環(huán)境的復雜度、網(wǎng)絡的不確定性會造成諸如時鐘不一致、“拜占庭將軍問題”(Byzantine failure)等。存在于集中式系統(tǒng)中的機器宕機、消息丟失等問題也會在分布式環(huán)境中變得更加復雜。基于分布式系統(tǒng)的這些特征,有兩種問題逐漸成為了分布式環(huán)境中需要重點關(guān)注和解決的典型問題:今天我們就針對這兩個問題來進行分析。
-? ? ?互斥性問題? ? -先看兩個常見的例子:例1:某服務記錄關(guān)鍵數(shù)據(jù)X,當前值為100。A請求需要將X增加200;同時,B請求需要將X減100。在理想的情況下,A先讀取到X=100,然后X增加200,最后寫入X=300。B請求接著從讀取X=300,減少100,最后寫入X=200。然而在真實情況下,如果不做任何處理,則可能會出現(xiàn):A和B同時讀取到X=100;A寫入之前B讀取到X;B比A先寫入等情況。例2:某服務提供一組任務,A請求隨機從任務組中獲取一個任務;B請求隨機從任務組中獲取一個任務。在理想的情況下,A從任務組中挑選一個任務,任務組刪除該任務,B從剩下的的任務中再挑一個,任務組刪除該任務。同樣的,在真實情況下,如果不做任何處理,可能會出現(xiàn)A和B挑中了同一個任務的情況。以上的兩個例子,都存在操作互斥性的問題?;コ庑詥栴}用通俗的話來講,就是對共享資源的搶占問題。如果不同的請求對同一個或者同一組資源讀取并修改時,無法保證按序執(zhí)行,無法保證一個操作的原子性,那么就很有可能會出現(xiàn)預期外的情況。因此操作的互斥性問題,也可以理解為一個需要保證時序性、原子性的問題。在傳統(tǒng)的基于數(shù)據(jù)庫的架構(gòu)中,對于數(shù)據(jù)的搶占問題往往是通過數(shù)據(jù)庫事務(ACID)來保證的。在分布式環(huán)境中,出于對性能以及一致性敏感度的要求,使得分布式鎖成為了一種比較常見而高效的解決方案。事實上,操作互斥性問題也并非分布式環(huán)境所獨有,在傳統(tǒng)的多線程、多進程情況下已經(jīng)有了很好的解決方案。因此在研究分布式鎖之前,我們先來分析下這兩種情況的解決方案,以期能夠?qū)?a href="/tags/分布式" target="_blank">分布式鎖的解決方案提供一些實現(xiàn)思路。
-? ? ?多線程解決方案及原理? ? -《Thinking in Java》書中寫到:基本上所有的并發(fā)模式在解決線程沖突問題的時候,都是采用序列化訪問共享資源的方案。
在多線程環(huán)境中,線程之間因為公用一些存儲空間,沖突問題時有發(fā)生。解決沖突問題最普遍的方式就是用互斥鎖把該資源或?qū)υ撡Y源的操作保護起來。Java JDK中提供了兩種互斥鎖Lock和synchronized。不同的線程之間對同一資源進行搶占,該資源通常表現(xiàn)為某個類的普通成員變量。因此,利用ReentrantLock或者synchronized將共享的變量及其操作鎖住,即可基本解決資源搶占的問題。下面來簡單聊一聊兩者的實現(xiàn)原理。
-? ? ?原理? ? -ReentrantLockReentrantLock主要利用CAS CLH隊列來實現(xiàn)。它支持公平鎖和非公平鎖,兩者的實現(xiàn)類似。- CAS:Compare and Swap,比較并交換。CAS有3個操作數(shù):內(nèi)存值V、預期值A、要修改的新值B。當且僅當預期值A和內(nèi)存值V相同時,將內(nèi)存值V修改為B,否則什么都不做。該操作是一個原子操作,被廣泛的應用在Java的底層實現(xiàn)中。在Java中,CAS主要是由sun.misc.Unsafe這個類通過JNI調(diào)用CPU底層指令實現(xiàn)。
- CLH隊列:帶頭結(jié)點的雙向非循環(huán)鏈表(如下圖所示):
ReentrantLock的基本實現(xiàn)可以概括為:先通過CAS嘗試獲取鎖。如果此時已經(jīng)有線程占據(jù)了鎖,那就加入CLH隊列并且被掛起。當鎖被釋放之后,排在CLH隊列隊首的線程會被喚醒,然后CAS再次嘗試獲取鎖。在這個時候,如果:- 非公平鎖:如果同時還有另一個線程進來嘗試獲取,那么有可能會讓這個線程搶先獲取;
- 公平鎖:如果同時還有另一個線程進來嘗試獲取,當它發(fā)現(xiàn)自己不是在隊首的話,就會排到隊尾,由隊首的線程獲取到鎖。
下面分析下兩個片段:final?boolean?nonfairTryAcquire(int?acquires)?{
? ?final?Thread current = Thread.currentThread();
? ?int?c = getState();
? ?if?(c ==?0) {
? ? ? ?if?(compareAndSetState(0, acquires)) {
? ? ? ? ? ?setExclusiveOwnerThread(current);
? ? ? ? ? ?return?true;
? ? ? ?}
? ?}
? ?else?if?(current == getExclusiveOwnerThread()) {
? ? ? ?int?nextc = c acquires;
? ? ? ?if?(nextc 0)?// overflow
? ? ? ? ? ?throw?new?Error("Maximum lock count exceeded");
? ? ? ?setState(nextc);
? ? ? ?return?true;
? ?}
? ?return?false;
}
在嘗試獲取鎖的時候,會先調(diào)用上面的方法。如果狀態(tài)為0,則表明此時無人占有鎖。此時嘗試進行set,一旦成功,則成功占有鎖。如果狀態(tài)不為0,再判斷是否是當前線程獲取到鎖。如果是的話,將狀態(tài) 1,因為此時就是當前線程,所以不用CAS。這也就是可重入鎖的實現(xiàn)原理。final?boolean?acquireQueued(final?Node node,?int?arg)?{
? ?boolean?failed =?true;
? ?try?{
? ? ? ?boolean?interrupted =?false;
? ? ? ?for?(;;) {
? ? ? ? ? ?final?Node p = node.predecessor();
? ? ? ? ? ?if?(p == head
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
今天,小編將在這篇文章中為大家?guī)泶髷?shù)據(jù)的有關(guān)報道,通過閱讀這篇文章,大家可以對大數(shù)據(jù)具備清晰的認識,主要內(nèi)容如下。
關(guān)鍵字:
大數(shù)據(jù)
分布式
Kafka
北京2022年10月17日 /美通社/ -- 存儲設備對于客戶的核心價值就是要穩(wěn)定可靠,無需什么星辰大海也不用玄妙推演,踏實將穩(wěn)定可靠做到位、保護好客戶的數(shù)據(jù),即是最大的意義所在。 北有中關(guān)村 南有馬欄山 這里的馬欄...
關(guān)鍵字:
AI
云平臺
分布式
存儲設備
北京2022年10月11日 /美通社/ -- 在1992年出版的《雪崩》一書中,作者尼爾·史蒂芬森第一次提出Metaverse(元宇宙)這一概念;斗轉(zhuǎn)星移,三十年之后,隨著Roblox上市、Facebook...
關(guān)鍵字:
區(qū)塊鏈
存儲技術(shù)
帶寬
分布式
智慧光儲進萬家 蘇州2022年9月27日 /美通社/ -- 北京時間2022年9月22日,晟高能源科技對外宣布與康佳集團達成全面戰(zhàn)略合作,成為康佳集團在國內(nèi)戶用及工商業(yè)光伏產(chǎn)品領(lǐng)域戰(zhàn)略合作單位。 ...
關(guān)鍵字:
分布式
康佳
光伏組件
新能源
北京2022年9月23日 /美通社/ -- 9月21日,國家原子能機構(gòu)在京舉辦2022年第三季論壇,發(fā)布核技術(shù)應用領(lǐng)域十件大事,展示了核技術(shù)近年來在國民經(jīng)濟領(lǐng)域的重大應用成果。同方威視自主研發(fā)的世界首套基于碳納米管冷陰極...
關(guān)鍵字:
X射線
分布式
碳納米管
BSP
(全球TMT2022年9月20日訊)9月16日至18日,借第19屆中國—東盟博覽會開展之機,首屆中國—東盟和平利用核技術(shù)論壇在廣西南寧召開。中核集團同方股份有限公司出席活動,并聯(lián)合核安保技術(shù)中心、中國原子能工業(yè)有限公司...
關(guān)鍵字:
分布式
器件
安防
并聯(lián)
北京, 2022年9月20日 /美通社/ -- 9月16日至18日,借第19屆中國—東盟博覽會開展之機,首屆中國—東盟和平利用核技術(shù)論壇在廣西南寧召開。中核集團同方股份有限公司出席活動,并聯(lián)合核安保技術(shù)中心、中...
關(guān)鍵字:
BSP
全自動
分布式
器件
西安2022年9月9日 /美通社/ -- 9月7日,由工業(yè)和信息化部節(jié)能與綜合利用司、國家能源局能源節(jié)約和科技裝備司與浙江省能源局聯(lián)合指導,中國化學與物理電源行業(yè)協(xié)會聯(lián)合232余家機構(gòu)共同支持的第十二屆中國國際儲能大會在...
關(guān)鍵字:
電力系統(tǒng)
分布式
變流器
新能源汽車
在這篇文章中,小編將為大家?guī)泶髷?shù)據(jù)的相關(guān)報道。如果你對本文即將要講解的內(nèi)容存在一定興趣,不妨繼續(xù)往下閱讀哦。
關(guān)鍵字:
大數(shù)據(jù)
云計算
分布式
北京2022年8月12日 /美通社/ -- 近日,老工業(yè)城市邁出"綠色低碳"發(fā)展新步伐。同方智慧能源有限責任公司與淄博熱電集團有限公司、邁領(lǐng)咨詢管理(青島)有限公司簽署戰(zhàn)略合作框架協(xié)議,共同...
關(guān)鍵字:
智慧能源
新能源
清潔能源
分布式
(全球TMT2022年8月13日訊)元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù),人們身邊的一切信息和資源都可以用數(shù)據(jù)來描述,元數(shù)據(jù)則是從數(shù)據(jù)資源中抽取用來說明其特征和內(nèi)容的結(jié)構(gòu)化數(shù)據(jù),用于組織、管理、保存、檢索信息和資源。浪潮分布式存儲基...
關(guān)鍵字:
分布式
元數(shù)據(jù)
SEARCH
TI
(全球TMT2022年8月12日訊)西湖大學聯(lián)手浪潮信息等科技企業(yè)建設領(lǐng)先的創(chuàng)新平臺與實驗室,為前沿科技研究構(gòu)建數(shù)據(jù)基座,創(chuàng)造影響世界、造福人類的科學知識和技術(shù)。西湖大學工學院采用了浪潮分布式存儲AS13000、AI服...
關(guān)鍵字:
節(jié)點
分布式
讀寫
INFIN
北京2022年8月11日 /美通社/ -- 堅持面向世界科技前沿,不斷向科學技術(shù)廣度和深度進發(fā)是科技工作者的初心和使命。工欲善其事,必先利其器,西湖大學聯(lián)手浪潮信息等科技企業(yè)建設領(lǐng)先的創(chuàng)新平臺與實驗室,為前沿科技研究構(gòu)建...
關(guān)鍵字:
節(jié)點
分布式
讀寫
數(shù)據(jù)安全
(全球TMT2022年8月10日訊)亞馬遜云科技宣布推出游戲行業(yè)解決方案,為游戲客戶提供從游戲開發(fā)、運行到增長的全生命周期賦能,助力行業(yè)打造"下一代游戲體驗"。亞馬遜云科技通過全球覆蓋的基礎設施、專門構(gòu)建的行業(yè)解決方案...
關(guān)鍵字:
亞馬遜
FOR
STUDIO
分布式
北京2022年8月5日 /美通社/ -- 醫(yī)療質(zhì)量管理是保障患者安全、提升患者就診體驗的核心,信息技術(shù)為醫(yī)療質(zhì)量管理提供了更加科學的管理手段。 隨著醫(yī)療信息化的高速發(fā)展,醫(yī)院信息化管理已經(jīng)從單純網(wǎng)絡化的醫(yī)院信息系統(tǒng)應用...
關(guān)鍵字:
AC
信息系統(tǒng)
分布式
數(shù)字化
(全球TMT2022年8月8日訊)浪潮推出"虛擬化云平臺+高性能服務器+統(tǒng)一全閃+分布式海量存儲"組成的解決方案。 醫(yī)院信息化平臺解決方案結(jié)構(gòu)圖 首先,浪潮采用云管理平臺對資源池進行統(tǒng)一管理,基于基礎設施虛...
關(guān)鍵字:
AC
分布式
集成系統(tǒng)
虛擬化技術(shù)
(全球TMT2022年8月4日訊)近日,Gartner公布2022年存儲和數(shù)據(jù)保護技術(shù)成熟度曲線(Hype Cycle for Storage and Data Protection Technologies, 202...
關(guān)鍵字:
分布式
存儲技術(shù)
GARTNER
軟件定義
(全球TMT2022年8月2日訊)中國信息通信研究院(以下簡稱"中國信通院")公布了第十四批大數(shù)據(jù)產(chǎn)品能力評測結(jié)果。大華股份大數(shù)據(jù)平臺,經(jīng)過評審專家資料審核、測試報告審核、質(zhì)詢與答疑、集中評議的層層專業(yè)評測,最終獲得中...
關(guān)鍵字:
大數(shù)據(jù)
分布式
數(shù)據(jù)存儲
節(jié)點
濟南2022年7月31日 /美通社/ -- 7月29日-31日,由工業(yè)和信息化部、山東省人民政府主辦的2022中國算力大會在濟南舉辦。大會以"算賦百業(yè) 力導未來"為主題,是我國算力領(lǐng)域首場全國性大會。...
關(guān)鍵字:
數(shù)字經(jīng)濟
數(shù)據(jù)中心
AI
分布式