原创 分佈式數據存儲系統之三要素

什麼是分佈式數據存儲系統? 分佈式存儲系統的核心邏輯,就是將用戶需要存儲的數據根據某種規則存儲到不同的機器上,當用戶想要獲取指定數據時,再按照規則到存儲數據的機器裏獲取。 如下圖所示,當用戶(即應用程序)想要訪問數據 D,分佈式操

原创 分佈式存儲之CAP理論

什麼是 CAP? 我們結合電商的例子,來理解 CAP 的含義。假設某電商,在北京、杭州、上海三個城市建立了倉庫,同時建立了對應的服務器{A, B, C}用於存儲商品信息。比如,某電吹風在北京倉庫有 20 個,在杭州倉庫有 10 個

原创 分佈式技術架構原理解析之協調與同步(一)分佈式互斥

分佈式互斥 通過**《分佈式技術架構原理解析之序篇》**,對分佈式系統有了一個初步瞭解。今天,和大家一起分享:分佈式協調與同步。學習如何讓分佈在不同計算機上的程序具有“團隊精神”,換句話說就是如何讓程序通過協作共同去達成一個業務目

原创 分佈式通信之消息隊列

前言 上一篇介紹了分佈式通信技術中的發佈訂閱。總結來說,發佈訂閱就是發佈者產生數據到消息中心,訂閱者訂閱自己感興趣的消息,消息中心根據訂閱者的訂閱情況,將相關消息或數據發送給對應的訂閱者。在實際使用場景中,還有一種常用的通信方式,

原创 分佈式計算模式之Stream

前言 上文介紹了分佈式計算模式中的 MapReduce 模式。這種模式的核心思想是:將大任務拆分成多個小任務,針對這些小任務分別計算後,再合併各小任務的結果以得到大任務的計算結果。 這種模式下任務運行完成之後,整個任務進程就結束了

原创 分佈式計算模式之MapReduce

前言 前面文章中介紹兩層調度時提到,Mesos 的第二層調度是由 Framework 完成的。這裏的 Framework 通常就是計算框架,比如 Hadoop、Spark 等。用戶基於這些計算框架,可以完成不同類型和規模的計算。

原创 分佈式通信之發佈訂閱

前言 上一篇文章介紹了分佈式通信中的遠程調用,其核心是在網絡服務層封裝了通信協議、序列化、傳輸等操作,讓用戶調用遠程服務如同進行本地調用一樣。 其實,這種方式就是通過網絡服務層的封裝實現了不同機器上不同進程之間的直接通信,因爲是直

原创 分佈式通信之遠程調用

前言 分佈式的本質就是多進程協作,共同完成任務。要協作,自然免不了通信。從今天開始就來介紹多個進程之間通信的相關內容,那麼首先先介紹分佈式通信中的遠程調用。 什麼是遠程調用? 以電商購物平臺爲例,每一筆交易都涉及訂單系統、支付系統

原创 分佈式計算模式之流水線

前言 在分佈式領域中解決類似具有依賴關係的流水線作業的計算模式,叫作流水線計算模式。其實,流水線計算模式就是將一個任務拆分爲多個步驟(子任務),然後多個這樣的任務通過對步驟(子任務)的重疊執行,以實現數據並行處理的場景。 這種流水

原创 分佈式計算模式之Actor

前言 前幾篇文章介紹了MapReduce 和 Stream 計算模式,雖然這兩種計算模式對數據的處理方式不同,但都是以特定數據類型(分別對應靜態數據和動態數據)作爲計算維度。在接下來兩篇文章中,將從計算過程或處理過程的維度,介紹另

原创 分佈式調度架構之兩層調度

前言 上一篇文章中,介紹了單體調度。單體調度的核心是,所有節點的資源以及用戶的任務均由中央服務器統一管理和調度。因此,中央服務器很容易成爲單點瓶頸,會直接導致其支持的調度規模和服務類型受限。於是兩層調度就出現了。本文主要就來介紹到

原创 分佈式調度架構之共享狀態調度

前言 上文介紹了在兩層調度架構中,第二層調度只知道集羣中的部分資源,無法進行全局最優調度。而要解決全局最優調度的問題需要共享狀態調度。 什麼是共享調度 集羣中需要管理的對象主要包括兩種: 資源的分配和使用狀態; 任務的調度和執行

原创 分佈式調度架構之單體調度

前言 通過前兩篇文章《分佈式體系結構之非集中式結構》和《分佈式體系結構之集中式結構》可以看出,分佈式系統架構的目的是,將多個服務器資源管理起來,尋找合適的服務器去執行用戶任務。 而爲用戶任務尋找合適的服務器這個過程,在分佈式領域中

原创 分佈式體系結構之非集中式結構

前言 上文介紹了分佈式體系結構中的集中式結構,目前很多雲上的管理都採用了集中式結構,但是這種結構對中心服務器性能要求很高,而且存在單點瓶頸和單點故障問題。爲了解決這個問題,分佈式領域中又出現了另一經典的系統結構,即非集中式結構,也

原创 分佈式體系結構之集中式結構

前言 對於雲計算通俗的理解是把多個服務器管理起來,作爲一個統一的資源提供服務。而如何組織,就是分佈式體系結構的範疇了。在很多場景下請求都會彙總到一臺服務器上,由這臺服務器統一協調我們的請求和其他服務器之間的關係。這種由一臺服務器統