日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 架構(gòu)師社區(qū)
[導(dǎo)讀]隨著互聯(lián)網(wǎng)信息技術(shù)的飛速發(fā)展,數(shù)據(jù)量不斷增大,業(yè)務(wù)邏輯也日趨復(fù)雜,對(duì)系統(tǒng)的高并發(fā)訪問、海量數(shù)據(jù)處理的場(chǎng)景也越來越多。如何用較低成本實(shí)現(xiàn)系統(tǒng)的高可用、易伸縮、可擴(kuò)展等目標(biāo)就顯得越發(fā)重要。為了解決這一系列問題,系統(tǒng)架構(gòu)也在不斷演進(jìn)。傳統(tǒng)的集中式系統(tǒng)已經(jīng)逐漸無法滿足要求,分布式系統(tǒng)被使...

隨著互聯(lián)網(wǎng)信息技術(shù)的飛速發(fā)展,數(shù)據(jù)量不斷增大,業(yè)務(wù)邏輯也日趨復(fù)雜,對(duì)系統(tǒng)的高并發(fā)訪問、海量數(shù)據(jù)處理的場(chǎng)景也越來越多。如何用較低成本實(shí)現(xiàn)系統(tǒng)的高可用、易伸縮、可擴(kuò)展等目標(biāo)就顯得越發(fā)重要。

為了解決這一系列問題,系統(tǒng)架構(gòu)也在不斷演進(jìn)。傳統(tǒng)的集中式系統(tǒng)已經(jīng)逐漸無法滿足要求,分布式系統(tǒng)被使用在更多的場(chǎng)景中。

分布式系統(tǒng)由獨(dú)立的服務(wù)器通過網(wǎng)絡(luò)松散耦合組成。在這個(gè)系統(tǒng)中每個(gè)服務(wù)器都是一臺(tái)獨(dú)立的主機(jī),服務(wù)器之間通過內(nèi)部網(wǎng)絡(luò)連接。分布式系統(tǒng)有以下幾個(gè)特點(diǎn):

  • 可擴(kuò)展性:可通過橫向水平擴(kuò)展提高系統(tǒng)的性能和吞吐量。

  • 高可靠性:高容錯(cuò),即使系統(tǒng)中一臺(tái)或幾臺(tái)故障,系統(tǒng)仍可提供服務(wù)。

  • 高并發(fā)性:各機(jī)器并行獨(dú)立處理和計(jì)算。

  • 廉價(jià)高效:多臺(tái)小型機(jī)而非單臺(tái)高性能機(jī)。


然而,在分布式系統(tǒng)中,其環(huán)境的復(fù)雜度、網(wǎng)絡(luò)的不確定性會(huì)造成諸如時(shí)鐘不一致、“拜占庭將軍問題”(Byzantine failure)等。存在于集中式系統(tǒng)中的機(jī)器宕機(jī)、消息丟失等問題也會(huì)在分布式環(huán)境中變得更加復(fù)雜。

基于分布式系統(tǒng)的這些特征,有兩種問題逐漸成為了分布式環(huán)境中需要重點(diǎn)關(guān)注和解決的典型問題:

  • 互斥性問題。

  • 冪等性問題。


今天我們就針對(duì)這兩個(gè)問題來進(jìn)行分析。


-? ? ?互斥性問題? ? -


先看兩個(gè)常見的例子:

例1:某服務(wù)記錄關(guān)鍵數(shù)據(jù)X,當(dāng)前值為100。A請(qǐng)求需要將X增加200;同時(shí),B請(qǐng)求需要將X減100。

在理想的情況下,A先讀取到X=100,然后X增加200,最后寫入X=300。B請(qǐng)求接著從讀取X=300,減少100,最后寫入X=200。

然而在真實(shí)情況下,如果不做任何處理,則可能會(huì)出現(xiàn):A和B同時(shí)讀取到X=100;A寫入之前B讀取到X;B比A先寫入等情況。

例2:某服務(wù)提供一組任務(wù),A請(qǐng)求隨機(jī)從任務(wù)組中獲取一個(gè)任務(wù);B請(qǐng)求隨機(jī)從任務(wù)組中獲取一個(gè)任務(wù)。

在理想的情況下,A從任務(wù)組中挑選一個(gè)任務(wù),任務(wù)組刪除該任務(wù),B從剩下的的任務(wù)中再挑一個(gè),任務(wù)組刪除該任務(wù)。

同樣的,在真實(shí)情況下,如果不做任何處理,可能會(huì)出現(xiàn)A和B挑中了同一個(gè)任務(wù)的情況。

以上的兩個(gè)例子,都存在操作互斥性的問題?;コ庑詥栴}用通俗的話來講,就是對(duì)共享資源的搶占問題。如果不同的請(qǐng)求對(duì)同一個(gè)或者同一組資源讀取并修改時(shí),無法保證按序執(zhí)行,無法保證一個(gè)操作的原子性,那么就很有可能會(huì)出現(xiàn)預(yù)期外的情況。因此操作的互斥性問題,也可以理解為一個(gè)需要保證時(shí)序性、原子性的問題。

在傳統(tǒng)的基于數(shù)據(jù)庫(kù)的架構(gòu)中,對(duì)于數(shù)據(jù)的搶占問題往往是通過數(shù)據(jù)庫(kù)事務(wù)(ACID)來保證的。在分布式環(huán)境中,出于對(duì)性能以及一致性敏感度的要求,使得分布式鎖成為了一種比較常見而高效的解決方案。

事實(shí)上,操作互斥性問題也并非分布式環(huán)境所獨(dú)有,在傳統(tǒng)的多線程、多進(jìn)程情況下已經(jīng)有了很好的解決方案。因此在研究分布式鎖之前,我們先來分析下這兩種情況的解決方案,以期能夠?qū)?a href="/tags/分布式" target="_blank">分布式鎖的解決方案提供一些實(shí)現(xiàn)思路。


-? ? ?多線程解決方案及原理? ? -


《Thinking in Java》書中寫到:

基本上所有的并發(fā)模式在解決線程沖突問題的時(shí)候,都是采用序列化訪問共享資源的方案。

在多線程環(huán)境中,線程之間因?yàn)楣靡恍┐鎯?chǔ)空間,沖突問題時(shí)有發(fā)生。解決沖突問題最普遍的方式就是用互斥鎖把該資源或?qū)υ撡Y源的操作保護(hù)起來。

Java JDK中提供了兩種互斥鎖Lock和synchronized。不同的線程之間對(duì)同一資源進(jìn)行搶占,該資源通常表現(xiàn)為某個(gè)類的普通成員變量。因此,利用ReentrantLock或者synchronized將共享的變量及其操作鎖住,即可基本解決資源搶占的問題。

下面來簡(jiǎn)單聊一聊兩者的實(shí)現(xiàn)原理。


-? ? ?原理? ? -


ReentrantLock

ReentrantLock主要利用CAS CLH隊(duì)列來實(shí)現(xiàn)。它支持公平鎖和非公平鎖,兩者的實(shí)現(xiàn)類似。

  • CAS:Compare and Swap,比較并交換。CAS有3個(gè)操作數(shù):內(nèi)存值V、預(yù)期值A(chǔ)、要修改的新值B。當(dāng)且僅當(dāng)預(yù)期值A(chǔ)和內(nèi)存值V相同時(shí),將內(nèi)存值V修改為B,否則什么都不做。該操作是一個(gè)原子操作,被廣泛的應(yīng)用在Java的底層實(shí)現(xiàn)中。在Java中,CAS主要是由sun.misc.Unsafe這個(gè)類通過JNI調(diào)用CPU底層指令實(shí)現(xiàn)。

  • CLH隊(duì)列:帶頭結(jié)點(diǎn)的雙向非循環(huán)鏈表(如下圖所示):

ReentrantLock的基本實(shí)現(xiàn)可以概括為:先通過CAS嘗試獲取鎖。如果此時(shí)已經(jīng)有線程占據(jù)了鎖,那就加入CLH隊(duì)列并且被掛起。當(dāng)鎖被釋放之后,排在CLH隊(duì)列隊(duì)首的線程會(huì)被喚醒,然后CAS再次嘗試獲取鎖。在這個(gè)時(shí)候,如果:

  • 非公平鎖:如果同時(shí)還有另一個(gè)線程進(jìn)來嘗試獲取,那么有可能會(huì)讓這個(gè)線程搶先獲??;

  • 公平鎖:如果同時(shí)還有另一個(gè)線程進(jìn)來嘗試獲取,當(dāng)它發(fā)現(xiàn)自己不是在隊(duì)首的話,就會(huì)排到隊(duì)尾,由隊(duì)首的線程獲取到鎖。


下面分析下兩個(gè)片段:

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;
}

在嘗試獲取鎖的時(shí)候,會(huì)先調(diào)用上面的方法。如果狀態(tài)為0,則表明此時(shí)無人占有鎖。此時(shí)嘗試進(jìn)行set,一旦成功,則成功占有鎖。如果狀態(tài)不為0,再判斷是否是當(dāng)前線程獲取到鎖。如果是的話,將狀態(tài) 1,因?yàn)榇藭r(shí)就是當(dāng)前線程,所以不用CAS。這也就是可重入鎖的實(shí)現(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)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

加利福尼亞州帕洛阿爾托和臺(tái)北2026年2月10日 /美通社/ -- Zettabyte與光寶科技(LiteOn)今日宣布達(dá)成一項(xiàng)研發(fā)合作,旨在評(píng)估一款部署于蜂窩基站或基站鄰近...

關(guān)鍵字: TE AI 分布式 軟件

5G將是下述內(nèi)容的主要介紹對(duì)象,通過這篇文章,小編希望大家可以對(duì)它的相關(guān)情況以及信息有所認(rèn)識(shí)和了解,詳細(xì)內(nèi)容如下。

關(guān)鍵字: 5G 分布式

今天,小編將在這篇文章中為大家?guī)矸植际交镜挠嘘P(guān)報(bào)道,通過閱讀這篇文章,大家可以對(duì)它具備清晰的認(rèn)識(shí),主要內(nèi)容如下。

關(guān)鍵字: 4G 5G 分布式 基站

介紹了主變中性點(diǎn)間隙零序保護(hù)的原理 ,并結(jié)合實(shí)際工程案例詳細(xì)分析了其對(duì)小電源跳閘的影響 。首先闡述了間隙零序保護(hù)是變壓器中性點(diǎn)經(jīng)間隙接地運(yùn)行時(shí)的接地故障后備保護(hù);然后以某光伏項(xiàng)目為例 ,進(jìn)一步分析了主變零序間隙保護(hù)切小電...

關(guān)鍵字: 中性點(diǎn) 間隙零序保護(hù) 分布式 小電源 分級(jí)絕緣變壓器 光伏發(fā)電系統(tǒng)

北京2025年11月26日 /美通社/ -- 11月20日,由三人行主辦的第十六屆中國(guó)(北京)人力資源博覽會(huì)暨2025HR年終盛典在京圓滿落幕。會(huì)上,「2025最具價(jià)值人力資源服務(wù)機(jī)構(gòu)」評(píng)選結(jié)果正式出爐,眾合云科旗下51...

關(guān)鍵字: SAAS 分布式 數(shù)字化 RS

突破手機(jī)渲染能力限制 ??開啟低功耗高畫質(zhì)視覺新體驗(yàn) 上海2025年11月7日 /美通社/ -- 專業(yè)的圖像和顯示處理方案提供商逐點(diǎn)半導(dǎo)體今日宣布,為真我GT8系列搭載的電競(jìng)獨(dú)顯芯片R1提供先進(jìn)的分布式渲染解決方案。該...

關(guān)鍵字: 分布式 半導(dǎo)體 芯片 REALME

石家莊2025年10月21日 /美通社/ -- 10月17日,2025中國(guó)國(guó)際數(shù)字經(jīng)濟(jì)博覽會(huì)在石家莊盛大開幕,眾合云科旗下51社保受邀參加,向與會(huì)嘉賓介紹人力資源企業(yè)服務(wù)數(shù)字化最新成果,并榮獲大會(huì)「數(shù)字技術(shù)創(chuàng)新獎(jiǎng)」。...

關(guān)鍵字: 創(chuàng)新獎(jiǎng) SAAS 數(shù)字化 分布式

慕尼黑2025年9月11日 /美通社/ -- 當(dāng)?shù)貢r(shí)間9月9日,賽力斯動(dòng)力在德國(guó)慕尼黑國(guó)際車展期間舉辦技術(shù)發(fā)布與交流會(huì),正式在海外市場(chǎng)推出全新一代賽力斯超級(jí)增程、高效發(fā)動(dòng)機(jī)和新一代分布式電驅(qū)動(dòng)系統(tǒng),同時(shí)與來自全球的汽車產(chǎn)...

關(guān)鍵字: 慕尼黑 分布式 發(fā)動(dòng)機(jī) 新能源汽車

在這篇文章中,小編將為大家?guī)矸植际侥茉吹南嚓P(guān)報(bào)道。如果你對(duì)本文即將要講解的內(nèi)容存在一定興趣,不妨繼續(xù)往下閱讀哦。

關(guān)鍵字: 能源 分布式 分布式能源
關(guān)閉