Akka相關概念理解


Akka相關概念理解

Actor適用

Actors可以替代:

  • 一個線程
  • 一個對象或者組件
  • 一個callback或者listener
  • 一個單例或者服務
  • 一個路由轉發者,負載均衡器,池
  • 一個Java EE的session bean或者事件驅動bean

創建很多的Actors:
Actors不像線程一樣重,可以把它們當做輕量級的對象來看

  • 爲每個請求創建一個actor?沒問題
  • 爲處理一個message,創建一個內部actor去處理?可以
  • Actor樹應該很深,而不是很淺

不要用阻塞,否則會ties up該線程,並佔有大量系統資源。
如果一定要用,在一個獨立的線程池中適用阻塞api,將其隔離在actor或者future中。(ppt 49頁)

ActorSystem包括

  • 配置
  • dispatcher(thread pool)
  • actors樹形繼承結構

Dispatcher

默認的,事件驅動的,將一組actor綁到一個線程池中,共享線程的

Mailbox

默認爲akka.actor.default-mailbox(無限郵箱,java.util.concurrent.ConcurrentLinkedQueue)默認是先進先出的隊列,可以自行實現優先級隊列,但akka中當前behavior必須總是處理下一個出隊的消息,而且沒有掃描mailbox的動作,處理消息失敗時,即認爲failure發生了,當然這個行爲可以被重寫

Actor

可以理解爲calble,跑在線程池上

ActorRef

這是一個 Actor 實例的句柄(handle),你可以用它來與實際的 Actor進行交互。 The ActorRef 是不可變量,與它所代表的Actor之間是一對一的關係

EventStream

攜帶日誌消息,死信.actor可以從EventStream訂閱日誌或者死信

Reference

http://www.gtan.com/akka_doc/scala/dispatchers.html
http://www.slideshare.net/developerforce/df121253-patterson?next_slideshow=1


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章