標籤:

akka typed 相比 untyped的優缺點?


直接看設計者自己的立場,看法和討論

https://github.com/rkuhn/blog/blob/master/01_my_journey_towards_understanding_distribution.md

學術一點來說untyped是一個actor with partial function,scala的類型系統廢了一半功力。而typed actor是actor with total function。

另外,信息即協議(message is the protocol),有了typed做加成,信息本身所涉及的管道,流向,組合都能顯式地表述出來。更加符合分散式系統的設計和處理。

akka本身的untyped使用已經被大家接受了,因為作為一套分散式的基礎設施套件,它提供了很多顯式的工具用以處理各種的場景,開發人員其實不需要有一個想法說typed是不是自我否定了,其實這個演進不過是系統設計者在"顯式"處理的工具箱上多加了一把好規尺而已。


我只說一句,類型安全,大項目有信心。


函數式編程的關鍵在於可組合性,而type actor才能發揮其組合性,有了akka typed,就能很暢快地將actor用於函數式編程了


瀉藥,

我簡單的說一下我的理解,其實通過名字可以看出他們的區別主要是在類型上面(好像說了句廢話),這個類型準確來講就是可以接受消息的類型,我們使用akka的時候,默認使用的是untyped actor,可以觀察一下actor 和 typedActor 定義發現,如果實現了 TypedActor,要求傳入一個類型,這個類型就是前面說的允許接受的消息的類型,而我們默認使用的 Actor(UntypedActor) 是不需要這個類型的,他所接受的類型是在 recieve 方法定義的,對於java來說是通過 match 構造,對於 scala 來說是通過 case 語句來構造。可以簡單的理解成定義接受消息類型的位置不同

詳情可以參考 typed and untyped sample code 文章


推薦閱讀:

彎光公司18年3月的akka生態全景介紹
我的 Scala 學習之路

TAG:Scala | Akka |