- Go >= 1.21.0
- Services - Durable Execution: Making code resilient to failures via automatic retries and recovery of previously finished actions.
- Durable Building Blocks: Restate turns familiar programming constructs into recoverable, distributed building blocks. Discover what you can do with the SDK.
- Virtual Objects: Stateful services with access to long-lasting, consistent K/V state.
- Workflows: Durable sequences of steps that can be queried, signaled and awaited.
- Durable RPC, Idempotency & Concurrency: Use programmatic clients to call Restate handlers. Add idempotency keys for deduplication.
- (Delayed) Message Queue: Restate as a queue: Send (delayed) events to handlers. Optionally, retrieve the response later.
- Webhook Callbacks: Point webhook callbacks to a Restate handler for durable event processing.
- Convert Sync Tasks to Async: Kick off a synchronous task (e.g. data upload) and convert it to asynchronous if it takes too long.
- Sagas: Preserve consistency by tracking undo actions and running them when code fails halfway through.
- Stateful Actors and State Machines: Stateful Actor representing a machine in our factory. Track state transitions with automatic state persistence.
- Scheduling Tasks: Restate as scheduler: Schedule tasks for later and ensure the task is triggered and executed.
- Parallelizing Work: Execute a list of tasks in parallel and then gather their result.
- Transactional Event Processing: Process events from Kafka to update various downstream systems in a transactional way.
- Event Enrichment / Joins: Stateful functions/actors connected to Kafka and callable over RPC.
Examples integrating Restate with other tools and frameworks:
- AWS Lambda + CDK: Sample project deploying a Go-based Restate service to AWS Lambda using the AWS Cloud Development Kit (CDK).
- KNative: Deploying Restate services with KNative.
Starter templates for new projects:
Step-by-step guides to learn Restate:
- Tour of Restate: An introduction to the SDK features as described in the documentation.