😊

アクターモデルのサポート状況について

2021/09/28に公開

アクターモデルのサポート状況について、簡単にまとめます。

アクターモデルの定義

https://en.wikipedia.org/wiki/Actor_model

これに従う。

広義の立場では、アクター=チャネル+非同期タスクと解釈すれば、GoやRustは組込のアクターモデルと持っていると考えてもよいですが、ここではいちいち取り上げません。狭義の立場では、アクターの位置透過性やスーパービジョンのような機能も概念に含まれてくるが、必須のものとはしないことにします。

アクターモデルが使えるツール(ライブラリ/フレームワーク)

やはりこの分野ではakkaが最強ですが、Virtual Actorsをサポートしている、Dapr, Orleans, proto.actorあたりも注目に値します。Rustにも実装が増えてきています。

ツール名 言語/プラットフォーム URL github stars actor distributed persistence event sourcing 備考
akka Java, Scala http://akka.io, https://github.com/akka/akka 11.8k
dapr Go, (クライアントSDKは他言語に対応) https://dapr.io/, https://github.com/dapr/dapr 14.7k
Orleans .NET https://dotnet.github.io/orleans/, https://github.com/dotnet/orleans/ 7.9k ○ (grain)
akka.net .NET https://getakka.net/, https://github.com/akkadotnet/akka.net 4k
proto.actoar Go, .NET, Kotlin https://proto.actor/, https://github.com/asynkron/protoactor-go 3.8k
vertx Java https://vertx.io/, https://github.com/eclipse-vertx/vert.x 12.4k ○ (verticle + event bus)
actix Rust https://actix.rs/book/actix/, https://github.com/actix/actix 6.6k
ray Python https://www.ray.io/, https://github.com/ray-project/ray 17.5k
bastion Rust https://bastion.rs/, https://github.com/bastion-rs/bastion 2.3k
orbit Java https://www.orbit.cloud/orbit/, https://github.com/orbit/orbit/ 1.6k
VLINGO XOOM Java, .NET https://docs.vlingo.io/, https://github.com/vlingo 202
reacted Java https://www.reacted.io/, https://github.com/reacted-io/reacted 12

※○はざっとみて適当につけています。間違っていたら指摘してくれると助かります

アクターモデルが組み込まれている言語やランタイム

Erlang VM BEAM

https://www.erlang.org/

Pony言語

https://www.ponylang.io/

Swift

https://github.com/apple/swift-evolution/blob/main/proposals/0306-actors.md

actor構文 が Swift 5.5から実装されている

https://github.com/apple/swift-sample-distributed-actors-transport/blob/main/SampleApp/Sources/FishyActorsDemo/Actors.swift

distributed actor構文が提案されている

Discussion