分布式系統中的程序遷移

2021-07-24 07:18:01 字數 2310 閱讀 8248

1 程序遷移的目的

分布式系統的特點之一是允許資訊在系統中移動,但有的系統只允許資料(檔案、資料庫記錄等)在系統中遷移,有的系統只允許還未開始執行的任務進行遷移,有的系統允許處於執行狀態的任務進行遷移,最後一種情況被稱為「程序遷移」。程序遷移是一種在松藕合的分布式系統中,將正在某處理機(源處理機)上執行的程序傳送到另外的處理機(目的處理機)上,並使程序在目的機上從「斷點」起繼續執行的方法。在分布式作業系統中,程序遷移可以提高系統的負載平衡和實現容錯性、減少通訊負載等。

實現負載均衡。提高分布式系統整體效能的一條途徑是將系統負載盡可能均勻地分布到系統中各個處理機上,也即實現動態負載均衡或動態負載共享,這樣能提高系統的並行度,加快執行速度,從而改善系統的整體效能。

實現高效率容錯。在分布式系統中,當乙個主機發生故障時,則需將該主機正在執行的程序給予遷移。否則,如果主機正在執行的是某些關鍵程序,則這樣有可能導致系統任務的錯誤執行,後果將不堪設想。

2 程序遷移機制

為了實現程序遷移,在分布式系統中必須建立相應的程序遷移機制。該機制應該解決這樣幾個問題:一是由誰來發動程序遷移;二是應遷移程序的哪些部分;三是如何進行遷移;四是對尚未完成的報文和訊息應如何處理。

2.1 程序遷移的啟動

由誰來啟動程序遷移,取決於在設計程序遷移機制時所要達到的目標,一下就兩種情況分別討論。

如果其目標是為了均衡負荷,則在程序遷移機制中,應為各個系統配置系統負載監視模組,並指定其中之一為主控模組。主控模組定時地與各系統中的監視模組互動有關系統負荷情況的資訊。當它發現有些系統非常忙碌,有許多程序在等待處理,而同時有些系統的處理機卻在空閒著,此時主控負載監視模組便可啟動程序遷移,即由它向負載沉重的系統發出命令,令該系統將其中若干個程序遷移到負載較輕的系統中去。

如果程序遷移的目標是為遷移的程序能獲得其所需的特殊資源,則可由需要特殊資源的程序來啟動遷移。這時,須由該程序提出所需的特殊資源在哪個系統,程序本身希望遷移到哪個系統。這種由程序自身來決定是否要進行的遷移稱為自遷移。

2.2 程序遷移過程

在程序進行遷移時,應將源系統中的已遷移的程序撤消,在目標系統中建立乙個相同的新程序,此即所謂的程序遷移,而不是程序複製。因此,程序映像至少包括程序控制塊是必須需要遷移的,另外這個程序與其他程序間的任何鏈結也必須更新。

程序控制塊的移動是很簡單的,從執行角度看,困難在於程序的位址空間和程序開啟的檔案。假設程序位址空間使用分段或分頁虛擬儲存策略,有兩種解決方法:一是在遷移時傳送整個位址空間,在原來的系統中找不到關於該程序的相關資訊,但是如果程序並不是位址空間中的大部分,那麼這種方法可能太過昂貴;二是僅傳送那些在主存中的位址空間部分,虛擬空間中的段僅在需要時傳送,這個方法使得傳送的資料量最少,但需要源處理機在程序生存期間不斷修改段表或頁表。

2.3 程序遷移的演算法

程序遷移演算法目前主要有貪婪拷貝演算法、惰性拷貝演算法和預拷貝演算法等。這幾種演算法的不同點主要體現在三個方面:需從源主機上傳輸多少狀態到目標主機;何時掛起在源主機上執行的程序;何時啟動在目標主機上的程序。

2.3.1貪婪拷貝演算法(eager copy)

該演算法先掛起源主機程序,然後傳輸程序的全部狀態(包括一些開啟的檔案、執行狀態等)到目標主機後,再啟動目標主機程序。這種演算法簡單,易於實現,但有兩處不足:延時較長,這對於實時系統是不可接受的;有些冗餘的資料傳輸到目標主機後,實際並沒有用上,造成網路負擔。

2.3.2惰性拷貝演算法(lazy copy)

該演算法先傳輸程序在目標主機上重新執行所需要的最小相關的資訊。比起貪婪拷貝演算法,它傳輸的是必需的最少量的狀態集合,然後在主機上啟動。這些資訊通常是程序的部分或全部的核心資料和一小部分(二、三頁)位址空間。當程序在目標主機上執行需要其餘的狀態資訊時,再傳輸這些資訊。其優點是:延遲小;減少網路負擔。其缺點表現在這種拷貝演算法導致對源主機的剩餘依賴性,因此不能提高系統的可靠性。

2.3.3預拷貝演算法(pre-copy)

與前面兩種演算法不同的是,預拷貝演算法在程序的部分或全部位址空間從源主機傳輸到目標主機上完畢時,源主機才掛起程序並且傳輸核心資料。也就是說,當程序在源主機上執行時,並行傳輸位址空間到目標主機上。程序掛起後在傳輸的核心資料(包括開啟的檔案、執行狀態、當前目錄等)和一些先前已經傳輸的後被改變的位址空間一起傳輸到目標主機上。這樣就會產生乙個問題:這種演算法雖然降低了程序掛起的時間,避免因掛起時間長而導致的開銷和錯誤,但是卻將把某些資訊拷貝兩次,總的傳輸時間反而增長。

3 結束語

分布式系統及其程序遷移是國際上比較活躍的研究課題之一,其設計思想目前仍在許多學者和科技工作者的進一步深入研究中。分布式系統比起其它計算機系統的顯著優越在於其多機合作和堅強性。多機合作是自動的任務分配與協調,堅強性則體現在當系統中的一台或幾台計算機的通路發生故障時,系統可以繼續其失效部分的或全部的工作。程序遷移正是這種多機合作和堅強性的重要體現和實現手段,它使系統盡可能地實現了高效率的負載均衡和任務容錯性。

分布式系統中的分布式事務

分布式事務中可以借助mq訊息系統來進行事務控制,這一點與可靠訊息最終一致方案一樣。看來mq中介軟體確實在乙個分布式系統架構中,扮演者重要的角色。最大努力通知方案是比較簡單的分布式事務方案,它本質上就是通過定期校對,實現資料一致性。中介軟體如何保證訊息的一致性 問題的問法多種多樣,怎麼保證兩個伺服器的...

分布式程序

分布式程序 分布式程序六個步驟 1.建立佇列queue,用來程序間的通訊。2.將佇列queue進行網路共享給其他程序 3.建立物件例項,繫結埠和驗證口令 4.啟動物件例項進行資訊傳輸管理 5.通過物件例項將網路佇列本地化 6.分配本地化佇列進行程序任務處理 排程服務程序taskmanager.py ...

分布式程序

分布式程序指的是將process程序分布的多台機器上,充分利用多台機器的效能完成複雜的任務,我們可以將這點應用的分布式爬蟲的開發中。我們舉個簡單例子,服務程序用來設定任務在task queue,並設定介面。任務程序呼叫相同的介面,執行任務,結果寫進result queue taskmanager.p...