Skip to content

Documentation on the principles of virtual actors & comparison to Akka #435

@mertant

Description

@mertant

It seems that in #102 some explanation regarding the distinction between virtual actors and the actor model (as implemented by Akka) was added to the documentation at http://orbit.bioware.com/orbit-actor-overview.html ; however, that page is no longer available. The new documentation website at https://www.orbit.cloud/orbit/ doesn't have much in the way of explanation about virtual actors specifically, instead linking to Microsoft Orleans.

Orbit is a framework to write distributed systems using virtual actors on the JVM. A virtual actor is an object that interacts with the world using asynchronous messages.

This describes non-virtual actors as well.

At any time an actor may be active or inactive. Usually the state of an inactive actor will reside in the database. When a message is sent to an inactive actor it will be activated somewhere in the pool of backend servers. During the activation process the actor’s state is read from the database.

Based on this, it seems that the key difference is persistence, although again the text does not make explicit the distinction between actor and virtual actor.

It is heavily inspired by the Microsoft Orleans project.

Of course, one could go read the Orleans documentation to learn more about virtual actors - but since that is a .NET project and Orbit is merely "inspired" by it, one wouldn't be able to tell which parts are applicable here and which perhaps are not.

On the whole, there isn't much information on the web regarding the differences between Akka and Orbit other than a couple old discussions on github (linked below). In the context of the JVM world, and this being the lesser known of the two projects, it would perhaps help to increase awareness of the Orbit project if the documentation included a more robust introduction, written with the experienced JVM developer in mind (who is likely already familiar with Akka).

akkadotnet/akka.net#756

akka/akka-meta#8

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions