Actor模型[轉]

來源:互聯網
上載者:User

標籤:

原文連結:http://blog.jeoygin.org/archives/477

Actor這個模型由Carl Hewitt在1973年提出,Gul Agha在1986年發表技術報告“Actors: A Model of Concurrent Computation in Distributed Systems”,至今已有不少年頭了。在電腦科學中,它是一個並行計算的數學模型,最初為由大量獨立的微處理器組成的高並行電腦所開發,Actor模型的理念非常簡單:天下萬物皆為Actor。

  Actor之間通過發送訊息來通訊,訊息的傳送是非同步,通過一個郵件隊列(mail queue)來處理訊息。每個Actor是完全獨立的,可以同時執行它們的操作。每一個Actor是一個計算實體,映射接收到的訊息到以下動作:

  • 發送有限個訊息給其它Actor;
  • 建立有限個新的Actor;
  • 為下一個接收的訊息指定行為。

 

  以上三種動作並沒有固定的順序,可以並發地執行。Actor會根據接收到的訊息進行不同的處理。

  在一個Actor系統中,包含一個未處理的任務集,每一個任務由以下三個屬性標識:

  • tag:用以區別於系統中的其它任務;
  • target:通訊到達的地址;
  • communication:包含在target上的Actor處理任務時可擷取的資訊,。

  簡單起見,可以把一個任務視為一個訊息,在Actor之間傳遞包含以上三個屬性的值的訊息。

  Actor模型有兩種任務調度方式:基於線程的調度以及基於事件的調度:

  • 基於線程的調度:為每個Actor分配一個線程,在接收一個訊息時,如果當前Actor的郵箱(mail box)為空白,則會阻塞當前線程。基於線程的調度實現較為簡單,但線程數量受到操作的限制,現在的Actor模型一般不採用這種方式;
  • 基於事件的調試:事件可以理解為上述任務或訊息的到來,而此時才會為Actor的任務分配線程並執行。

  綜上,我們知道可以把系統中的所有事物都抽象成一個Actor:

  • Actor的輸入是接收到的訊息。
  • Actor接收到訊息後處理訊息中定義的任務。
  • Actor處理完成任務後可以發送訊息給其它的Actor。

  那麼在一個系統中,可以將一個大規模的任務分解為一些小任務,這些小任務可以由多個Actor並發處理,從而減少任務的完成時間。

  舉個簡單的例子,比如現在要在3台物理節點上運行一個WordCount作業,可以將這個作業細分為Split、Count和Merge三種任務(任務的target是物理節點的地址,communication可能包含文本、單詞及計數等),根據需求要有Split Actor、Count Actor和Merge Actor。整個作業的處理流程以下:

  • Split Actor接收到訊息後可以文本分割成10份,每份發送給一個Count Actor;
  • Count Actor統計好單詞的數目後發送訊息給Merge Actor;
  • Merge Actor收集完Count Actor發送的10個訊息後,合并每個單詞的數目,完成WordCount任務。

  從以上例子可以看出,Actor系統跟資料驅動系統比如資料流相近,可以自訂任務的流向及其處理過程。Actor模型被廣泛使用在很多並發系統中,比如Email、Web Service等等。

參考資料

  (1) G. Agha, Actors: A Model of Concurrent Computation in Distributed Systems. Cambridge, MA, SA: MIT Press,1986.

  (2) Wikipedia: http://en.wikipedia.org/wiki/Actor_model

  (3) ActorLite:一個輕量級Actor模型實現(上)

Actor模型[轉]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.