Restate v1.2.0: A distributed durable execution engine, built from first principles
Release Highlights 🌟
High-availability and fast fail-overs 💪
This release allows you to scale out your Restate Servers and run them in a highly-available, distributed setup. Restate runs active-active deployments, with data getting copied instantly for fast, consistent fail-over. Try deploying a multi-node cluster yourself.
The single Restate server binary comes with all-batteries-included and no required external dependencies. You can start with a single node deployment and then seamlessly turn your deployment into a multi-node cluster by starting new Restate server processes. Grow the cluster yourself.
Graphical UI: Insights beyond your usual queue 🔬
This release adds a graphical UI to add an easy and intuitive way to manage, navigate, and debug your Restate applications. You can now access and query all the useful data that Restate collects about your application and answer questions like:
- What function execution is blocking my invocation from getting executed?
- Where in my chain of calls did my handler or workflow get stuck?
- How many times was this function retried and which step is failing with what error?
and many more. The UI is bundled with Restate Server and accessible at the admin port http://localhost:9070
.
Operational tooling 🔧
We have created a new cluster administration tool to operate a multi-node Restate deployment. With restatectl
, you can check the status of your cluster, view the partitioning layout, change the configuration of your cluster, and take snapshots.
Snapshotting to object store 💾
To keep your data safe and freeing Restate from storing older data, Restate now supports creating partition store snapshots and to upload these snapshots to an object store. Check out how to configure snapshotting.
Performance improvements 🚀
This release further improves the latency and throughput of the system. Here are some latency measurements for a 3-way replicated cluster of 3 nodes under low and high load:
load | p50 | p75 | p90 | p99 | |
---|---|---|---|---|---|
3-step workflow | 549 rps (low) | 15ms | 30ms | 42ms | 69ms |
9-step workflow | 303 rps (low) | 31ms | 45ms | 57ms | 93ms |
1-step workflow | 23 131 rps (high) | 16ms | 20ms | 25ms | 40ms |
3-step workflow | 16 844 rps (high) | 58ms | 67ms | 76ms | 98ms |
9-step workflow | 8 571 rps (high) | 116ms | 126ms | 138ms | 163ms |
At low load, the 3-step workflow had a median latency of 15ms.
Load can be pushed to 17 000 requests per second (84 000 actions per second) with a p90 latency of 76ms.
You can run this benchmark yourself.
Backward compatibility 🔙
The 1.2 release is fully backward compatible with previous Restate releases starting from version 1.1. If you have a single node deployment that you would like to turn into a multi-node deployment without losing any data, then follow the multi-node migration guide.
Managing scheduled invocations 🕐
The Restate CLI and UI show you scheduled invocations. Restate allows you to cancel and kill these invocations now.
Full Changelog: v1.1.6...v1.2.0
Deprecations 💡
- This release removes the need for a dedicated port for the metadata store. In previous releases, Restate used port 5123 for it. Now, the metadata store listens on port 5122 by default. Consequently, the config option
metadata-store.bind-address
has been removed. - The :9071 Postgres protocol port is now deprecated and will be removed in a future release. You can make queries with the cli or over http to :9070/query, which can now return JSON in addition to arrow format data.
- Some config flags have been renamed. The old values will be accepted, but will be removed in a later version:
admin.log-trim-interval
has been renamed toadmin.log-trim-check-interval
allow-bootstrap
has been renamed toauto-provision
bootstrap-num-partitions
has been renamed todefault-num-partitions
metadata-store-client
has been renamed tometadata-client
metadata-store
has been renamed tometadata-server
andmetadata-store.rocksdb
has been flattened intometadata-server
Install
Pull the Docker images
docker pull docker.restate.dev/restatedev/restate:1.2.0
docker pull docker.restate.dev/restatedev/restate-cli:1.2.0
Install prebuilt binaries via Homebrew
brew install restatedev/tap/restate-server
brew install restatedev/tap/restate
brew install restatedev/tap/restatectl
Install prebuilt binaries into your npm project
npm install @restatedev/[email protected]
npm install @restatedev/[email protected]
npm install @restatedev/[email protected]
Download binary archives
File | Platform | Checksum |
---|---|---|
restate-server-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
restate-server-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
restate-server-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
restate-server-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
restate-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
restate-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
restate-cli-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
restate-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
restatectl-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
restatectl-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
restatectl-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
restatectl-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
New Contributors
- @sunng87 made their first contribution in #1634
- @aradwann made their first contribution in #1728
- @muhamadazmy made their first contribution in #1779
- @nikrooz made their first contribution in #2077
- @hamirmahal made their first contribution in #2371
- @iMezemz made their first contribution in #2372
- @myypo made their first contribution in #2454
- @edmondop made their first contribution in #2493