akka同時通信、actorモデルの理解
1151 ワード
1、akkaによるマルチノード分散通信
2、actorモデルの特徴 actorごとに1つのスレッド を独占する各actorのデータは自己メンテナンスされ、他のactorによって 変更されない. actorが受信したメッセージはいずれもFIFOのメールボックスに存在し,onReceive()処理を順次使用する. actorが他のactorに送信情報は、通常、非同期非ブロックの である.
3、actorモデルとマルチスレッドモデルの違い
共通点:actorモデルでは、各actorもスレッドを独占し、独立してタスクを実行できます.
コアの違い: actorモデル:スレッド間で非同期メッセージを送信することによって通信 マルチスレッドモデル:スレッド間でプライマリスレッドを介して伝達される共有オブジェクト通信 .
マルチスレッドの通信媒体のデータは共有されている(スタックメモリの領域)ため、ロックの問題があり、マルチスレッドは同じプロセスにある必要があります.
actorのデータはそれぞれ独自であるため、異なるプロセスや異なるサーバに分散することができ、分散ジョブを実現することができます.
val ROLE="follower"
//
val config=ConfigFactory.load("Actors.conf");
// ActorSystem, , actor
val actorSystem=ActorSystem("Megalith",config.getConfig(ROLE))
val Follower=actorSystem.actorOf(Props(new Follower()),ROLE)
//
Follower ! "start"
actorSystem.awaitTermination()
// actor Megalith role actor, actor
val actor=context.actorSelection(s"akka.tcp://Megalith@$IP:$Port/user/"+role)
// caseclass, caseclass Serializable
actor ! MyCaseClass(1,2,3)
2、actorモデルの特徴
3、actorモデルとマルチスレッドモデルの違い
共通点:actorモデルでは、各actorもスレッドを独占し、独立してタスクを実行できます.
コアの違い:
マルチスレッドの通信媒体のデータは共有されている(スタックメモリの領域)ため、ロックの問題があり、マルチスレッドは同じプロセスにある必要があります.
actorのデータはそれぞれ独自であるため、異なるプロセスや異なるサーバに分散することができ、分散ジョブを実現することができます.