クラスタ対応ルーター:ここakkaクラスタ対応ルーターとakkaクラスタシャーディングの異なるユースケース?
val router = system.actorOf(ClusterRouterPool( RoundRobinPool(0), ClusterRouterPoolSettings( totalInstances = 20, maxInstancesPerNode = 1, allowLocalRoutees = false, useRole = None ) ).props(Props[Worker]), name = "router")
は、我々は
router
にメッセージを送ることができますが、メッセージはリモートrouteeの俳優のシリーズに送信されます。クラスタシャーディング(持続性を考慮していない)
class NewShoppers extends Actor { ClusterSharding(context.system).start( "shardshoppers", Props(new Shopper), ClusterShardingSettings(context.system), Shopper.extractEntityId, Shopper.extractShardId ) def proxy = { ClusterSharding(context.system).shardRegion("shardshoppers") } override def receive: Receive = { case msg => proxy forward msg } }
ここで、我々は
proxy
にメッセージを送ることができ、メッセージはシャードの俳優(別称、エンティティ)のシリーズに送信されます。
だから、私の質問は:あなただけのどんなノードにいくつかの作業を送信し、何らかの処理が起こるしたいときit seems both 2 methods can make the tasks distribute to a lot of actors. What's the design choice of above two? Which situation need which choice?
次に、一貫したハッシュプールルーターはどうですか?クラスターシャーディングとの違いは? – lagom
これは、トポロジが同じである限り、同じノードに作業を送信します。変更すると、ハッシュがノードの完全なセットを超えているため、別のノードに送信を開始する可能性があります。それはルートに何らかの方法で通知するわけではないので、あなたはまだこの方法でidによって俳優に対処できませんでした。 – johanandren
この記事:[Akka.Clusterアプリケーションの状態の配布](https://petabridge.com/blog/akkacluster-state-distribution/?utm_source=tuicool&utm_medium=referral)とjohanandrenの回答の私の質問。 – lagom