Softwarekonferenz für Parallel Programming,
Concurrency und Multicore-Systeme
Heidelberg, Print Media Academy, 6.-8. April 2016

parallel 2016 » Programm »

// Erfahrungen mit Queues — von ActiveMQ über Hazelcast zu Disque

Queues werden häufig in verteilten Systemen verwendet, um Komponenten zu entkoppeln und die parallele Verarbeitung von Aufgaben zu ermöglichen. Im Gegensatz zu Datenbanken genießen Queues jedoch relativ wenig Aufmerksamkeit — dieser Vortrag soll dieses Problem beheben.

Wir sehen uns an, welche Aufgaben Queues in verteilten Systemen übernehmen können und welche allgemeinen Eigenschaften sie aufweisen. Danach diskutieren wir den Anwendungsfall von Electronic Data Interchange (EDI) — Daten werden über verschiedene Konnektoren empfangen, parallel verarbeitet und abschließend wieder weiterversendet.

Wir haben begonnen mit ActiveMQ zu arbeiten, was funktioniert, aber einige Nachteile mit sich bringt. Danach haben wir Hazelcast entdeckt, das alle Probleme zu lösen schien. Nur um danach festzustellen, dass wir die Probleme gegen andere eintauschen. Glücklicherweise wurde kürzlich Disque veröffentlicht, das sehr vielversprechend aussieht. Obwohl der Code noch nicht stabil ist, haben wir bereits teilweise darauf umgestellt mit vielversprechenden Resultaten.

Skills
Ein Grundverständnis verteilter Systeme ist auf jeden Fall hilfreich. Aufbauend darauf sehen wir uns generelle Limitierungen von Queues an — speziell die Entscheidung zwischen At-Least-Once und At-Most-Once. Danach betrachten wir, wie dies in gängigen Systemen implementiert wurde.

Lernziele
Das Verständnis, was Queues leisten und wofür sie (nicht) verwendet werden können. Außerdem betrachten wir verschiedene Implementierungen und welche Auswirkungen das auf ein konkretes System hat.

// Referent

// Philipp Krenn Philipp Krenn

ist Developer Advocate bei Elastic und verbreitet Begeisterung und Wissen über Volltextsuche, Analytics sowie Echtzeitdaten. Er spricht regelmäßig auf Konferenzen und Meetups über alle Themen rund um Elasticsearch, Datenbanken, Cloud Computing und DevOps.