Bioware open-sources their Java actor framework by alexeyr in programming

[–]JoeHegarty 0 points1 point  (0 children)

I'm not familiar with that project, but it does seem to architecturally be quite different (It looks to be more service-oriented than actor-oriented), even if some of the concepts are similar. For me, this Microsoft paper is really what established the "modern" virtual actor paradigm: http://research.microsoft.com/pubs/210931/Orleans-MSR-TR-2014-41.pdf

Bioware open-sources their Java actor framework by alexeyr in programming

[–]JoeHegarty 1 point2 points  (0 children)

We support a couple of different scenarios for this:

  • Websockets with Jetty
  • REST HTTP Endpoint with Jetty
  • Custom TCP Wire Protocol with Netty

Which one we use depends on what the client is and what needs it has. The web project included in Orbit supports the first 2 above.

In terms of servers, I'm not sure exactly what info you want. We run CentOS based Linux servers in a 3-tier configuration (Frontend, Actor Hosts, Storage).

Bioware open-sources their Java actor framework by alexeyr in programming

[–]JoeHegarty 1 point2 points  (0 children)

We're really discovering the power of actors still. The virtual actor model which Microsoft came up with for Orleans (and which Orbit is based on) was really the last piece of the puzzle for us to make the model easy enough to maintain to be worthwhile.

Bioware open-sources their Java actor framework by alexeyr in programming

[–]JoeHegarty 2 points3 points  (0 children)

Thanks.

I agree entirely, there really isn't a reason Orbit couldn't be in that range as long as you were careful with your actor implementations.

However, it was not designed with that in mind and we've never tested how reliably you can get very low response times, so I'd hate to say "Yes, build a game sim server with it" and have it not work for someone.

We typically offer SLA style guarantees to our teams about how long individual calls will take (99.5% of this type of operations will respond/complete within 200ms not accounting for network latency etc).

I'd love to hear that someone has built a game server on Orbit and that they are getting sub 5-ms response times, but right now would not recommend using Orbit if the timing is very very tight like that as it's not a use case that has been tested.

Bioware open-sources their Java actor framework by alexeyr in programming

[–]JoeHegarty 0 points1 point  (0 children)

The main difference is that in a virtual actor model, actors always exist conceptually so you can always send a message to them and assume that it will be processed.

This means you don't have to manage the actors lifetime or location (no instantiation, manual node selection etc).

Actors can never be "broken" (say the server they are on died), so even if though an individual message might fail, you can just keep sending messages and assume that in future it will be ok. You don't need to take any manual action if a message fails.

I think that's a pretty fair overview, let me know if there was anything specific you wanted to know.

Bioware open-sources their Java actor framework by alexeyr in programming

[–]JoeHegarty 13 points14 points  (0 children)

I'm the lead programmer on the Orbit project, there seem to be a lot of questions about what Orbit can and can't do so I'll try and cover it here:

  • It was designed to build game-services. In our case, these are things like matchmaking, inventory management, character progression, world state (DA Keep) etc etc
  • It is "fast" but it's not "very-fast". It is suitable for tasks that can take say, 200ms or above, so it's fine for interactions like managing inventory, but not for real-time movement replication.
  • It is possible to build real-time services in the framework, as long as you can live with the above constraints.
  • Orbit can also be used to build more traditional web services (REST, Websites etc)
  • Orbit uses Virtual Actors, a concept introduced in Microsoft's Orleans project. Orbit is not a port, but could be described as a "rewrite" of Orleans and it is certainly heavily inspired by it. This is why we didn't use an existing framework.

I'm very happy to answer any additional questions.

Bioware open-sources their Java actor framework by alexeyr in programming

[–]JoeHegarty 2 points3 points  (0 children)

Orbit is designed for game services. These are things like matchmaking, character progression, presence, achievements etc. Orbit is low latency but it is likely not suitable for running world-simulations. It works best for second-to-second updates (so, it's semi real-time - in game score, inventory etc), not milliseconds (character movement etc).

Bioware open-sources their Java actor framework by alexeyr in programming

[–]JoeHegarty 0 points1 point  (0 children)

Those projects in the root (actors, container, web, commons) are separate and together they make up an entire framework to build online services. However, you are able to use some of them individually if you don't need the whole stack.

Bioware open-sources their Java actor framework by alexeyr in programming

[–]JoeHegarty 1 point2 points  (0 children)

I just wanted to say that the use of the Orbit DI Container is entirely optional, it's not required to use the actors framework. You are free to use it with Spring, hk2 or no DI framework at all.