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
https://www.gtan.com/akka_doc/scala/dispatchers.html
https://www.slideshare.net/developerforce/df121253-patterson?next_slideshow=1
最後更新:2017-04-03 05:40:06