閱讀895 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Akka學習筆記(三):什麼是Actor


Akka學習筆記(三):什麼是Actor

上一節講到actor是actor system最基本的單元。這一節詳細的講講actor.更詳細here。actor是一個擁有state,behavior,mailbox,children,supervisor strategy的容器.Akka保證所有actor都隻運行在自己的輕量級線程,並一次處理一個消息,這樣程序員就不用處理同步、競態

Actor Reference

為了防止actor對象被直接的訪問和操作,所以actors通過ActorRef來間接交流。message可以通過如下方式傳遞:

  • ! (“tell”) - 發送message並馬上返回
  • ? (“ask”) - 發送message並返回Future

詳見here

State

actor擁有的一組變量,即actor的state。state是可恢複的,詳見Persistence

Behavior

actor處理消息的方法吧~

Mailbox

所有收到的消息,會進入actor的mailbox隊列。默認是FIFO。

Children

每一個actor,都是潛在的監控者。actor會自動監控執行子任務的actor.children被放在context中,通過context.actorof(...))或者context.stop(child))操作children.這些操作都是異步的,所以相應非常快。

Supervisor Strategy

actor一旦創建,監控策略是不可修改的。Akka自動幫我們處理錯誤故障。具體的錯誤策略詳見錯誤的監督和監控

當Actor終止時

一旦actor意外終止,比如失敗了。它會釋放所有資源,將未處理的messages發送給system的dead letter mailbox.這些message將由EventStream處理。
為什麼不把dead letter全部丟掉呢?dead letter主要用來debug


最後更新:2017-04-03 05:39:34

  上一篇:go 什麼樣的企業造什麼樣的軟件最容易成功?
  下一篇:go 關於“卷積”的通俗解釋