https://github.com/bastion-rs/bastion/blob/master/README.md
Highly-available Distributed Fault-tolerant Runtime
Untitled Database
Bastion is a highly-available, fault-tolerant runtime system with dynamic, dispatch-oriented, lightweight process model. It supplies actor-model-like concurrency with a lightweight process implementation and utilizes all of the system resources efficiently guaranteeing of at-most-once message delivery.
Usage
Bastion comes with a default one-for-one strategy root supervisor. You can use this to launch automatically supervised tasks.
Features
- Message-based communication makes this project a lean mesh of actor system.
- Without web servers, weird shenanigans, forced trait implementations, and static dispatch.
- Runtime fault-tolerance makes it a good candidate for distributed systems.
- If you want the smell of Erlang and the powerful aspects of Rust. That's it!
- Completely asynchronous runtime with NUMA-aware and cache-affine SMP executor.
- Exploiting hardware locality wherever it is possible. It is designed for servers.
- Supervision system makes it easy to manage lifecycles.
- Kill your application in certain condition or restart you subprocesses whenever a certain condition is met.
- Automatic member discovery, cluster formation and custom message passing between cluster members.
- Using zeroconf or not, launch your bastion cluster from everywhere, with a single actor block.
- Proactive IO system which doesn't depend on anything other than
futures
.
- Bastion's proactive IO has scatter/gather operations,
io_uring
support and much more...
Guarantees
- At most once delivery for all messages.
- Completely asynchronous system design.
- Asynchronous program boundaries with fort.
- Dynamic supervision of supervisors (adding a subtree later during the execution)