云平臺并發(fā)技術(shù)知多少

什么是并發(fā)(concurrency)

當(dāng)你在餐廳品味美食的時候,電話鈴聲突然騷然了你美好的心情。此時有以下選擇。

A. 如果心情郁悶,沒接電話,繼續(xù)吃飯。此時的你就不支持并發(fā)。

B. 如果是美女打過來的電話,立馬接通吃飯,跟美女暢談一番,談好約會日期掛掉電話,哼著小曲繼續(xù)吃完剩下的美食。此時的你就支持并發(fā)。兩件事情都沒有耽誤。

C. 如果是同事打來的電話, 接通電話后一遍回答同事的問題咨詢,一遍繼續(xù)咀嚼著送入口中的美食。 恭喜你,此時你已經(jīng)達到了并發(fā)更高的境界:并行能力(parallelism)。

所以如果具有B和C的能力的人或者物,是具有并發(fā)能力的。并行技術(shù)可以看作是并發(fā)的一個至高境界,就像你已經(jīng)練成了乾坤大挪移的第七層。他們的關(guān)系如下圖所示。

云平臺并發(fā)技術(shù)知多少

并發(fā)與并行的主要區(qū)別是否在“同時”。 并發(fā)是你在做某件事情的時候,可以暫停處理當(dāng)前事情來處理某件新的事情,完成后再繼續(xù)處理之前的事情,由于來回切換速度很快,在用戶看來接近是同時進行的。 并行是兩個人同時在做兩件事情。只有多個核的系統(tǒng)才能實現(xiàn)并行,每個核做一件事情。如果單核的系統(tǒng),只能支持并發(fā)執(zhí)行。

作為一個云操作系統(tǒng)平臺,需要同一時間內(nèi)能夠處理數(shù)以千計的任務(wù)量,那是怎么實現(xiàn)的? 那就依賴于進程,線程,綠色線程等技術(shù)。

什么是進程和線程

如果使用電腦辦公的話,大家每天都在與進程或者線程打交道。 比如打開一個瀏覽器上網(wǎng), 同時為了增加情調(diào)又打開播放器聽一些輕音樂。 這每打開一個程序就會啟動一個進程,甚至一個瀏覽器進程中還會啟動一些線程或者子進程來處理其中的視頻,搜索等業(yè)務(wù)。所以說當(dāng)你打開電腦的一瞬間,你已經(jīng)開始使用進程和線程了。 每個進程和線程都在做自己的事情,讓你感覺你可以使用電腦同時并發(fā)做很多事情,多么美妙的事情啊。

那么進程和線程的關(guān)系可以用下圖來說明。

云平臺并發(fā)技術(shù)知多少

操作系統(tǒng)可以看成是一個包含多個進程的容器,其中每個進程都是包含多個線程的容器。所以在操作系統(tǒng)中,進程可以在一個操作系統(tǒng)內(nèi)實現(xiàn)多個任務(wù)的并發(fā)執(zhí)行。 如打開一個音樂播放器,同時打開一個瀏覽器查詢資料。 然而線程可以實現(xiàn)一個進程內(nèi)的并發(fā)執(zhí)行。比如一個線程用于音樂播放器的界面的呈現(xiàn),另一個線程用于播放音樂。 正是進程和線程的分工合作, 我們用戶能夠感受到并發(fā)的完成多件事情。

只有進程就滿足了嗎

進程和線程是有顯著的不同的。系統(tǒng)分配了進程后, 會同時給進程分配一個臨時的存儲空間(Memory)。 打個比方, 比如你是系統(tǒng)創(chuàng)建的一個進程,完成去超市購物的任務(wù),然后分配一個購物車就是一個存儲空間。 此購物車僅用于你自己使用,不認(rèn)識的人是不能共享使用的。 因此進程之間是不能夠共享內(nèi)存空間(Memory)的。 除非是通過類似IPC等高級技術(shù)來共享內(nèi)存空間。

與進程不一樣的是,線程是進程申請由系統(tǒng)創(chuàng)建的。一個進程內(nèi)部可以創(chuàng)建多個線程,這些線程可以共享該進程的內(nèi)存空間(Memory),這個線程之間就可以更快速的共享數(shù)據(jù)。比如你為了更快的購物,帶了你女朋友去購物,這就相當(dāng)于你創(chuàng)建了一個線程-女朋友來幫你購物。 女朋友當(dāng)然可以使用你的購物車,這就是共享了內(nèi)存空間。如下圖所示。

云平臺并發(fā)技術(shù)知多少

如果所有任務(wù)都使用線程來完成, 整個系統(tǒng)資源會被數(shù)以千計的進程耗光,因為每啟動一個進程都會分配內(nèi)存空間。當(dāng)然超時的購物車也會被用完了。

因此大部分情況跟下需要在進程內(nèi)使用線程來實現(xiàn)不同任務(wù)的并發(fā)處理。 你可以多找?guī)讉€朋友來幫你購物,又不耗費更多的購物車。

線程能實現(xiàn)更細(xì)粒度的并發(fā)

線程可以由操作系統(tǒng)在內(nèi)核中創(chuàng)建,也可以在用戶程序中創(chuàng)建。 從操作系統(tǒng)中申請的是原生線程(Native Thread),相當(dāng)于是租賃的房子,只能擁有使用權(quán),但是沒有該房屋的支配權(quán),不能隨意買賣。 在用戶程序創(chuàng)建的線程一般稱之為綠色線程(Green Thread),相當(dāng)于你自己買了套房子,可以使用,還可以擁有該房屋的支配權(quán),可以決定是否買賣。

原生線程

原生線程可以實現(xiàn)進程內(nèi)部的并發(fā)處理。 每當(dāng)一個任務(wù)來臨的時候,進程向操作系統(tǒng)申請一個線程來處理這個任務(wù)。

舉個有趣例子解釋下下,系統(tǒng)啟動了一個“做飯”的進程, 并申請了一個廚房作為內(nèi)存空間。 進程又申請了兩個廚師線程來做飯。 廚師A負(fù)責(zé)炒菜做飯。廚師B負(fù)責(zé)洗菜,切菜,準(zhǔn)備食材。 廚師B準(zhǔn)備好食材,廚師A就開始做飯,兩個線程分別完成自己的事情,實現(xiàn)并發(fā),如圖A。

云平臺并發(fā)技術(shù)知多少

在某一個時刻,可能會出現(xiàn)以下兩個問題。

a) 如果廚師A做飯速度很快,在某一個時刻廚師B沒有準(zhǔn)備好食材。 那廚師A只能等待廚師B準(zhǔn)備好才能繼續(xù),此時廚師A一直在等待。

b) 由于對廚師A沒有支配權(quán)所有無法臨時讓他去幫助準(zhǔn)備食材。

c) 此時可能考慮到增加效率,需要再招聘一個廚師C線程進行準(zhǔn)備食材。 這就增加了支出成本。

下面介紹的綠色線程即將解決這些問題。

綠色線程

“綠色線程”這個名稱是指Sun Microsystem的綠色團隊,他們在90年代設(shè)計了最初的Java線程庫。但是其他一些編程語言Go、Haskell,Rust或者Python等都實現(xiàn)了與綠色線程等價的功能。

綠色線程是相當(dāng)于是一個線程內(nèi)的模擬線程,并不是真正的線程。其關(guān)系可以用下圖表示。

云平臺并發(fā)技術(shù)知多少

接著上面的例子,綠色線程我們可以看作是一個“規(guī)劃”。如下圖所示。

云平臺并發(fā)技術(shù)知多少

a) 綠色線程不是操作系統(tǒng)創(chuàng)建的。 而是由有用戶程序創(chuàng)建的, 能夠由于絕對的支配權(quán)。 因此可以讓廚師A做飯也可以準(zhǔn)備食材。

b) 廚師A在等待期間可以切換到規(guī)劃2上面去,準(zhǔn)備食材。等準(zhǔn)備好食材, 又切換到規(guī)劃1上繼續(xù)做飯,這樣不斷切換可以做兩件。

c) 由于廚師A可以幫助廚師B準(zhǔn)備食材,所以可以不需要一個廚師C, 這樣就減少了開銷。

并發(fā)對云平臺意義重大

一個穩(wěn)定可靠的云平臺,需要有較高的及時響應(yīng)和處理能力。 所以并發(fā)能力是衡量云平臺能力的重要指標(biāo)。當(dāng)前國內(nèi)的有華為云,阿里云,騰信云等;國外有亞馬遜, 微軟等云提供商, 都支持了不同程度的并發(fā)能力來解決越來越多的業(yè)務(wù)處理。 作為國內(nèi)重要的云供應(yīng)商,烽火通信從2010年就在云計算重點布局,早已基于開源OpenStack平臺架構(gòu)推出了FitOS云平臺,具有如下特點。

1. 基于開源CentOS操作系統(tǒng)的多核處理技術(shù),能夠?qū)崿F(xiàn)高并發(fā)和并行的處理能力。

2. 不同模塊使用不同進程處理任務(wù),每個模塊都使用線程和綠色線程來實現(xiàn)更細(xì)粒度的并發(fā)處理能力,極大的提高了響應(yīng)效率和系統(tǒng)的可伸縮能力。

3. 加入線程同步和進程僵死檢測機制,讓系統(tǒng)更可靠更性能。

經(jīng)過多年的研發(fā)積淀和優(yōu)化,F(xiàn)itOS云平臺能夠滿足私有云,電信云等不同場景的業(yè)務(wù)需求。目前,烽火云產(chǎn)品已累計部署110+數(shù)據(jù)中心,管理7000+節(jié)點,儲存容量逾600PB,提供客戶很好的體驗。

極客網(wǎng)企業(yè)會員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2020-01-08
云平臺并發(fā)技術(shù)知多少
什么是并發(fā)(concurrency)當(dāng)你在餐廳品味美食的時候,電話鈴聲突然騷然了你美好的心情。此時有以下選擇。A. 如果心情郁悶,沒接電話,繼續(xù)吃飯。

長按掃碼 閱讀全文