這篇文章主要描述Actor模型,Actor類似於一個封裝了自己狀態和行為的“黑盒”對象,Actor之間通過消息進行通信,解決了死鎖、競爭等問題。 ...
分散式計算模式:Actor
什麼是Actor模型?
分散式環境下,多個進程協同完成一件複雜的事情,每個進程各司其職,完成自己的工作後,再交給其他進程去完成剩餘的工作。
Actor模型,代表一種分散式並行計算模型,它有自己的一套規則,規定了Actor的內部計算邏輯以及多個Actor之間的通信規則,每個Actor都相當於系統中的一個組件,是基本的計算單元。
Actor類似於一個“黑盒”對象,它封裝了自己的狀態和行為,是其他Actor無法直接觀察到它的狀態,調用它的行為,多個Actor之間通過消息進行通信。
Actor模式採用非同步模式,並且每個Actor封裝了自己的數據、方法等,解決了死鎖、競爭等問題。
Actor模型的三個要素:
- 狀態,Actor組件本身的信息。
- 行為,Actor的計算處理操作。
- 消息,Actor的消息以郵件形式在多個Actor之間通信傳遞,每個Actor會有一個自己的郵箱(MailBox),用於接收來自其他Actor的消息。
Actor模型的特點:
- 實現了更高級的抽象。
- 非阻塞性,當一個Actor發送消息給另外一個Actor後,無需等待響應,發送完消息之後可以在本地繼續執行其他任務。
- 無需使用鎖,Actor從MailBox中一次只能讀取一條消息,Actor內部只能同時處理一個消息,這是一個天然的互斥鎖。
- 併發度高,每個Actor只需處理本地MailBox的消息。
- 易擴展,每個Actor都可以創建多個Actor,從而減輕單個Actor的工作負載。
Actor模型存在一些不足之處:
- Actor提供了模塊和封裝,但缺少繼承和分層。
- Actor可以動態創建多個Actor,使得整個Actor模型的行為不斷變化。
- Actor模型不適用於對消息處理順序由嚴格要求的系統。
可以支持Actor變成模型的典型框架或者語言:
- Erlang/OTP
- Akka
- Quasar