Show HN: Rivet Actors – Durable Objects build with Rust, FoundationDB, Isolates Hello! We posted a Show HN for Rivet last year for our container orchestration project ( https://ift.tt/2umSFCT ). In that time, a lot has changed that I think HN will find interesting. Rivet is open-source actor infrastructure similar to Cloudflare's Durable Objects. Rivet itself already serves millions of MAU in production using our current container runtime – primarily for multiplayer games – and Rivet Actors are a new extension to support actor-like workloads. Rivet Actor's core primitives are RPC, state, and events. Actors are powered by Rust, V8 isolates (supports Deno), and FoundationDB. An architecture diagram is available here for [1]. If you're not familiar with FoundationDB, you're overdue to watch Dave Rosenthal's talk [3]. (I firmly believe it's by far the best permissively licensed database; if only it had a well maintained SQL layer.) Here's where Rivet's architecture gets fun – we don't rely on a traditional orchestrator like Kubernetes or Nomad for our runtime. Instead, our orchestrator is powered by an in-house actor-like workflow engine – similar to how FoundationDB is powered by their own actor library (Flow [4]) internally. It lets us reliably & efficiently build complex logic – like our orchestrator – that would normally be incredibly difficult to build correctly. For example, here's the logic that powers Rivet Actors themselves with complex mechanisms like retry upgrades, retry backoffs, and draining [2]. One of the reasons we built Rivet Actors is because we tried to replace most of our Redis-based realtime infrastructure with Durable Objects. The architecture allowed us to build realtime features much faster & efficiently, but the platform & APIs were needlessly rigid and difficult to use. Our goal is to build an actor-like platform that includes the bells and whistles required for developers to benefit from the actor model without the learning curve of tools like Erlang/OTP, Akka, or Orleans. Rivet Actors provides a few key benefits in flexibility over Durable Objects: - Open-source (Apache 2.0) – built to be self-hosted and deployed on-prem - Provides observability out of the box, no Logpush required - Rivet Actors support the Deno runtime, so NPM & JSR just works - @rivet-gg/actor [5] framework provides RPC, state, and events out of the box for faster bootstrapping; you can modify and deploy it yourself - Supports both V8 isolates & Docker-compatible containers so you can run any software you'd like, like Godot/Unity servers or video transcoding - Also supports TCP & UDP (we run games!) - Provides vanilla HTTP API for easy use with existing apps - Full control over regions There's plenty more that I don't have space to talk about. Give our docs a read if you'd like to learn more [6] or read about internal design decisions [7]. I'll be in the comments answering questions! Cheers, Nathan [1] https://ift.tt/70XGDNS [2] https://ift.tt/7sWn4ho... [3] https://www.youtube.com/watch?v=9g84y_60VGM [4] https://ift.tt/nhEX52Z [5] https://ift.tt/tjsyg8P [6] https://rivet.gg/docs [7] https://ift.tt/ElisuYT https://ift.tt/fiBAMzn December 20, 2024 at 07:36PM
0 Comments