1
我有一個節點可能正在運行多個服務器實例(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的主要特性發布的原因 –