天天看點

Akka相關概念了解

actors可以替代:

一個線程

一個對象或者元件

一個callback或者listener

一個單例或者服務

一個路由轉發者,負載均衡器,池

一個java ee的session bean或者事件驅動bean

建立很多的actors:

actors不像線程一樣重,可以把它們當做輕量級的對象來看

為每個請求建立一個actor?沒問題

為處理一個message,建立一個内部actor去處理?可以

actor樹應該很深,而不是很淺

不要用阻塞,否則會ties up該線程,并占有大量系統資源。

如果一定要用,在一個獨立的線程池中适用阻塞api,将其隔離在actor或者future中。(ppt 49頁)

配置

dispatcher(thread pool)

actors樹形繼承結構

預設的,事件驅動的,将一組actor綁到一個線程池中,共享線程的

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

可以了解為calble,跑線上程池上

這是一個 actor 執行個體的句柄(handle),你可以用它來與實際的 actor進行互動。 the actorref 是不可變量,與它所代表的actor之間是一對一的關系

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

<a target="_blank" href="http://www.gtan.com/akka_doc/scala/dispatchers.html">http://www.gtan.com/akka_doc/scala/dispatchers.html</a>

<a target="_blank" href="http://www.slideshare.net/developerforce/df121253-patterson?next_slideshow=1">http://www.slideshare.net/developerforce/df121253-patterson?next_slideshow=1</a>