Akka remote actor server discovery

后端 未结 3 961
走了就别回头了
走了就别回头了 2021-02-06 01:02

I would like to deploy a remote actors software made with akka on a cluster. The system is composed of several worker nodes and a single master node. The problem is that I canno

相关标签:
3条回答
  • 2021-02-06 01:28

    A while ago I created a prototype that's intended to solve your problem (feel free to reuse the code and/or contribute).

    A few words on how does it work. It starts a remote actor for each actor registry (=node). RegistryActor holds links to all the other registries running in a distributed setup. When a new node is added to the system, it needs to know about at least one other node (ActorRegistry) and notify it. ActorRegistry than lets all other nodes know about the new one (thus, any RegistryActor has links to all other RegistryActor's), and starts a process of exchanging links to actors - at the end of it, all the actor registries have links to all actors (either local or remote) running in a system.

    For more details, please refer this blogpost.

    0 讨论(0)
  • 2021-02-06 01:32

    Take a look at jgroups.

    http://jgroups.org/

    It meets all of your criteria - it is lightweight, open source and very mature, stable product.

    You can easily configure it for automatic group management and discovery based on your requirements - it supports almost any network configuration - you can use multicast, shared file, or unicast for group member discovery.

    0 讨论(0)
  • 2021-02-06 01:37

    Unless all nodes share some common knowledge, I think your solution would have to rely on IP broadcast. Broadcasting is defined as sending a packet to all network nodes on a subnet, so if your master node does that while all worker nodes listen for it, you should be able to connect them all without knowing the IP addresses a priori.

    I haven't coded this in Scala, but here's a fairly readable example of how to broadcast messages in java: http://download.oracle.com/javase/tutorial/networking/datagrams/broadcasting.html. It should be straightforward to adapt it to Scala using the same classes.

    0 讨论(0)
提交回复
热议问题