One actor is not an actor, they comes in system.
-Carl Hewitt.
這兩天花了點時間瞭解一下Actor Model,以及Akka在.Net平台上的移植 - Akka.Net(Open Source)。
這兩部由Akka.Net公司的介紹影片是一個很好的開始:
另外,當然不能錯過在Channel9上對Actor Model創始人的訪問:
Akka.Net,也提供了很詳細的文件說明,包含step-by-step的教學,可以從它們的網站去瞭解。
另有一篇
是以Akka.Net建構的Game Server說明,它也提供了GitHub的範例程式,是以MongoDB+Game Server+Unity3d的系統,當然ActorModel不只用在這邊,它對所有想避免執行緒lock的效能耗損、分佈式及高容錯率為目標的系統都可能是一個好選擇。
基本上,看到現在,發覺每個Actor都是SRP原則的最佳實現,透過相互之間message的溝通,去完成整個系統的功能,但是,但是,但是,在整個軟體系統的實作上,就我目前看起來的,可能需要花點時間去適應,因為由Actor建構的樹狀Actor系統,訊息在其中流動,一個Actor收到的訊息,需執行一段動作,它可以分給(或建立)子Actor去實作,一方面把可能發生的錯誤範圍限制在子Actor中,一方面在設計時你要去思考在什麼條件下建立子Actor,或是把訊息再轉發給其它的Actor實作,此時Actor或說系統功能上的切分,跟一般系統的分層概念,可能就不太一樣,這需要再看更多的範例來學習了。
同時也看看反方的意見Why I Don’t Like Akka Actors,當然,這還是取決於當前面對的系統型態,終究沒有一個one for all的架構存在!
Written with StackEdit.
沒有留言:
張貼留言