Introduction

This book aims to describe a superior approach to build heavily asynchronous and distributed applications based on the actor model using the elfo framework.

Goals

  • Facilitate the development of resilient, fault-tolerant systems.
  • Maintain enough performance to meet the needs of low-latency systems.
  • Enhance observability through extensive metrics to identify and rectify issues promptly.
  • Offer built-in support for exposing log events, dumps, metrics, and trace events.
  • Simplify the process of distributing actors across multiple machines.

Non-goals

  • Provide the most performant way to communicate between actors.
  • Provide any HTTP/WS server functionalities.

Features

  • Asynchronous actors equipped with supervision and a customizable life cycle.
  • Two-level routing system: between actor groups (pipelining) and inside them (sharding).
  • Protocol diversity: actors have the capability to process messages from various protocols, defined in different places.
  • Varied communication patterns: regular messages, request-response (TODO: subscriptions).
  • Dynamic configuration updates and distribution.
  • Suitable for tasks requiring both low latency and high throughput.
  • Tracing: every message is assigned a trace_id which spreads system-wide implicitly.
  • Telemetry through the metrics crate.
  • Dumping: messages can be archived for subsequent debugging.
  • Effortless distribution across nodes.
  • Utilities for straightforward testing.

The term "observability" could be better understood through demonstration. Consider, for example, the concept of metrics: