The difference between transparent transparency and location transparency

I searched a bit for searches to find a good explanation of the differences between the two aforementioned remoting strategies, i.e. transparent deletion and location transparency.

As far as I know, the former is in the Java RMI database, the latter is in the Akka database. I know Java RMI very well, and I understand what a transparent remote control means, but what about Akka ?

Thanks to everyone for the answers.

+7
java scala akka remoting rmi
source share
2 answers

The two are actually opposites.

"Transparent Remoting" means that remote calls look like local calls. “Location transparency” means that local calls look like remote calls.

Although this may not seem like a big problem, it is. These are all the assumptions you can make. Typically, local calls have much higher accuracy, since there are far fewer possible errors and errors. Embracing these failure modes and errors in "Location transparency", it no longer matters when the sender and receiver are located.

With Transparent Deletion, it is not obvious that you are crossing the asynchronous and binary boundaries and thus whether the calling thread can make progress, whether there will be a notification of communication errors or loss of information or corruption.

I hope that answers your question,

Cheers, √

+12
source share

See the docs :

The previous section describes how actor paths are used to enable location transparency. This feature deserves additional explanation because the term "transparent remote access" was used in a completely different way in the context of programming languages, platforms, and technologies.

In principle, transparent remote access is tied to RMI (as you said yourself) and means calling methods on objects, not knowing whether methods are executed locally, or if data was sent over the network to execute on a remote object.

Location transparency is a similar philosophy, but related to actors. This means that the Akka API does not distinguish between local and remote participants. More specifically, this means that even if an actor can work in both the local and the remote actors system, as soon as you receive it (using the system name, actor name and host server of the remote machine), you use it the same way if he were running locally. If you switch an actor to run remotely locally (or vice versa), you only need to change what you need to change is to search for the actor (since it is now on a different host). But once the ActorRef been received, the rest of your code does not care if the actor works locally or remotely.

See also here .

+3
source share

All Articles