TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Actor system for the JVM developed by Electronic Arts

228 pointsby dmuxabout 3 years ago

19 comments

JoeHegartyabout 3 years ago
So, I&#x27;m the original lead developer of this project.<p>This was meant to be a followup to the original version of Orbit which now lives on as orbit-legacy on GitHub.<p>Unfortunately other priorities have meant this project hasn&#x27;t proceeded in the past couple of years. I wouldn&#x27;t really recommend anyone use either of them.<p>However, the ideas and implementation both for Orbit Legacy and the early version of Orbit 2 contain some ideas and concepts that may be useful to folks.<p>I still think there is immense value in virtual actors (Orleans from Microsoft is one great alternative for .NET, and Dapr also looks interesting) but I can&#x27;t say if we&#x27;ll ever get back to it.
评论 #31200028 未加载
评论 #31201019 未加载
评论 #31198642 未加载
giancarlostoroabout 3 years ago
I found out about this one a few years back from a former (online) friend who worked on it (although I&#x27;m not entirely certain in his specific involvement, I want to say he was the lead developer initially though), his name is Joe Hegarty[0]. There was another implementation as well from him in TypeScript for Node.js called Ratatoskr[1].<p>As far as I&#x27;ve always known him, he always works on networking projects, I believe he worked on the Fable 3 networking for coop and several other games. I can&#x27;t even imagine what he works on at EA now honestly.<p>JoeH if you&#x27;re reading this by chance: Just remember you were an inspiration back in the day (mid to late 2000s) to a lot of people who became developers and learned a ton from your work back then, myself included. To this day I remember asking you questions almost every day. Thank you for your efforts and your patience.<p>[0] <a href="https:&#x2F;&#x2F;www.joeh.ca&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.joeh.ca&#x2F;</a><p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;ratatoskr&#x2F;ratatoskr" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;ratatoskr&#x2F;ratatoskr</a>
评论 #31198140 未加载
verstabout 3 years ago
The OSS project I work on, Dapr (Distributed Application Runtime - an incubated CNCF project) implements the virtual actor pattern if anyone is interested.<p><a href="https:&#x2F;&#x2F;docs.dapr.io&#x2F;developing-applications&#x2F;building-blocks&#x2F;actors&#x2F;actors-overview&#x2F;" rel="nofollow">https:&#x2F;&#x2F;docs.dapr.io&#x2F;developing-applications&#x2F;building-blocks...</a><p><a href="https:&#x2F;&#x2F;github.com&#x2F;dapr&#x2F;dapr" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;dapr&#x2F;dapr</a>
评论 #31197313 未加载
gentleman11about 3 years ago
&gt; 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.<p>Could anybody elaborate on this? How does an actor differ from an object that uses promises to talk to a server?
评论 #31193814 未加载
评论 #31193497 未加载
评论 #31193158 未加载
评论 #31193475 未加载
评论 #31196027 未加载
评论 #31196884 未加载
评论 #31193150 未加载
评论 #31193194 未加载
评论 #31193092 未加载
评论 #31196442 未加载
评论 #31193157 未加载
sandGorgonabout 3 years ago
a very interesting counterpoint is Vert.x - <a href="https:&#x2F;&#x2F;vertx.io&#x2F;docs&#x2F;vertx-core&#x2F;java&#x2F;" rel="nofollow">https:&#x2F;&#x2F;vertx.io&#x2F;docs&#x2F;vertx-core&#x2F;java&#x2F;</a><p>Vert.x uses a concept called Verticles - which are like actors..with an external message bus. Which ends up being more practical if you start leveraging kafka, etc in the architecture.
评论 #31197741 未加载
shartteabout 3 years ago
It looks interesting, but seems to be dead.<p>The repository has virtually no activity since september 2020.
评论 #31193292 未加载
lichtenbergerabout 3 years ago
Does anyone know how it compares to Akka?
评论 #31193286 未加载
slantedviewabout 3 years ago
I wonder what problems this project aimed to solve that Akka didn&#x27;t already solve.
newobjabout 3 years ago
“Exactly one” is a hard concept to get right. How do they ensure that exactly one instance of an actor is alive at once, without sacrificing latency of actor start and&#x2F;or while tolerating network partitions?
评论 #31193418 未加载
Pxtlabout 3 years ago
I assume EA didn&#x27;t make this just for funsies. What do they use it for?
评论 #31194351 未加载
评论 #31194561 未加载
ackfoobarabout 3 years ago
past: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9300672" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9300672</a>
tdsteinabout 3 years ago
How does this compare to Erlang &#x2F; Elixir?
hestefiskabout 3 years ago
Why would one pick this over Akka?
the_arunabout 3 years ago
Is actor system same as event based systems or event driven architecture?
评论 #31194557 未加载
评论 #31194566 未加载
mavamabout 3 years ago
I&#x27;d like to mention the native actor model implementation CAF, the C++ Actor Framework, and share some experiences. (Disclaimer: I&#x27;ve been developing on CAF in the past and have a good relationship with the creator.) CAF (1) provides native actors without an VM layer, (2) type-safe interfaces so that the compiler yells at you when a receiver cannot handle a message, and (3) transparent copy-on-write messaging so that you can still push stuff through pipelines and induce only copies only when a ref count is greater than one.<p>In our telemetry engine VAST, we&#x27;ve been using CAF successfully for several years for building a distributed system that always has a saturated write path. CAF provides a credit-based streaming abstraction as well, so that you can have backpressure across a chain of actors, making burst-induced OOM issues a blast from the past. You also get all the other benefits of actors, like linking and monitoring, to achieve well-defined failure semantics: either be up and running or collectively fail, but still allowing for local recovery—except for segfaults, this is where &quot;native&quot; has a disadvantage over VM-based actor models.<p>With CAF&#x27;s network transparent runtime, a message ender doesn&#x27;t need to know where receiver lives; the runtime either passes the message as COW pointer to the receiver or serializes it transparently. Other actor model runtimes support that as well, but I&#x27;m mentioning it because our experience showed that this is great value: we can can slice and dice our actors based on the deployment target, e.g., execute the application in one single process (e.g., for a beefy box) or wrap actors into single OS processes (e.g., when deploying on container auto-scalers).<p>The deep integration with the C++ type system allowed us to define very stable RPC-like interfaces. We&#x27;re currently designing a pub&#x2F;sub layer as alternate access path, because users are interested in tapping into streaming feeds selectively. This is not easy, because request-response and pub&#x2F;sub are two ends of a spectrum, but it turns out we can support nicely with CAF.<p>Resources:<p>- CAF: <a href="https:&#x2F;&#x2F;github.com&#x2F;actor-framework&#x2F;actor-framework" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;actor-framework&#x2F;actor-framework</a><p>- VAST: <a href="https:&#x2F;&#x2F;tenzir.github.io&#x2F;vast&#x2F;docs&#x2F;understand-vast&#x2F;actor-model" rel="nofollow">https:&#x2F;&#x2F;tenzir.github.io&#x2F;vast&#x2F;docs&#x2F;understand-vast&#x2F;actor-mod...</a> (sorry for the incompleteness, we&#x27;re in migration mode from the old docs, but this page is summarizing the benefits of CAF for us best)<p>- Good general actor model background: <a href="http:&#x2F;&#x2F;dist-prog-book.com&#x2F;chapter&#x2F;3&#x2F;message-passing.html#why-the-actor-model" rel="nofollow">http:&#x2F;&#x2F;dist-prog-book.com&#x2F;chapter&#x2F;3&#x2F;message-passing.html#why...</a>
评论 #31249524 未加载
dijitabout 3 years ago
Orbit is also the name of the always online DRM system that Ubisoft made many years ago.<p>Fun fact, the tech that was developed to power Orbit forked and evolved along largely divergent paths to be Uplay and the framework on which the Division and Division 2 online backends were made.<p>You can still see paths referencing Orbit in uplay, especially on the downloads: <a href="http:&#x2F;&#x2F;static3.cdn.ubi.com&#x2F;orbit&#x2F;launcher_installer&#x2F;UbisoftGameLauncherInstaller.exe" rel="nofollow">http:&#x2F;&#x2F;static3.cdn.ubi.com&#x2F;orbit&#x2F;launcher_installer&#x2F;UbisoftG...</a><p>Largely C++ on Windows.
评论 #31196207 未加载
voz_about 3 years ago
Ah GC languages, a curse upon us.
g051051about 3 years ago
It&#x27;d be a lot more interesting if it wasn&#x27;t in Kotlin.
评论 #31195269 未加载
评论 #31193611 未加载
评论 #31195702 未加载
btbuildemabout 3 years ago
I can&#x27;t help but recoil from a &quot;hello world&quot; that pulls in an entire container ship of dependencies.<p>Especially that we already have a perfectly good, battle-hardened, and relatively lightweight implementation of Actor model with Erlang &#x2F; Elixir.
评论 #31193864 未加载