彭立志 孫麗娟 喬善平
摘要:從分布式系統(tǒng)課程中歸納、總結(jié)出一些對立統(tǒng)一的概念和方法,指出這些概念和方法是分布式系統(tǒng)課程的精髓所在,它們對于學(xué)生理解、掌握分布式系統(tǒng)至關(guān)重要。闡明學(xué)習(xí)分布式系統(tǒng)中辨證概念與方法的方法,通過有意識地學(xué)習(xí)這些知識點和方法,能有效地鍛煉學(xué)生的辨證思維能力。
關(guān)鍵詞:分布式系統(tǒng);網(wǎng)絡(luò)工程;對立統(tǒng)一
0.引言
分布式系統(tǒng)作為網(wǎng)絡(luò)工程專業(yè)的一門專業(yè)課,有著深厚的歷史背景。從計算機網(wǎng)絡(luò)誕生以來,分布式系統(tǒng)作為計算機網(wǎng)絡(luò)資源共享的軟件手段,一直伴隨著網(wǎng)絡(luò)技術(shù)一起成長。從最初的文件共享,到現(xiàn)代的大規(guī)模分布式計算、高性能并行計算,以及近年的云計算,無一不架構(gòu)在分布式系統(tǒng)理論基石之上。近年來,國內(nèi)各高校網(wǎng)絡(luò)工程專業(yè)紛紛開設(shè)這一原理性很強的課程。原理性強意味著枯燥、不好學(xué),因此探索學(xué)習(xí)該課程的有效方法,已成為分布式系統(tǒng)課程教學(xué)研究的一個重要課題。不少學(xué)者就這一課程的教學(xué)方法和學(xué)習(xí)方法進行了深入的研究。
縱觀分布式系統(tǒng)課程的知識體系,對立統(tǒng)一的概念貫穿始終,幾乎每一項大的知識點均包含對立統(tǒng)一概念,這說明分布式系統(tǒng)本身就是客觀綜合事物。這些成對出現(xiàn)的對立統(tǒng)一概念構(gòu)成了分布式系統(tǒng)課程的概念體系,有些概念對甚至在多個知識點中出現(xiàn),并支撐這些知識點的邏輯推理方法。例如“分布式”與“集中式”這一對概念,貫穿整個課程知識體系,在時鐘同步、互斥、進程組織、故障處理、安全等各個方面中都有所涉及。理解這一具有鮮明特點的概念體系是學(xué)習(xí)分布式系統(tǒng)的關(guān)鍵。本文就課程中重要的對立統(tǒng)一概念和方法進行詳細討論。
1.分布式與集中式
分布式與集中式是兩種對立統(tǒng)一的思維方式,是分布式系統(tǒng)課程中最重要的對立統(tǒng)一概念。分布式方法是在組織分布式系統(tǒng)的對象時,以“民主”的方式進行決策管理;而集中式方法正好相反,以“集權(quán)”的方式對分布式系統(tǒng)進行決策管理。以下結(jié)合幾個重要的示例闡述這一對立統(tǒng)一概念。
1.1集中式物理時鐘同步算法與分布式物理時鐘同步算法
集中式物理時鐘同步算法主要有Cristian算法和Berkeley算法,這兩種算法有個共同的特點,就是系統(tǒng)中都有一臺時鐘服務(wù)器與標(biāo)準(zhǔn)UTC時間對時,所有工作站的時鐘都以該服務(wù)器為準(zhǔn)。換言之,時鐘服務(wù)器在系統(tǒng)中充當(dāng)集中式的決策者。例如Cristian算法同步過程如下:
時間服務(wù)器接收UTC時間,其他機器必須與時間服務(wù)器同步;
每臺機器以不大于δ(2ρ)秒的頻率向時間服務(wù)器發(fā)送消息詢問當(dāng)前時間,其中p為時鐘機器的時鐘精度,δ是最小時鐘誤差;
時間服務(wù)器收到消息后返回當(dāng)前時間CUTC;
發(fā)送者收到服務(wù)器消息后將時鐘調(diào)整為CUTC。
相反,分布式物理時鐘同步算法中沒有決策者,所有機器對時以一種大家共同做決策的方式進行,典型算法是平均值算法,其同步過程如下:
將時間劃分為固定長度的再同步間隔R;
第i次同步開始于TO+iR,結(jié)束于TO(i+l)R;
每次同步間隔開始,每臺機器廣播自己的時間;
對于某一具體的機器,當(dāng)所有的同步廣播都到達后,它根據(jù)所有的時間執(zhí)行某一平均算法得到新值,再根據(jù)新值調(diào)整時鐘。
1.2集中式互斥算法和分布式互斥算法
集中式互斥算法中,所有進程進入臨界區(qū)前都要向決策進程申請,由決策進程決定其是否進入臨界區(qū)。其過程如下:
選舉一個協(xié)調(diào)者;
任何一個進程進入臨界區(qū)前,向協(xié)調(diào)者發(fā)送申請消息;
協(xié)調(diào)者根據(jù)臨界區(qū)的使用情況同意或拒絕申請者的請求;
協(xié)調(diào)者拒絕申請者的方式可以發(fā)送拒絕消息或者不應(yīng)答,但都將請求放人隊列中。
而分布式互斥算法中,沒有決策進程,臨界區(qū)的每次使用都要通過所有進程共同決策,其互斥過程如下:
一個進程進入臨界區(qū)前,先構(gòu)造一個含有目標(biāo)臨界區(qū)名字、本進程號和當(dāng)前時間的消息,發(fā)給所有進程;
一個進程收到另一個進程的請求消息時,根據(jù)自己與目標(biāo)臨界區(qū)的狀態(tài)關(guān)系反應(yīng):若接受者不在也不想進入臨界區(qū),發(fā)送OK消息;接受者已經(jīng)在臨界區(qū)則不應(yīng)答,只是把請求放人隊列;接受者亦欲進入臨界區(qū),則將收到的請求時間戳與它發(fā)送的請求時間戳比較,時間靠前的獲勝進入;
發(fā)送者一直等待其他所有進程返回OK消息,之后進入臨界區(qū),使用完畢向隊列中的進程發(fā)送OK消息,刪除自己的任務(wù)。
從這兩個例子中我們不難看到,集中式方法的共同特點是系統(tǒng)中有一個決策管理者,它決定所有系統(tǒng)的行為,而分布式方法的特點是系統(tǒng)中沒有決策管理者,系統(tǒng)的所有決策由大家共同做出。實際上分布式與集中式概念不僅僅體現(xiàn)在這兩個知識點中,在整個課程的知識點中,有很多知識點體現(xiàn)了這一對立統(tǒng)一概念,表1簡單列出了這些知識點,以及它們包含的集中式與分布式方法。
2.平等結(jié)構(gòu)與等級結(jié)構(gòu)
平等結(jié)構(gòu)與等級結(jié)構(gòu)是分布式系統(tǒng)中對象組織的兩種對立統(tǒng)一方式。平等結(jié)構(gòu)中所有成員的地位是平等的,系統(tǒng)的決策由大家共同確定,方法上對應(yīng)分布式方法。而等級結(jié)構(gòu)中成員存在隸屬關(guān)系或者上下級關(guān)系,形成某種層級結(jié)構(gòu),方法上對應(yīng)集中式方法,或者分層方法,特別是分層方法,在復(fù)雜的、大規(guī)模的分布式系統(tǒng)中被廣泛使用。下面以進程組為例說明這一對概念。
平等組對應(yīng)分布式概念,平等組中所有成員地位是相同的,所有決定由所有成員共同作出,即當(dāng)有進程需要加入或退出進程組時,由組中成員投票表決。而等級組對應(yīng)集中式概念,組內(nèi)有一個協(xié)調(diào)者進程,其他則是工作者,組內(nèi)關(guān)系和動作由協(xié)調(diào)者決定。圖1顯示了平等組與等級組的區(qū)別。表2列出了課程中蘊含等級思想的知識點。
3.同步與異步
同步與異步是分布式系統(tǒng)中另一對重要的對立統(tǒng)一概念。同步概念是指調(diào)用者在執(zhí)行調(diào)用之后,進人等待狀態(tài),一直等到被調(diào)用者返回結(jié)果。而異步概念是指調(diào)用者調(diào)用之后不進行等待,繼續(xù)執(zhí)行其他工作,當(dāng)被調(diào)用者返回結(jié)果時,調(diào)用者產(chǎn)生中斷,處理結(jié)果。同步和異步模式在計算機系統(tǒng)中廣泛應(yīng)用,分布式系統(tǒng)中也有大量應(yīng)用。下面以同步RPC和異步RPC為例闡明這一對概念。
如圖2所示,(a)為同步RPC,(b)為異步RPC。同步RPC調(diào)用者(客戶端)給遠程服務(wù)器進程發(fā)送遠程過程調(diào)用請求后,進入阻塞狀態(tài),等待服務(wù)器返回的結(jié)果,直到服務(wù)器結(jié)果發(fā)送回來,客戶端才解除阻塞。而異步RPC中,客戶端不需要等到結(jié)果返回,只需要服務(wù)器返回接收請求消息的確認即可。
從上面例子可以看出,同步就是客戶端需要“等待”,而異步則是客戶端不需要“等待”或等待時間短。表3列出了分布式系統(tǒng)課程中涉及同步與異步概念的知識點。
4.時間與空間性能
分布式系統(tǒng)課程中,大量的知識點涉及算法的分析。往往一個問題有多種算法解決方案,而不同的算法有不同的特點和不同的性能表現(xiàn),課程要求學(xué)生不僅掌握算法的基本原理,還需要對算法進行性能分析,通過這種算法的性能分析,鍛煉學(xué)生分析問題、解決問題的能力。在分布式系統(tǒng)各個問題的算法解決方案中,充滿了辯證的邏輯,往往一種算法具有某一方面性能的優(yōu)勢,卻喪失另一方面的優(yōu)勢。這一辯證觀點及基于該觀點的分析方法,是課程的一個重要特點。
時間和空間是計算機科學(xué)中一對永恒的矛盾。分布式系統(tǒng)中同樣充斥著效率(時間性能)與存儲(空間性能)的矛盾。一般來說,一種算法如果有較好的時間性能,往往以犧牲部分空間性能為代價;相反,如果算法具有較好的空間性能,則要犧牲一定的時間性能。因此,在進行算法分析的時候,首先要對算法的時間與空間性能進行辯證分析,分析算法的時空優(yōu)缺點,再針對具體問題進行合理的算法選擇。
5.教學(xué)中的應(yīng)用
分布式系統(tǒng)課程中上述辯證概念和方法貫徹課程始終,在教學(xué)中強調(diào)與利用這樣的概念方法,將起到事半功倍的教學(xué)效果。在課堂教學(xué)中強調(diào)辯證概念和方法,學(xué)生容易理解和掌握課程的知識點,例如分布式和集中式概念,在多個知識點的教學(xué)中強調(diào)后,學(xué)生就有意識地利用這一對辯證概念去分析未知的分布式系統(tǒng)知識點,并在實踐中應(yīng)用這一對概念分析和解決問題。另外,在教學(xué)中引導(dǎo)學(xué)生進行辯證概念方法的分析,能有效訓(xùn)練他們的辯證思維,增強其分析問題的能力。
6.結(jié)語
分布式系統(tǒng)課程的基本算法和原理淋漓盡致地體現(xiàn)了辯證法的思維:首先,事物總是存在兩面性;其次,一個問題的任何解決方案都不是完美的,對其分析時需要從正反兩方面分析其優(yōu)缺點。以這樣一種辯證的思維方式學(xué)習(xí)、認識這門課程,才能真正做到舉一反三。