Hermes

A fast, fault-tolerant & linearizable replication protocol

What is Hermes ?

It is a reliable replication protocol inspired by the multiprocessor's cache-coherence protocols. Hermes combines a broadcast-based, invalidating design with logical timestamps and the idea of early value propagation to achieve the following desired properties for reliable datastores.

Strong Consistency

Hermes before performing a write it invalidates all replicas of an object and allows any replica to serve reads for the object when their local object's state is Valid. This ensures the strongest consistency that provides real-time single-copy semantics (aka Linearizability).

High Performance

Hermes enables local reads from all replicas and high performance writes. By coupling its broadcast-based, invalidating design with logical timestamps it affords writes that are decentralized (no centralized ordering point), fully concurrent (1. all replicas coordinate writes, 2. parallel writes to different objects) and commit fast after a single roundtrip -- without ever needing to abort.

Fault Tolerance

Hermes exploits reliable membership to establish a group of operational nodes. Nevertheless, failures during a write can leave some replicas blocked in invalid state. Hermes allows any blocked node to safely replay the write and unblock. Write replays are enabled through the idea of propagating the writes' value together with the timestamped invalidation message (early value propagation).

Features

Properties

ASPLOS'20 Presentation

Q & A

Our goal is to facilitate a public and interactive Q&A to benefit the public.
See answers of existing questions or post your own questions about Hermes using the button below.



License

The code of Hermes is freely distributed to the public under the Apache 2.0 License.
The authors encourage any capital contributions to be donated to charity instead!

Contact

If you have any questions regarding Hermes do not hesitate to contact
Antonis Katsarakis (antonios.katsarakis {at} ed.ac.uk).