akka 的集群访问方式

Posted vana

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了akka 的集群访问方式相关的知识,希望对你有一定的参考价值。

akka  中采用startProxy分区代理 访问 ,跟使用shardRegion 来访问的区别

 

这两种访问方式是不是重了呢。

 而另外这是一个单例代理

protected fun startUniverseProxy(universeRole: UniverseRole) 
val proxySettings = ClusterSingletonProxySettings.create(actorSystem).withRole(universeRole.clusterRole.name)
val actorRef: ActorRef = actorSystem.actorOf(ClusterSingletonProxy.props(universeRole.proxyPath, proxySettings))
universeProxies[universeRole] = actorRef


worldActor 中 又 创建了一个访问对象
/**
* Retrieve the actor reference of the [[ShardRegion]] actor responsible for the named entity type.
* The entity type must be registered with the [[#start]] or [[#startProxy]] method before it
* can be used here. Messages to the entity is always sent via the `ShardRegion`.
*/
就是只要  
protected fun startUniverseCwarShardProxy() 
ClusterSharding.get(actorSystem).startProxy(
GameWorldShard.universe_cwar.name, Optional.of(ClusterRole.universe_cwar.name),
UCWorldMessageExtractor()
)
.let logger.info("UniverseCwar shard proxy $it started.")
开始的方式, 就能以以下的方式获取到
ClusterSharding.get(context.system()).let 
ucWorldShardProxy = it.shardRegion(GameWorldShard.universe_cwar.name)

以上是关于akka 的集群访问方式的主要内容,如果未能解决你的问题,请参考以下文章

Akka(10): 分布式运算:集群-Cluster

如何自动扩展分片 Akka 集群?

使用Akka构建集群

使用Akka构建集群

Akka 集群单例Cluster Singleton

跨 Akka 集群同步数据的简单方法?