關於分佈式計算的一些概念

整理自《架構解密從分佈式到微服務》第七章——聊聊分佈式計算.作了相應補充和修改。編程

[TOC]網絡

前言

無論是網絡、內存、仍是存儲的分佈式,它們最終目的都是爲了實現計算的分佈式:數據在各個計算機節點上流動,同時各個計算機節點都能以某種方式訪問共享數據,最終分佈式計算後的輸出結果被持久化存儲和輸出。 分佈式做爲分佈式系統裏最重要的一個能力和目標,也是大數據系統的關技術之一。通過多年的發展與演進,目前業界已經存在不少成熟的分佈式計算相關的開源編程框架和平臺供咱們選擇。架構

一 不得不說的Actor模型

1.1 Actor模型的誕生與發展

Carl Hewitt於1970年發明Actor模型,當時Actor模型的概念遠遠領先於那個時代,知道Erlang這樣基於Actor模型設計的面向併發編程的新語言橫空出世以後,Actor模型才真真火了起來。併發

1.2 Actor模型是什麼?

Actor是計算機科學領域中的一個並行計算模型,它把Actor當作通用的並行計算原語:一個Actor對接收到的消息作出響應,進行本地決策,能夠建立更多的Actor(子Actor),或者發送更多的消息;同時準備接收下一條消息。框架

在Actor理論中,一切都被認爲是Actor,這和麪向對象語言裏一切都被當作對象很相似。但包括面嚮對象語言在內的軟件一般是順序執行的,而Actor模型本質上則是併發的。Actor之間僅經過發送消息進行通訊,全部的操做都是異步的,不一樣的Actor能夠同時處理各自的信息,使整個系統得到大規模的併發能力。異步

1.3 Actor模型原理簡單介紹

Actor模型簡單原理圖:
Actor模型原理簡單介紹分佈式

根據上圖,每一個Actor都有一個Mailbox(郵箱),Actor A 發送給消息給Actor B,就好像Actor A 給Actor B寫了一封郵箱地址爲Actor B的郵箱地址的郵件(消息)同樣,隨後平臺負責投遞郵件。當郵件Actor B以後,平臺就會通知Actor B收取郵件並作出回覆,若是有多封郵件,則Actor B按順序處理。很簡單和容易理解的技術,可是蘊含了強大的力量。Actor B收到消息後可能會作那些處理呢?微服務

  • 建立其餘Actor
  • 向其餘Actor發送消息
  • 指定下一條消息到來的行爲,好比修改本身的狀態

在什麼狀況下一個Actor會建立子Actor呢?大數據

一般狀況是爲了並行計算,好比咱們有10G的文件要分析處理,咱們能夠在根Actor裏建立10個子Actor,讓每一個Actor分別處理一個文件,爲此根Actor給每一個子Actor發送一個消息,消息裏包含分配給它的的文件編號(或位置),當子Actor完成處理後,就把處理好的結果封裝爲應答消息返回給根Actor,而後根Actor在進行最後的彙總與輸出,下面是這個過程的示意圖。spa

相關文章
相關標籤/搜索