Verteilte Systeme mit Etcd in der Praxis

Java-API & Fazit

Erweiterte Möglichkeiten mit der Java-API

Eine vernünftige HTTP-Client-Bibliothek genügt bei Etcd für den Einstieg. Mit ihr lassen sich die Funktionsweise und Operationen schnell auf der Kommandozeile testen. Spätestens wenn die Funktionen in eigene Bibliotheken verpackt werden sollen, ist es Zeit, auf die Arbeit anderer Leute zurückzugreifen.

Es gibt eine ganze Reihe verschiedener Etcd-Treiber für die verschiedenen Plattformen. Exemplarisch gibt es hier einen Blick auf die Java-VM-Varianten. Dabei liegt der Fokus vor allem auf der Aktualität, der Unterstützung asynchroner Operationen und der Abbildung der vollständigen Etcd-REST-API.

Unter diesen Gesichtspunkten stechen vor allem etcd4j und der Boon etcd Client aus der Masse heraus. Beide werden aktiv gepflegt, bieten alle Funktionen der REST-API und unterstützen sowohl synchrone als auch asynchrone Operationen.

Die folgende Tabelle zeigt ein paar Code-Beispiele:

Operation Etcd4j Etcd-Client
Client erzeugen EtcdClient client = new EtcdClient(
URI.create(
"http://192.168.59.103:7001/"));
Etcd client = ClientBuilder.builder().hosts(
URI.create("http://192.168.59.103:7001")).
createClient();

Put synchron client.put(key, value).send().get(); client.set(key, value);
Put asynchron client.put(key, value).send()
.addListener(resp -> {..});
client.set(response -> {...}, "forever" +
key, value);
Delete synchron client.put(key, value).delete().get(); client.delete(key);
Delete asynchron client.delete(key, value).delete().get()
.addListener(resp -> {..});

client.delete(response -> {...}key);
Auf Änderung warten client.get(key).waitForChange().send()
.addListener(response -> {...});
client.wait(response -> {...}, key);

Boon hat im direkten Vergleich die Nase knapp vorn. Die API ist nicht nur kompakter, sondern fühlt sich beim Umgang mit asynchronen Operationen mehr nach dem aktuellen Java 8 an als Etcd4j. Diese Bewertung ist jedoch recht subjektiv. Wer selbst vergleichen möchte, kann auf das Git-Verzeichnis zum Artikel zugreifen. In dem Repository finden sich einige Beispiele.

Fazit

Etcd besticht durch seine soliden Konzepte, allen voran die Einfachheit und Zuverlässigkeit. Die gut strukturierte REST-API erlaubt einen extrem schnellen Einstieg, den manches Konkurrenzprodukt vermissen lässt. Gleichzeitig senkt sie auch die Hürde zur Integration in eigene Software mittels .NET, Java oder C/C++.

Die einfache Verwendung ist allerdings nicht unbedingt das wichtigste Argument für einen verteilten Key-Value-Store. Wichtiger ist, dass sich im Fehlerfall das Verhalten überschaubar nachvollziehen lässt, wie die aufgeführten Beispiele belegen.

Etcd hat eine niedrige Einstiegshürde und verspricht schnelle Ergebnisse. So erhält der Administrator eine Lösung für verteilte Systeme ohne viel Aufwand. Wer einen überschaubaren Key-Value-Store aufbauen möchte, sollte einen Blick auf Etcd werfen. (rme)

Conrad Pöpke
ist Senior IT-Consultant bei der codecentric AG und sieht sich in der Rolle eines "Coding-Software-Architekts", Entwicklers und alles anderem, was für die erfolgreiche Durchführung eines Projektes von Nöten ist. Sein Fokus liegt dabei sowohl auf klassischen Java-Projekten im Enterprise-Umfeld als auch modernen Ansätzen wie Microservice-Architekturen im Kontext von Lean Enterprises.

Jochen Mader
ist Lead IT Consultant bei der codecentric AG, wo er in den Bereichen Big Data und Agile Software Factory tätig ist. Neben seiner Haupttätigkeit ist er regelmäßiger Autor von Fachartikeln und auf verschiedenen Konferenzen als Speaker anzutreffen.