成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

軟件系統(tǒng)可擴(kuò)展性背后的爭(zhēng)用、一致性和數(shù)學(xué)

譯文
開(kāi)源
如何量化系統(tǒng)的可擴(kuò)展性?人們需要了解哪些定律能夠幫助估計(jì)軟件系統(tǒng)上線之后的擴(kuò)展能力。

【51CTO.com快譯】本文將介紹如何通過(guò)數(shù)學(xué)方程來(lái)描述系統(tǒng)——至少在某種程度上是這樣的。人們將熟悉諸如爭(zhēng)用、一致性和相關(guān)性延遲之類的術(shù)語(yǔ)。此外,還將展示可以幫助計(jì)算這三種機(jī)制對(duì)應(yīng)用程序影響的定律及其數(shù)學(xué)方程。

這篇文章側(cè)重于整體系統(tǒng)設(shè)計(jì)和架構(gòu),并將嘗試回答“可以無(wú)限地?cái)U(kuò)展系統(tǒng)嗎?”這個(gè)問(wèn)題。

然而,為了充分理解這個(gè)主題,將首先回答一個(gè)更簡(jiǎn)單的問(wèn)題:什么是可擴(kuò)展性?

什么是可擴(kuò)展性?

可擴(kuò)展性的最佳定義之一可以在維基百科中找到,可以這樣引用:通過(guò)添加更多資源來(lái)處理越來(lái)越多的工作的系統(tǒng)屬性(...)

從這樣的聲明中,可以預(yù)期,如果軟件系統(tǒng)被認(rèn)為是可擴(kuò)展的,可以添加越來(lái)越多的資源(線程、CPU、節(jié)點(diǎn)),并可能處理任何增加的傳入流量。然而,這僅適用于理想世界。在令人失望的現(xiàn)實(shí)中,必須考慮以上提到的三個(gè)概念。在開(kāi)始解釋它為什么采用這種方式之前,先介紹有關(guān)線性可擴(kuò)展性的細(xì)節(jié)。

線性可擴(kuò)展性

一般來(lái)說(shuō),這是想要實(shí)現(xiàn)的最佳情況。在這里,當(dāng)向系統(tǒng)添加資源時(shí),它總是會(huì)導(dǎo)致其性能提升。更重要的是,可以無(wú)限期地做到這一點(diǎn),而不會(huì)受到任何負(fù)面影響。可以用來(lái)計(jì)算線性可擴(kuò)展性影響的數(shù)學(xué)方程非常小且簡(jiǎn)單。

線性可擴(kuò)展性方程

S→整體任務(wù)的執(zhí)行時(shí)間整體提升

N→改進(jìn)的資源(線程、CPU、節(jié)點(diǎn))

現(xiàn)在可以看到,執(zhí)行時(shí)間的整體改進(jìn)只取決于改進(jìn)的資源,所以添加的資源越多,獲得的性能提升就越大。不幸的是,如上所述,在更復(fù)雜的系統(tǒng)中幾乎不可能出現(xiàn)這種情況。

在對(duì)線性可擴(kuò)展性進(jìn)行了簡(jiǎn)要介紹之后,可以進(jìn)一步探討其他主題,先從爭(zhēng)用開(kāi)始。

什么是爭(zhēng)用?

簡(jiǎn)單地說(shuō),這是對(duì)共享資源訪問(wèn)權(quán)的競(jìng)爭(zhēng)。幾乎所有東西都可以是這樣的資源,從像CPU周期這樣的低級(jí)資源到像數(shù)據(jù)庫(kù)訪問(wèn)線程這樣的高級(jí)資源,甚至是更高的抽象資源(例如系統(tǒng)套接字)。

就像每場(chǎng)比賽一樣都只有一名獲勝者一樣,但更重要的是,在“獲勝者”勝出之后,其余的“參與者”必須等待,仍在利用和封鎖他們的資源,等待“獲勝者”完成任務(wù)之后,然后從頭開(kāi)始進(jìn)行比賽。

同樣,與任何其他比賽一樣,擁有的競(jìng)爭(zhēng)者越多,成為最終獲勝者所需的時(shí)間就越多。在面向軟件的世界中,這意味著當(dāng)將系統(tǒng)置于足夠的負(fù)載時(shí),可以預(yù)期所有可接受的時(shí)間限制都將被打破。與此同時(shí),系統(tǒng)將繼續(xù)利用其他地方可能需要的資源,這可能會(huì)導(dǎo)致越來(lái)越多的故障。

在任何類型的線程池的情況下,情況似乎更加復(fù)雜。在那里,可以看到最終有多個(gè)贏家的情況,因?yàn)橛泻芏嗑€程在線程池中,并且有多個(gè)輸家。此外,在這種情況下選擇下一個(gè)獲勝者的過(guò)程與特定的線程池實(shí)施密切相關(guān)。

現(xiàn)在,當(dāng)知道什么是爭(zhēng)用以及它可能如何影響應(yīng)用程序之后,繼續(xù)描述第一條定律。

什么是阿姆達(dá)爾定律?

阿姆達(dá)爾定律是由吉恩·阿姆達(dá)爾于1967年提出的。它描述了在資源得到改進(jìn)的系統(tǒng)中,在固定負(fù)載下任務(wù)執(zhí)行延遲的理論改進(jìn)——例如在多線程的情況下,這里指的是添加更多線程。

簡(jiǎn)而言之,它可以用來(lái)計(jì)算通過(guò)向系統(tǒng)添加更多資源而獲得的最大改進(jìn)。在這里至關(guān)重要的是,只有使用特定資源的代碼才能從這種資源改進(jìn)中獲益,這是一個(gè)非常合乎邏輯的結(jié)論,因此受到非獲益部分的執(zhí)行時(shí)間的限制。

例如:

如果想向系統(tǒng)添加更多線程,只有多線程的部分才能從這些操作中受益,而且將會(huì)受到單線程部分的執(zhí)行時(shí)間的限制。

阿姆達(dá)爾定律方程

S→整體任務(wù)執(zhí)行時(shí)間整體提升

σ→未受益于改進(jìn)資源的部分最初占用的執(zhí)行時(shí)間比例

N→改進(jìn)的資源(線程、CPU、節(jié)點(diǎn))

當(dāng)參數(shù)(σ)設(shè)置為0時(shí),阿姆達(dá)爾定律將自身簡(jiǎn)化為線性可擴(kuò)展方程形式。

可以將σ替換為(1-p),并在轉(zhuǎn)換后得到另一個(gè)與上述公式類似的方程:

p→受益于改進(jìn)資源的部分原先占用的執(zhí)行時(shí)間比例。

與p=1時(shí)的σ=0類似,阿姆達(dá)爾定律將自身簡(jiǎn)化為線性可擴(kuò)展方程形式。這兩種情況都描述了當(dāng)整個(gè)應(yīng)用程序受益于改進(jìn)資源時(shí)的最大潛在好處。

需要記住的是,這兩個(gè)方程是相等的,并且應(yīng)該為各自的數(shù)據(jù)返回相同的結(jié)果。將在示例中包括計(jì)算。

例子:

例如有一項(xiàng)工作運(yùn)行了9個(gè)小時(shí)。假設(shè)5小時(shí)長(zhǎng)的部分可以并行化和改進(jìn),改進(jìn)后的速度將是之前的三倍。

現(xiàn)在知道:

N=3

p=5/9=0.56

σ=4/9=0.44

所以

如上所見(jiàn),在這種情況下,將能夠比以前快0.59倍(大約6小時(shí)3分鐘)完成任務(wù)。

這里有兩個(gè)值得注意的事情:

(1)如果整個(gè)程序受益于系統(tǒng)資源改進(jìn),S最多可以等于3;σ=0|p=1。

(2)受益部分越大,改善越大。

在上圖中,可以看到N從0到10的繪制圖,σ=0.44,這適用于阿姆達(dá)爾定律。

阿姆達(dá)爾定律和爭(zhēng)用

由于爭(zhēng)用使每個(gè)請(qǐng)求者的可用資源越來(lái)越少,從而限制了系統(tǒng)的并行化,因此可以看到,代碼庫(kù)越有爭(zhēng)議,改進(jìn)所產(chǎn)生的整體影響就越小。

在解釋了爭(zhēng)用、爭(zhēng)用對(duì)軟件的影響以及如何計(jì)算爭(zhēng)用之后,可以轉(zhuǎn)向需要討論的第二個(gè)概念。

什么是一致性?

一致性是指處理讀/寫的順序,以確保以合理的順序查看這兩個(gè)操作。它是整個(gè)系統(tǒng)設(shè)計(jì)中最重要的主題之一。這就是它在字母C下的CAP定理中找到了其表示的原因。兩個(gè)最重要的一致性模型是最終一致性和強(qiáng)一致性。還有其他一致性模型,但它們不那么重要。

什么是相關(guān)性?

相關(guān)性是一個(gè)與一致性密切相關(guān)的術(shù)語(yǔ),是關(guān)于確保任何相關(guān)方在給定時(shí)刻看到處于相同狀態(tài)的同一特定數(shù)據(jù)段。對(duì)于在兩個(gè)或多個(gè)節(jié)點(diǎn)之間共享其部分狀態(tài)的所有系統(tǒng)來(lái)說(shuō),這是一個(gè)至關(guān)重要的概念。

什么是相關(guān)性延遲?

如果相關(guān)性是為了確保對(duì)狀態(tài)特定部分的任何請(qǐng)求返回相同的值,那么相關(guān)性延遲可以被視為達(dá)到系統(tǒng)范圍一致性所需的時(shí)間。

這里值得一提的是,向系統(tǒng)添加更多節(jié)點(diǎn)會(huì)增加相關(guān)性延遲的時(shí)間。

相關(guān)性延遲和岡瑟定律

岡瑟定律或通用可擴(kuò)展性定律(USL)由尼爾·岡瑟于1993年制定。它建立在阿姆達(dá)爾定律之上,但另外,它考慮了由于進(jìn)程間通信引起的開(kāi)銷。

通俗地說(shuō),它允許計(jì)算系統(tǒng)的可擴(kuò)展性,同時(shí)考慮并發(fā)性、爭(zhēng)用(阿姆達(dá)爾定律)和相關(guān)性延遲,使最終結(jié)果更符合實(shí)際情況。事實(shí)上,由于在方程中引入了相關(guān)性延遲,能夠看到嘗試擴(kuò)大系統(tǒng)的負(fù)面結(jié)果。

岡瑟定律方程

S→整體任務(wù)執(zhí)行時(shí)間整體提升。

σ→未受益于改進(jìn)資源的部分最初占用的執(zhí)行時(shí)間比例。

κ→系統(tǒng)用于實(shí)現(xiàn)一致性的執(zhí)行時(shí)間比例,即相關(guān)性延遲;沒(méi)有辦法計(jì)算它,必須測(cè)量它或者只是通過(guò)在等式中放置不同的值來(lái)試驗(yàn)它,查看系統(tǒng)可以擴(kuò)展的程度。

N→改進(jìn)的資源(線程、CPU、節(jié)點(diǎn))

當(dāng)描述相關(guān)性延遲(κ)的參數(shù)設(shè)置為0時(shí),岡瑟定律將自身簡(jiǎn)化為阿姆達(dá)爾定律方程形式。

例子:

數(shù)據(jù)與阿姆達(dá)爾定律的數(shù)據(jù)相同,但此外,系統(tǒng)將其正常運(yùn)行時(shí)間的7%用于使其狀態(tài)保持一致。

N=3

σ=4/9=0.44

κ=0.07

那么根據(jù)上面的計(jì)算可以做什么呢?

(1)性能改進(jìn)有所下降,而不是0.59改進(jìn),只有0.30的提升。

(2)如果繼續(xù)給系統(tǒng)增加資源,可以看到性能下降而不是增加,這里可以看到當(dāng)將N縮放到10時(shí),性能下降了0.11。

(3)從計(jì)算中可以看出,相關(guān)性延遲(κ)對(duì)整體改進(jìn)的影響比爭(zhēng)用大得多。

可以在下面找到岡瑟定律的繪圖,其中N從0到10,σ=0,44κ=0.07。可以看到,對(duì)于N等于9,開(kāi)始注意到性能下降。

如何選擇最優(yōu)的N?

這個(gè)答案很簡(jiǎn)單,但需要做一些數(shù)學(xué)運(yùn)算,本文中的大部分內(nèi)容也是如此。首先,可以將岡瑟定律視為一個(gè)函數(shù)S(N),對(duì)于任何函數(shù)(實(shí)際上只是一部分),可以計(jì)算S(N)具有最大值的點(diǎn)(N)。擁有這樣的價(jià)值提供了兩條非常重要的信息:

(1)知道在投入使用之前需要準(zhǔn)備多少資源。

(2)可以計(jì)算系統(tǒng)在當(dāng)前狀態(tài)下擴(kuò)展的范圍。

所有這一切都可以使用普通的計(jì)算器或紙筆實(shí)現(xiàn),不包括計(jì)算機(jī)(取決于計(jì)算機(jī)的先進(jìn)程度)。

最優(yōu)N方程:

例子:

正在計(jì)算所需的節(jié)點(diǎn)數(shù),以最大限度地改進(jìn)岡瑟定律示例中的數(shù)據(jù)。

σ=4/9=0.44

κ=0.07

如上所見(jiàn),最佳節(jié)點(diǎn)數(shù)為2.83,但由于無(wú)法添加部分節(jié)點(diǎn),因此會(huì)添加3個(gè)節(jié)點(diǎn)并最終得到p=3。

為了驗(yàn)證它,將計(jì)算S(4),并查看使用4個(gè)節(jié)點(diǎn)而不是3個(gè)節(jié)點(diǎn)。將實(shí)現(xiàn)多大的改進(jìn)。需要記住,S(3)=1.3。

S(4)=1.26

如上所見(jiàn),S(4)比S(3)小(稍微小一些)。

回答最后的問(wèn)題

可以無(wú)限擴(kuò)展系統(tǒng)嗎?當(dāng)然不是。

除非系統(tǒng)完全無(wú)狀態(tài)(這樣的情況很少),否則只能將其擴(kuò)展到岡瑟定律所描述的程度。如果在該限制范圍內(nèi)添加更多資源,最終將降低系統(tǒng)性能,而不是提高性能。

即使在幾乎沒(méi)有相關(guān)性延遲的最佳情況下,最終也會(huì)受到阿姆達(dá)爾定律的限制,這仍然遠(yuǎn)遠(yuǎn)不能達(dá)到線性可擴(kuò)展性的程度,要實(shí)現(xiàn)這樣的可擴(kuò)展性,基本上必須沒(méi)有狀態(tài),并且完全并行化的軟件沒(méi)有串行瓶頸。

在上圖中,可以看到繪制的圖表:線性可擴(kuò)展性(藍(lán)線)、阿姆達(dá)爾定律(綠線)和通用的可擴(kuò)展性定律(紅線)從0到5。可以清楚地看到它們之間的差異,特別是它們與期望的可擴(kuò)展性(線性)之間的距離。當(dāng)然,N越大,這種差異就越明顯。根據(jù)研究,κ參數(shù)的值沒(méi)有通用規(guī)則。它的真正價(jià)值僅取決于系統(tǒng)的復(fù)雜性。

結(jié)論

希望通過(guò)本文可以學(xué)到有關(guān)整體系統(tǒng)設(shè)計(jì)的新知識(shí),并且對(duì)將來(lái)有用。需要記住的是,可以計(jì)算可擴(kuò)展性,而線性可擴(kuò)展性是不可能的。

原文標(biāo)題:Contention, Coherency, and Math Behind Software,作者:Bartłomiej Żyliński

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:華軒 來(lái)源: 51CTO
相關(guān)推薦

2021-09-02 09:42:11

測(cè)試軟件可擴(kuò)展性開(kāi)發(fā)

2024-10-10 14:01:34

2023-06-15 15:40:36

2022-09-05 15:17:34

區(qū)塊鏈比特幣可擴(kuò)展性

2017-07-25 14:38:56

數(shù)據(jù)庫(kù)一致性非鎖定讀一致性鎖定讀

2022-03-29 10:39:10

緩存數(shù)據(jù)庫(kù)數(shù)據(jù)

2024-10-28 12:41:25

2020-04-01 15:50:17

TiDBMySQL數(shù)據(jù)庫(kù)

2022-12-14 08:23:30

2021-12-03 14:41:00

云存儲(chǔ)可擴(kuò)展性存儲(chǔ)

2012-06-04 11:04:46

虛擬化

2021-05-17 07:28:23

Spring可擴(kuò)展性項(xiàng)目

2016-10-13 14:38:51

OpenStack可擴(kuò)展性IT人員

2021-12-09 05:36:16

云存儲(chǔ)可擴(kuò)展性數(shù)據(jù)存儲(chǔ)云存儲(chǔ)

2013-04-09 10:16:28

OpenStackGrizzlyHyper-V

2021-12-05 21:06:27

軟件

2021-02-05 08:00:48

哈希算法?機(jī)器

2021-02-02 12:40:50

哈希算法數(shù)據(jù)

2010-03-18 11:01:34

VMware

2023-05-17 15:53:21

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 三级免费毛片 | 久久久久久亚洲精品不卡 | 影音先锋中文字幕在线观看 | 91麻豆精品一区二区三区 | 男女免费在线观看视频 | 日本久久精品 | 99免费精品视频 | av黄色国产 | 国产视频精品区 | 国产一区二区视频在线 | 久久99久久 | 亚洲视频二区 | 国产精品视频免费 | 亚洲成人一区二区在线 | 91中文 | 日韩av福利在线观看 | 欧洲毛片| 日韩在线免费播放 | 成人午夜激情 | 精品日韩 | 久久国产精品视频 | 91国内产香蕉 | 国产美女特级嫩嫩嫩bbb片 | 91看片视频| 国产高清精品一区二区三区 | 深夜爽视频 | 亚洲日本一区二区三区四区 | 国产成人精品综合 | 最新日韩欧美 | 一本色道精品久久一区二区三区 | 国产精品日韩欧美一区二区 | 污视频免费在线观看 | 狠狠干天天干 | 久久久久久久久久爱 | 免费视频中文字幕 | 日韩一区二区在线看 | 欧美日韩国产免费 | 欧美aa在线 | 国产欧美在线观看 | 国产精品久久国产精品久久 | 国产精品一区在线观看 |