Skip to content

v1.2.0

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 14 Feb 22:31
badad0c

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 to admin.log-trim-check-interval
    • allow-bootstrap has been renamed to auto-provision
    • bootstrap-num-partitions has been renamed to default-num-partitions
    • metadata-store-client has been renamed to metadata-client
    • metadata-store has been renamed to metadata-server and metadata-store.rocksdb has been flattened into metadata-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