網路與分散式計算--複習大綱
阿新 • • 發佈:2019-01-13
- chapter1
- 分散式計算的定義
- l分散式計算系統是由多個相互連線的計算機組成的一個整體,這些計算機在一組系統軟體(分散式作業系統或中介軟體)環境下,合作執行一個共同的或不同的任務,最少依賴於集中的控制過程、資料和硬體。
- 分散式系統
- ①包含多個通用資源部件(物理的或邏輯的),可以動態基礎上被指定給予各個特定的任務;
- ②這些資源部件在物理上是分佈的,並經過一個通訊網相互作用;
- ③有一個高階作業系統,對各個分佈的資源進行統一和整體的控制;
- ④系統對使用者是透明的;
- ⑤所有的資源都必須高度自治地工作而又相互配合,系統內不存在層次控制。
- 特徵:
- l一組由網路互聯的、自治的計算機和資源
- l資源為使用者所共享
- l可以集中控制,也可以分佈控制
- l計算機可以同構,也可以異構
- l分散的地理位置
- l分散式故障點
- l沒有全域性時鐘
- l大多數情況下沒有共享記憶體
- 開放性
- 可擴充套件性
- 異構性
- 透明性
- 安全性
- 分類
- 同構多計算機系統
- 異構多計算機系統
- 分散式作業系統
- 微核心式
- 整合式
- 客戶機/伺服器
- 中央式
- 分散式
- 計算機網路與中介軟體
- 網路作業系統
- 分散式系統中介軟體
- 中介軟體服務
- 名字服務
- 作業排程
- 資源管理
- 資料持久化
- 分散式事務
- 分散式文件系統
- 安全服務
- 中介軟體LSF(Load Sharing Facility)負載均衡系統
- 中介軟體服務
- 分散式計算模式
- 面向物件模式
- 面向物件模式OOM( Object Oriented Model)是基於客戶/伺服器模型(如CORBA,DCOM)
- 面向服務模式
- Web Service是這種面向服務模式的一個例項 ,SOA是一個較完整的軟體結構體系。
- 公用計算模式
- 支援e-科學的計算(如網格Grid等)
- 志願者參與模式
- 志願參與模式VJM(Voluntary Join Model)是充分利用網上空閒的計算能力,支援計算量巨大的科學計算。
- 面向物件模式
- 分散式計算的定義
- chapter2 名字服務
- 名字服務結構
- 分散式系統實體
- 名字與地址
- 名字:實體的名字是一個使用者可讀的、便於記憶的字串
- 地址:實體的訪問點的名字稱為實體的地址(網路中實體地址包括實體的網路層IP地址和實體的傳輸層TCP)
- 屬性:屬性用屬性對<型別-值>表示。¡通過屬性也可以找到實體。
- 識別符號:一個識別符號始終引用同一個實體,一個識別符號最多引用一個實體,每個實體最多由一個識別符號引用
- 名字與地址
- 名字服務的形式:
- 名字服務:名字資料庫是命名實體與其屬性(地址)繫結的集合。名字服務是根據實體的名字查詢它的屬性(地址),俗稱白頁服務。
- 目錄服務:目錄資料庫是命名實體與其一個或多個屬性繫結的集合,屬性包括屬性型別和一個或多個屬性值。俗稱黃頁服務。如X.500目錄服務。
- 合約服務:一種增強的目錄服務,它通過技術規範來定位一個命名實體,也稱綠頁服務。如Web服務。
- 名字空間:命名系統的名字集合構成該命令域的名字空間。
- 增加名字項和繫結
- 當一個實體進入系統,在名字伺服器中應增加一個名字項及其繫結。
- 撤消名字項和繫結
- 當一個實體離開系統時,在名字伺服器應刪除該名字項及其繫結。
- 修改名字項和繫結
- 當一個實體在系統移動到其它部位時,在名字伺服器應修改該名字項及其繫結。
- 名字解析
- 這是名字服務最經常的工作,它是根據實體名查到實體的地址。
- 增加名字項和繫結
- 名字圖:
- 絕對路徑:第一個結點包含根結點
- 掛載點:(儲存結點識別符號的目錄結點)
- 掛載外部空間需要:
- 訪問協議的名稱
- 伺服器的名稱
- 外部名稱空間中掛載點的名稱
- 掛載外部空間需要:
- 名字伺服器:(資料庫+名字解析軟體)資料庫儲存實體名和地址的繫結,及其他資訊
- (名字代理是名字伺服器與客戶之間的一個介面,它與名字伺服器協調,生成名字解析上下文和進行名字解析,同時快取名字查詢和名字解析的結果。)
- 名字空間的實現與管理,名字空間可劃分為多個名字域由多個相應的名字伺服器實現和管理
- 管理方式:
- 上下文集中管理
- 上下文分佈管理
- 多副本分散式管理
- 名字解析的實現:
- 迭代解析
- 遞迴解析
- 名字伺服器的組成:
- 名字伺服器操作:管理、查詢操作和行政管理。增加、刪除和修改上下文的目錄項。訪問優先權。
- 名字解析:根據名字解析請求,得到被解析物件地址。
- 快取:快取名字查詢和解析的結果。
- 多副本管理:副本修改和副本一致性維護。
- 通訊:客戶端的名字代理和名字伺服器之間通訊
- 資料庫:存放名字解析上下文或其子域。
- 分散式系統實體
- 域名系統
- 目錄服務X.500(目錄服務模型)
- 輕量目錄訪問協議
- 基於IP訪問X.500資料的方法
- 目錄結構
- 目錄樹
- X.500的命名實體稱為物件。目錄資訊樹的每個節點表示一個目錄項,一個目錄項表示一個被命名物件。
- X.500規定國家、地區(省或州)、組織、部門和公共名都是命名物件的屬性,將這些屬性級聯就成為命名物件全域性可區分名
- 目錄樹
- 目錄服務元件:
- 錄服務操作:
- 目錄服務協議:
- 輕量目錄訪問協議
- 名字服務結構
- Chapter3 分散式程序
- 分散式程序的概念
- 程序是作業系統中獨立存在的實體,它可以擁有自己獨立的資源,比如檔案和裝置描述符等,在沒有經過程序本身允許的情況下,其他程序不能訪問到這些資源。
- 程序狀態:
- 建立、執行、等待、就緒
- 執行緒:
- 是包含在程序中的一種實體,執行緒有其自己的執行線索,可以完成一定的任務,可與其他執行緒共享程序中的共享變數及部分環境,相互之間協同來完成程序所要完成的任務。
- 實現執行緒包的基本方法:
- 使用者模式的執行緒庫
- 核心管理與排程的執行緒
- 混合形式
- 程序遠端執行
- 程序遷移
- 程序遷移是將一個正在執行的程序掛起,它的狀態從源處理機節點轉移到目標處理機節點,並在目標處理機上恢復該程序執行。
- 優缺點:程序遷移具有靈活且應用廣泛的優點,支援動態負載平衡、系統容錯、高效使用本地資源等諸多系統功能。程序遷移的缺點是執行開銷相對較大。
- 機制/步驟:
- 程序遷移策略:動態負載平衡
- 程序遷移實現:
- 程序狀態收集和恢復
- 狀態資訊:程序上下文由它的使用者級上下文、暫存器上下文和系統上下文組成
- 轉發機制:針對遷移程序行為中與位置相關的操作
- 通訊恢復
- 程序遷移演算法
- 非同步遷移演算法:
- 同步遷移演算法
- 程序狀態收集和恢復
- 分散式程序的概念
- Chapter4 分散式系統通訊
- 訊息傳送:
- 基本原語:
- send和receive
- send(&x, destination_ID):傳送原語send至少給出一個要傳送的訊息體(內容)位於儲存單元x中,x = M,M,和訊息接收程序的識別符號destination_ID
- receive(&y, source_ID):接收原語receive至少給出一個要接收的訊息體M和訊息傳送程序的識別符號source_ID,訊息體要存入儲存單元y中,y =M,
- 訊息傳送模式:
- 訊息={destination_ID, M, source_ID}
- 同步訊息傳送:P執行send必須等待Q執行對應的同步receive原語
- 阻塞傳送/接收
- 非阻塞傳送/接收
- send和receive
- 基本原語:
- 組通訊:
- 組:由系統或使用者確定的若干個程序的集合
- 通訊方式:
- 點到點通訊:單播
- 一到多通訊:多播、廣播
- 組結構:
- 封閉組
- 開放組
- 對等組:
- 分層組:
- 組通訊應用:
- 多副本容錯
- 提高多副本資料修改效率
- 自發連網的服務發現
- 事件通知傳播
- 基本的可靠組通訊
- 解決組播訊息丟失:
- 可靠組播擴充套件性:
- 不分層反饋機制
- 分層反饋機制
- 原子組播
- 虛擬同步
- ISIS虛擬同步
- 訊息排序
- 虛擬同步
- 遠端過程呼叫(Remote procedure call(RPC):
- 引數傳遞
- 值引數傳遞
- 引用引數傳遞
- 引數的規範形式
- 樁stub的生成:分散式系統的介面由介面定義語言進行定義(IDL),利用IDL編譯器可以產生某種程式語言的客戶端樁(伺服器再客戶端的代理)和服務端樁(客戶端在伺服器端的代理),樁與程式編譯連線,形成客戶端和服務端的可執行程式。基於RPC的中介軟體系統都提供了IDL
- RPC語義
- 客戶機不能定位伺服器
- 請求訊息丟失
- 應答訊息丟失
- 伺服器崩潰
- 客戶崩潰
- 清剿/轉世/溫和轉世/期滿
- 引數傳遞
- 遠端物件方法呼叫(RMI):
- 客戶與物件繫結
- 遠端物件引用:訪問物件的一種機制
- 物件實際駐留結點的網路地址
- 管理該物件的伺服器程序埠號
- 伺服器為該物件提供的16位數的內部物件ID
- 顯示繫結/隱式繫結
- 物件通訊:
- 本地呼叫:呼叫物件同在一個程序中
- 程序外呼叫:呼叫和被呼叫物件在同一節點的不同的程序上【共享儲存區的代理-骨架對呼叫】
- 遠端呼叫:呼叫和被呼叫物件在不同節點上【通過代理骨架對進行Proxy-skeleton=》CORBA獨享通訊的基本框架=》物件請求代理ORB】
- 遠端物件引用:訪問物件的一種機制
- RPC與RMI的區別
- 客戶與物件繫結
- 事件與通知:
- Jini事件通知
- 事件涉及的物件
- 遠端事件類
- 事件生成器介面
- 訊息傳送:
- Chapter5 分散式系統同步
- 時鐘同步
- 時鐘同步演算法
- Cristian演算法
- 詢問式同步
- 時間決不能倒退
- 逐步修正
- 伺服器被動
- Berkeley演算法
- 輪詢-釋出式同步
- 伺服器主動
- Cristian演算法
- 時鐘同步演算法
- 邏輯時鐘:計算機內部各時鐘一致,而不是是否與真實時間接近。更進一步,只需跟蹤事件的順序。
- Lamport:
- 向量時間戳
- 選舉演算法(選擇一個程序來充當協調者的演算法,通常選舉演算法會找出全域性唯一編號最大者作為協調者,當各個演算法找出協調者時所用的方法均有所不同)
- 環選舉演算法:
- 欺騙演算法:
- 互斥演算法(避免多程序訪問臨界區中的共享資源所產生的衝突)
- 集中式演算法:選舉一個協調者,每次進入臨界區只需請求、應答和釋放三個訊息。缺點:容易出現單點故障。如果發出請求之後被 阻塞,請求者無法區分拒絕進入和協調器崩潰。單個協調者也可能成為系統性能的瓶頸。
- 基於時間戳演算法
- 1.Lamport演算法
- 缺點:Lamport演算法:當一個程序出現崩潰的時候不能對請求的程序做出應答,這種情況被視為拒絕請求。這樣便阻塞了程序進入臨界區,N個程序之一發生故障的可能性是單個協調者發生故障的可能性的N倍,而且其比集中式演算法要花費更多的頻寬,開銷是3(N-1)個資訊,N為競爭資源的程序數。
- 緩解該缺點的方法是:在一個程序接收到請求的時候,不論是拒絕還是同意都返回一個應答訊息。這樣便可以通過超時機制來確定程序是否發生故障。
- 缺點:Lamport演算法:當一個程序出現崩潰的時候不能對請求的程序做出應答,這種情況被視為拒絕請求。這樣便阻塞了程序進入臨界區,N個程序之一發生故障的可能性是單個協調者發生故障的可能性的N倍,而且其比集中式演算法要花費更多的頻寬,開銷是3(N-1)個資訊,N為競爭資源的程序數。
- 2.Ricart_Agrawala演算法
- 1.Lamport演算法
- 基於令牌演算法
- 1.邏輯環結構
- 2.無環結構
- 基於事件優先權演算法(基於時間的事件定序的分散式互演算法不適用於實時分散式系統,因為其缺乏公共時鐘,而且程序一般有各自的優先順序,應該要用基於優先順序的順序進行處理)
- 目標適應優先權系統(P系統)和實時系統(RT)的要求
- 1.完全可靠網路演算法
- 2.不可靠網路演算法
- 3.共享K個相同資源的演算法
- 伺服器上面有K個資源的副本,而有N個程序需要進行訪問,請求訪問資源的程序Pi如果能收到N-K個以上的應答那麼其就可以進入臨界區訪問資源
- 時鐘同步
- Chapter8 多副本的一致性與DSM(資料儲存多副本的目的是為了提供系統的可靠性和效能,提高系統的容錯能力,提高系統效率,增強系統可擴充套件性)
- 一致性模型(區分不同模型)【是資料儲存和訪問資料儲存程序之間的契約】
- 資料為中心的一致性模型
- 針對資料儲存的各個操作之間指定一種操作順序
- 嚴格一致性
- 順序一致性
- 因果一致性
- FIFO一致性
- 對操作組之間進行定序【有些應用不關心總結結果是否已經按一定的順序傳播到所有的副本】
- 弱一致性
- 釋放一致性
- 入口一致性
- 針對資料儲存的各個操作之間指定一種操作順序
- 客戶為中心的一致性模型
- 單調讀
- 單調寫
- 寫後讀
- 讀後寫
- 資料為中心的一致性模型
- 分發協議(區分一個服務滿足哪些協議)
- 副本放置
- 永久副本
- 伺服器啟動副本
- 客戶啟動副本
- 更新傳播
- 狀態與操作(要傳播什麼樣的訊息?)
- 傳播更新通知:無效化協議(寫操作對讀操作比例高時時適用)
- 傳播更新資料:讀操作對寫操作的比率很高時(此時更新的資料不會被頻繁地覆蓋)
- 傳播更新操作:不傳播被修改的資料而是直接告訴副本應該進行哪些更新操作來保持各副本關聯資料的一致性
- 拉協議與推協議(誰啟動更新傳播?)
- 租賃
- 組播與單播
- 狀態與操作(要傳播什麼樣的訊息?)
- 副本放置
- 一致性協議(一致性模型的實現)
- 主-從副本協議
- 遠端單副本協議
- 遠端主副本協議
- 遷移讀/寫協議
- 遷移主副本寫協議(寫操作將資料項主副本遷移到客戶副本伺服器上執行,然後主副本伺服器通知其他伺服器對資料項進行修改。讀操作是在本地副本上進行的)
- 複製寫協議
- 主動多副本協議(寫操作在所有副本上執行)【由於客戶/伺服器模型的多副本引發多重呼叫:可以採用選舉或指定在多副本中選出一個協調者統一轉發多副本的呼叫和應答】
- 帶時間戳的原子組播
- 中央定序器
- 基於法定數量的協議(寫操作在一個法定數量[超過副本總數的一半]的副本上執行)【要求客戶在讀或寫一個多副本共享資料之前先先多個副本伺服器提出請求,並得到他們的同意】
- 主動多副本協議(寫操作在所有副本上執行)【由於客戶/伺服器模型的多副本引發多重呼叫:可以採用選舉或指定在多副本中選出一個協調者統一轉發多副本的呼叫和應答】
- 快取記憶體相關性協議【保證快取記憶體與伺服器啟動的副本相一致。】
- 主-從副本協議
- 一致性模型(區分不同模型)【是資料儲存和訪問資料儲存程序之間的契約】
- Chapter9 分散式檔案系統
- 分散式檔案系統簡介
- 分散式檔案系統設計的問題
- 檔案使用模式
- 命名和名字解析
- 結構與介面
- 快取策略與一致性
- 檔案共享語義(為了理解檔案的行為)
- UNIX語義:順序一致性語義
- 會話語義
- 不修改共享檔案語義
- 事務語義
- 斷開操作與容錯
- 分散式檔案系統設計的問題
- 網路檔案系統(Network File System【NFS:實現檔案系統的掛載(本地檔案目錄/伺服器的檔案目錄)】 )
- NFS的系統組成
- 系統模型
- 命名
- 名字空間:為每一個使用者規定一個部分標準化的空間
- 檔案安裝協議:NFS安裝協議,由客戶呼叫在本地目錄中選中的掛接點實現遠端檔案安裝
- 檔案屬性:
- 強制屬性
- 推薦屬性
- 命名屬性
- 檔案控制代碼
- 遠端過程呼叫
- 複合呼叫
- RPC重傳
- PRC安全
- 文加共享
- 檔案加鎖
- 訪問操作分類
- 客戶端快取與伺服器複製
- 客戶端快取一致性
- 委託
- 伺服器複製與遷移
- 檔案系統遷移與狀態
- 檔案系統複製與狀態{目錄結構複製都其他伺服器上}
- Andrew/Coda檔案系統
- 組織結構
- Coda檔案命名
- 檔案識別符號
- 遠端過程呼叫RPC2
- 檔案共享語義
- 事務處理語義
- 訪問控制
- 快取與控制【實現Coda高可用性的基本方法】
- 客戶端快取
- 伺服器複製:Coda允許以檔案卷(卷是構成名字空間的基本單位)為單位將檔案複製到多個伺服器上。擁有一份卷副本的伺服器集合稱為該卷的卷儲存組(Volume Storage Group,VSG)。在VSG中使用者可以聯絡到的伺服器稱為可訪問卷儲存組(Accessible Volume Storage Group,AVSG).如果AVSG為空,則該使用者應該是處於斷開狀態。
- 斷開操作
- 分散式檔案系統簡介
- Chapter11 面向物件的分佈計算
- Common Object Request Broker Architecture,公用物件請求代理結構 CORBA是物件管理體系(OMA,Object Management Architecture)的一部分,作為規範分散式物件間互操作的標準。
- OMA參考模型
- CORBA
- Java RMI【遠端方法呼叫RMI(Remote Method Invocation)是Java特有的分散式計算技術。它實質上是通過Java程式語言擴充套件了常規的過程呼叫,在網路上不僅可以傳送物件的資料,而且可以傳送物件的程式碼。】
- Java RMI
- 分散式元件物件模型DCOM
- Chapter12 面向服務的分散式計算
最後附上以上內容超大版思維導圖建議下載下來觀看(PS:圖片太大了,所以摺疊了一些分支,要原版圖片的可以評論區留言):