扫描Akka Actor
问题描述:
我有一个节点可能正在运行多个服务器实例(Akka remote actor)。我希望客户能够扫描给定节点上的一系列端口以查找实时服务器。扫描Akka Actor
我写在我的客户演员这个方法:
private def scanHost(serverHost: String) = {
val initialPort = 36627
val portsToScan = (initialPort until initialPort + 32).toList
val tries = portsToScan map {
port ⇒ remote.actorFor("EnMAS-service", serverHost, port) ? Discovery
}
val replies = tries filter { future ⇒ {
try {
future.get match {
case reply: DiscoveryReply ⇒ true
case _ ⇒ false
}
}
catch { case _ ⇒ false }
}}
ClientManager.ScanResult(replies map {_.get.asInstanceOf[DiscoveryReply]})
}
我想知道,有没有得到这个工作更习惯的方法?虽然我想这个用例相当普遍,但我无法在这方面找到太多内容。
是的,基本上我正在设置群集每个“集群”都有一个任意的头节点来同步它的同伴。我希望留在Scala标准库和Akka框架内,以避免引入另一个依赖。我应该由Akka现在的主管负责,但我期待着即将到来的集群支持。谢谢(你的)信息。 –
那么,你可以通过建立一个你所拨入的聚合节点来跟踪客户端。然而,分布式错误检测远非微不足道,这就是为什么我们将集群作为2.1的主要特性发布的原因 –