1. 程式人生 > >讀書筆記:分散式系統系統與概念(圖靈叢書)

讀書筆記:分散式系統系統與概念(圖靈叢書)

書的第一章作者介紹了分散式系統的概念,分佈在網路的不同元件並相互傳遞訊息協調的系統,其特徵是元件的併發性(這是說可以很多程序或執行緒可以同時執行,充分利用硬體資源)、缺乏全域性時鐘(網路上沒有一個共有的時鐘來同步不同節點上的操作)、故障的獨立(故障具有隔離性)。然後講了分散式系統的例子,以及趨勢包括分散式計算和移動化(現在有很多不同的聯網裝置:pad、手機等等)、分散式多媒體(這幾年興起的視訊、直播等)、雲概念。最後再列出挑戰。異構性(系統中存在不同的網路比如區域網、廣域網、無線網,硬體,作業系統,程式語言,比如json、xml之類的統一資料交換格式就是解決異構系統通訊的),開放性(就是說網路複雜的不同異構元件直接能不能通過遵守統一個規約達到彼此相容的目的,不然的話,一個組織生產的軟體,另一個系統無法使用,因為沒有約定的介面和規範,比如一個組織定義json的格式為標準格式,另外一個組織非要採用另外一種格式,那麼a發過來的json資料b系統是無法解析的,這樣就不能行使正常功能),安全性(這個不多說),可伸縮性(就是說我們可以隨意增加或減少軟硬體資源而由此帶來的分散式程式修改的程度,程度低說明可伸縮性好),事故處理(比如快取的雪崩和擊穿,熔斷和服務降級處理,冗餘控制,呼叫鏈跟蹤等),併發性和透明性。

第二章開始討論系統模型,這裡分為物理模型和體系結構,物理模型是什麼呢?書中引出了基線物理模型,比如一個分散式系統由10臺計算機構成,10個節點就是物理模型。那麼體系結構是什麼呢?它是一組抽象概念構成的集合,比如通訊實體(程序)、元件(想想中間價)、web服務。這些元素之間需要通訊所以有了通訊範型的概念,包括程序間通訊(socket)、遠端呼叫通訊(rpc、rmi)、間接通訊(分散式快取、訊息佇列)。這些體系結構元素構築了體系結構模式的概念,元素和體系結構模式又一起組成了不同的模型,比如互動模型(定義程序之間的通訊包括時鐘同步和時序,非同步和同步),故障模型(怎麼處理故障,比如mq中的一個節點宕掉了),安全模型。

第三章開始介紹不同節點的之間的互聯。包括程序間通訊、遠端呼叫、間接通訊。介紹了網路型別、資料交換模式、協議、頻寬和資料傳輸速率等概念。

第四章介紹了程序間通訊的概念,程序間通訊主要介紹了udp和tcp,這些訊息成對交換模式在一個程序和一組程序通訊的場景下就不好使了,這時候就催生了ip組播通訊的模式(不提供訊息傳遞保證和排序保證)。

第五章介紹了遠端呼叫的概念,主要講了rmi和rpc沒什麼新意略過。

第六章介紹了間接通訊的概念,包括髮布訂閱模式,訊息佇列和基於共享記憶體。也沒什麼新意,參考jms規約,active mq就可以瞭解釋出訂閱和訊息佇列,至於記憶體共享可以參考redis叢集。

第七章介紹了作業系統對上層的支援,包含程序和執行緒,以及通訊和核心。

第八章介紹了分散式元件和物件,主要結合corba介紹了元件和物件的概念,略過。

第九章介紹了web服務,最初的web服務是通過請求-應答協議使用url定位並獲取web中的資源,但是這種方式受應用程式範圍的限制不能在客戶和伺服器之間提供更豐富的互操作性,為此產生了分散式服務即soa,早起的web服務是web service,它通過soap採用統一的xml資料交換格式定義了一組web服務規範。並結合java的webservice實現做了講解,這些都是老概念,具體的可以參考jax-ws,xfire,cxf,axis等web service框架。

第十章介紹了對等系統,即p2p對等網路。傳統的客戶端-伺服器應用系統需要web服務提供者提供並管理一定規模的伺服器資源,而管理這些資源和故障恢復都要消耗大量的資源,這樣旨在最大度利用網路中的資源尤其是邊緣計算機資源使資源共享達到最大化的p2p對等網路便出現了。書中以音樂檔案共享系統nasper為例講解了對等網路中的路由、負載均衡、可靠性傳輸和容錯等方面。

第十一章和十二章介紹的安全性和分散式檔案系統(單機檔案系統的分散式擴充套件)都沒什麼新東西,略過不表。

第十三章講解了分散式統一命名服務,可以參考java的jndi。

第十四章講解時間和全域性狀態,分散式系統為了協調不同節點之間事件的同步互動便需要一個統一的時鐘作為同步的基準。如果沒有統一的時鐘,比如我們需要保證訊息消費的有序性是無法實現的。還比如在本地系統中連續呼叫的兩個服務(時延可以忽略)放在分散式環境中第二個服務的呼叫時鐘就是第一個服務的時鐘+時延。

第十五章講解了分散式系統中的一致性問題,可以參考分散式鎖機制、拜占庭將軍演算法、paxos協議、raft協議、zab協議。

第十六、十七章講解分散式事務,首先介紹了事務(保證分散式資料一致性)的概念,介紹了其特性(原子性、一致性、隔離性、永續性即acid原則),以及事務對臨界資源的併發訪問的控制(實際上就是併發訪問的序列化)。第十七章引入分散式場景,詳細介紹了2pc(確認階段、提交階段)和3pc(多了一個預提交提交階段),這兩種方式都是以犧牲系統性能為代價的。在2pc中一個事務中有a、b兩個操作分別操作a1、b1兩個遠端節點,如果第一階段a1掛掉或者b1掛掉就可以執行本地事務恢復操作,如果a1掛掉b1正常也可以恢復;如果第二階段a失敗b就不會執行,直接恢復操作,如果a成功b失敗則會出現問題。在3pc中能解決2pc的問題,因為如果a成功b失敗,在預提交階段就會出現,但此階段是加提交,所以可以回滾完成事務恢復。如果預提交階段成功了,提交階段b1出問題這時也會出現問題,但這種機率較少,可以忽略,如果對這方面有強制要求可以通過事務補償ji zhi

第十八章講解不同節點的資料複製(維護資料一致性),參考mysql replication機制,redis replication機制。

第十九章講解移動和計算,略過

第二十章講解分散式多媒體系統以及二十一章的google分散式系統,搜尋(爬蟲、索引、pagerank)、大資料(mapreduce、bigtable、gfs),略過。

相關推薦

讀書筆記分散式系統系統概念叢書

書的第一章作者介紹了分散式系統的概念,分佈在網路的不同元件並相互傳遞訊息協調的系統,其特徵是元件的併發性(這是說可以很多程序或執行緒可以同時執行,充分利用硬體資源)、缺乏全域性時鐘(網路上沒有一個共有的時鐘來同步不同節點上的操作)、故障的獨立(故障具有隔離性)。然後講了分

讀書筆記認知心理學-認知科學你的生活 Chapter 1、3

計算機與人工智慧的發展 計算機隱喻:將人的認知活動比做成執行著的計算機。正如計算機必須輸入那樣,人也必須獲取資訊。計算機和人都要儲存資訊和對資訊進行重新編碼。 從事人工智慧問題研究工作的電腦科學家現在研究的是,如何設計程式使計算機能夠解決人才能解決的問題,以及在解決這類問題時計算機是否能夠運用人所

《大話設計模式》讀書筆記單例模式Java同步鎖synchronized

單例模式,保證一個類僅有一個例項,並提供一個訪問它的全域性訪問點。在單例模式下,類本身負責儲存它的唯一例項,這個類必須保證沒有其他例項可以被建立,並且它可以提供一個訪問該例項的方法。單例模式的類中,構造方法(函式/體)被設為private,從而堵死了外部例項化該類的可能。同

linux系統程式設計之程序程序生命週期PCB程序控制塊

本節目標: 程序狀態變遷程序控制塊程序建立程序撤消終止程序的五種方法 一,程序狀態變遷 程序的三種基本狀態 就緒(Ready)狀態 當程序已分配到除CPU以外的所有必要的資源,只要獲得處理機便可立即執行,這時的程序狀態稱為就緒狀態。 執行(Running)狀態 當程序已獲得

《深入理解 Java 虛擬機器》讀書筆記Java 記憶體區域記憶體溢位異常

前言 最近開始看這本書,記得前段時間拿起這本書的時候,心情是相當沉重的!當時的劇本是這樣的—— 內景。家裡 - 下午 我(畫外):唉,有點無聊啊!(偶然撇過書架)這麼多書得看到什麼時候啊,要不要拿一本翻翻呢?但是在家裡好像有點看不下去啊,是太安逸了嗎?最近那本《圖解 HTTP》也還沒看完,感覺暫時有點不想

Java併發讀書筆記執行緒安全互斥同步

目錄 導致執行緒不安全的原因 什麼是執行緒安全 不可變 絕對執行緒安全 相對執行緒安全 執行緒相容 執行緒對立 互斥同步實現執

《深入理解 Java 虛擬機器》讀書筆記Java 記憶體模型執行緒

# 正文 由於計算機的處理器運算速度與它的儲存和通訊子系統速度的差距太大了,大量的時間都花費在磁碟 I/O、網路通訊或者資料庫訪問上,導致處理器在大部分時間裡都處於等待其他資源的狀態。因此,為了充分利用計算機的處理器運算能力,現代計算機作業系統採用了多工處理的方式,即讓計算機併發處理多個任務。 對於計算量

Javascript 設計模式系統講解應用雲盤下載分享

第1章 課程介紹 學習設計模式的必要性,課程包含的知識點,課程安排,學習前提 1-1 導學 第2章 面向物件 講解javascript中的面向物件的概念,包括 ES6 class 語法、UML 類圖、以及面向物件三要素 2-1 搭建開發環境1 2-2 搭建開發環境2

強化學習RLAI讀書筆記第十三章策略梯度方法Policy Gradient Methods

強化學習(RLAI)讀書筆記第十三章策略梯度方法(Policy Gradient Methods) 13.1 Policy Approximation and its Advantages 13.2 The Policy Gradient Theore

Android筆記Android開發應用框架彙總MVVP框架介紹

先來說一下常見的Android框架模式: MVC、MVP、MVVM 這三種框架中,我們耳熟能詳的就是MVC和MVP了吧,接下來我們簡單介紹一下: MVC View:XML佈局檔案。 Model:實體模型(資料的獲取、儲存、資料狀態變化)。 Cont

Python機器學習筆記異常點檢測演算法——LOFLocal Outiler Factor

完整程式碼及其資料,請移步小編的GitHub   傳送門:請點選我   如果點選有誤:https://github.com/LeBron-Jian/MachineLearningNote   在資料探勘方面,經常需要在做特徵工程和模型訓練之前對資料進行清洗,剔除無效資料和異常資料。異常檢測也是資料探勘的一個方

周愛民真正的架構師是沒有title的訪談

周愛民,現任豌豆莢架構師,國內軟體開發界資深軟體工程師。從1996年起開始涉足商業軟體開發,歷任部門經理、區域總經理、高階軟體工程師、平臺架構師等職,有18年的軟體開發與架構、專案管理及團隊建設經驗,曾任盛大網路平臺架構師、支付寶業務架構師,是 Borland Delphi 產品技術專家,也是 Qomo

讀書筆記之《操作系統概念

dea 非共享 body any ber 編程 進程 分享 系統 非常小型的操作系統,如篇首的小恐龍所使用的驅動手持設備的操作系統,是Silberschatz、Galvin和Gagne第七版《操作系統概念》中的一種前沿應用。通過保留最新的,保持有意義的,並改編為課程最需要的

文字上的演算法讀書筆記四--分散式系統

第三篇 應用篇 如何計算的更快 隨著資料量的爆炸式增長,如何儲存和計算海量資料就成了一個問題。解決的方法之一是使用分散式系統,可以更快更好的完成使用者的請求。 程式優化 程式執行時,經過將目標檔案中的程式碼和資料從磁碟拷貝到主存,從儲存器拷貝到暫存器堆,再從暫存器中拷貝到顯示器上。

《從 PAXOS 到 ZOOKEEPER分散式一致性原理實踐》讀書筆記[3]——Zookeeper 技術內幕

1 系統模型 1.1 資料模型 Zookeeper 中,每一個數據節點都被稱為一個 ZNode,所有 ZNode 按層次化結構進行組織,節點路徑標識方式和 Unix 檔案系統路徑相似,由一系列使用 / 進行分割的路徑表示,開發人員可以向這個節點中寫入資料,也可以在節點下面建立子節點 Zo

《從 PAXOS 到 ZOOKEEPER分散式一致性原理實踐》讀書筆記[2]——初識 Zookeeper

1 Zookeeper 概論 Zookeeper 是一個分散式資料管理與協調框架,它是叢集的管理者,監視著叢集中各個節點的狀態根據節點提交的反饋進行下一步合理操作。分散式應用程式可以基於它實現諸如資料釋出/訂閱,負載均衡,命名服務,分散式協調/通知,叢集管理,Master 選舉,分散式鎖和分散式

《從 PAXOS 到 ZOOKEEPER分散式一致性原理實踐》讀書筆記[1]——一致性協議

1 分散式 1.1 定義 分散式系統是一個硬體或軟體元件分佈在不同的網路計算機上,彼此之間僅僅通過訊息傳遞進行通訊和協調的系統 1.2 特點 分佈性、對等性、併發性、缺乏全域性時鐘、故障總是會發生 2 CAP 和 BASE 2.1 CAP CAP 理論:一個分散式系統不可

讀書筆記深入理解計算機系統 第七章

int printf(const char * format,...); int global_init_var = 84; int global_uninit_var; void fun1(int i) { printf("%d\n",i); } int main

Linux系統程式設計手冊讀書筆記——第3章 系統程式設計概念

系統呼叫 系統呼叫使處理器從使用者態切換到核心態 每個系統呼叫都有一個唯一的數字來標識 系統呼叫流程: 引數入棧,傳入外殼函式,外殼函式將引數置入特定暫存器(包括系統呼叫編號),執行中斷指定。核心響應中斷指令,呼叫system_call()里程處

作業系統學習筆記分散式系統結構

分散式系統是一組不共享記憶體和時鐘的處理器的集合,即每個處理器都有它自己的記憶體,處理器之間的通訊可通過各種通訊網路加以實現。 一、動機 建立分散式系統主要由4個方面的原因: 1、資源共享 2、加快計算速度 3、可靠性 4、通訊 不同站點可以有