untu / comedy

Node.js actor framework.
Eclipse Public License 1.0
653 stars 36 forks source link

Location Transparency? #39

Closed Teun closed 5 years ago

Teun commented 5 years ago

In frameworks like Akka, the concept of Location Transparency is always stressed a lot. It allows moving actors to another node, which in turn allows for dynamically growing and shrinking a cluster. Also live software updating of framework or application would require this.

Does the comedy team envision implementing something like this? Or is comedy built on a different vision that does not require these concepts?

weekens commented 5 years ago

@Teun , if we talk about parent-child actor communication, then the location transparency is already present in Comedy: you can switch actor modes from in-memory to forked (separate process) or remote (remote machine) together with changing the number of parallel actors (clustering), and in all these cases your code does not change. Comedy guarantees that if you've got an actor reference, it's location transparent.

Akka does however have actor lookup functionality, which is not present in Comedy for the moment.

Teun commented 5 years ago

Thank you for your response. Yes, I think I understand: you have transparent ActorRef instances. But there is really no way to transparently move instances to another physical location (like another process or machine) without the other actors noticing, right? And it is the creating actor (or its config file) that decides where a child lives. And if this is remote, the creator must know from configuration which other nodes exist.

Do I get that right or am I missing something? And if that is the case, is that intentional (as in: comedy is not trying to do that) or will it be on the road map eventually?

weekens commented 5 years ago

@Teun , actors in Comedy can dynamically change their mode (say, from "in-memory" to "remote") and this change is transparent to actor reference holder. Actor mode can be changed in runtime both programmatically and with configuration modification. See https://github.com/untu/comedy#hot-configuration-change