#actor-framework #low-latency #telemetry #service #supervisor #non-blocking #communication

steady_state

Framework for building long runnnig low latency actor based services on Linux. Provides visual telemetry to watch data flows between actors. Uses earlang style supervisors to defend against panics and uses non blocking async ringbuffers for inter actor communication.

2 releases

new 0.0.14 Apr 15, 2024
0.0.13 Apr 9, 2024
0.0.11 Mar 26, 2024
0.0.6 Feb 24, 2024
0.0.1 Jan 25, 2024

#391 in Asynchronous

Download history 2/week @ 2024-02-02 154/week @ 2024-02-16 274/week @ 2024-02-23 318/week @ 2024-03-01 201/week @ 2024-03-08 203/week @ 2024-03-15 297/week @ 2024-03-22 194/week @ 2024-03-29 172/week @ 2024-04-05

875 downloads per month
Used in cargo-steady-state

MIT license

3MB
7K SLoC

steady_state: The Next Frontier in Rust Frameworks for Resilient Services

'steady_state' embarks on an ambitious journey to revolutionize the development of resilient, high-performance services in Rust. With a clear vision of integrating advanced latency management, system observability, and unparalleled fault tolerance, steady_state is designed to set new standards in software reliability and efficiency.

*Please note: these old snapshots may not match the most recent updates. Telemetry Visualization Example An animated GIF demonstrating real-time telemetry visualization in action. Telemetry Visualization Example Telemetry Visualization Example *A snapshots of a more complex example

Why steady_state?

Named for its commitment to maintaining a consistent, optimal operational state, steady_state offers:

  • Fine-Grained Latency Control: Through customizable batch processing and adjustable channel lengths, empowering developers to meet rigorous SLA requirements.
  • Embedded Observability: Built-in telemetry features for real-time performance insights, facilitating targeted optimizations.
  • Erlang-Inspired Fault Tolerance: Leveraging an advanced supervision system to ensure service continuity, even in the face of unexpected failures.
  • Clean Shutdown Logic: Suitable for IoT, Robotics and many other systems which require well-ordered clean shutdown of actors.

Core Features

steady_state is crafted to ensure safety, reliability, and performance, focusing on:

  • Safety and Concurrency: Harnessing Rust's memory safety features and actor-based supervised threading for secure, durable, manageable concurrency.
  • High Throughput: Engineered for handling high message volumes with consistent processing capacity, crucial for demanding systems. Actors can consume and produce messages in batches for greater efficiency.
  • Visibility: Find and fix performance bottlenecks quickly with built-in telemetry, enabling real-time monitoring and analysis of your service's operational state.
  • Rapid Prototyping: Mock up your ideas in graphiz DOT files, then generate your Rust service project to get started.

see the cargo-steady-state project

    • You will write a small graphiz Dot file with clear annotations in the labels
    • The code generator will take that dot and rough in your new project so business logic can be your focus.
    • See the cargo-steady-state readme where we provide a LLM prompt so you can have a discussion with AI about your new product and then have it build the dot for you.

Vision and Roadmap

steady_state is more than just a framework; it's a vision for building the future of service development in Rust. Our roadmap includes:

  • App Wrappers: Solutions for CLI, systemd, ROS2 or Kubernetes Operators
  • Cross-Machine Telemetry: Extending observability across distributed system deployments, essential for comprehensive performance management.
  • Prebuilt Actors for Cloud Services: Simplifying the integration with popular cloud platforms and services.

Commitment to Testing

In steady_state, we prioritize rigorous testing to ensure service stability:

  • Individual Actor Tests: Roughing in tests for each actor to maintain clarity and ease of maintenance.
  • Comprehensive Mock Actors: Enabling full end-to-end and load testing capabilities for thorough validation of your service architecture without requiring external services.
  • External Testing: On the roadmap but we would like to integrate the popular Testcontainers

steady_state combines Rust's safety guarantees with extensive code coverage and a supervisor system to offer unmatched stability in service delivery.

Dependencies

~19–35MB
~550K SLoC