IT-Tage 2018, Frankfurt: Vortrag von Mario-Leander Reimer (@LeanderReimer, Cheftechnologe bei QAware)
=== Dokument bitte herunterladen für bessere Lesbarkeit! ===
Abstract: Data Processing und Microservices sind ein perfektes Gespann. In dieser Kombination können Microservices dazu verwendet werden, ein flexibles, Event-getriebenes und skalierbares System von lose gekoppelten Datenverarbeitungsaufgaben aufzubauen. Diesen Ansatz nennen wir Dataservices.
In diesem Vortrag stellen wir zunächst die wesentlichen Konzepte und einige Schlüsseltechnologien vor, um Dataservice-Architekturen zu realisieren. Anschließend werden wir die einzelnen Bestandteile einer exemplarischen Datenverarbeitungs-Pipeline schrittweise komponieren und die Showcase-Pipeline in der Cloud zur Ausführung bringen und skalieren.
9. FAST
DATA
Low latency and high
throughput:
Stream processing
Messaging
Event-driven
BIG
DATA
All things distributed:
Distributed
Processing
Distributed
Databases
9
Data to information:
Machine (deep) learning
Advanced statistics
Natural Language Processing
SMART
DATA
10. Das Gustafsons Gesetz ist bei großen Datenmengen
passender als das Amdahlsche Gesetz.
10
Annahme: Der parallele Anteil P ist linear abhängig von der Problemgröße (i.W. der Datenmenge), der sequenzielle Anteil hingegen
nicht. Beispiel: Mehr Bilder, mehr parallele Konvertierung
Gesetz: Steigt der parallele Anteil P linear (oder mehr) mit der Problemgröße, so wächst auch der Speedup linear
X
15. 15
Die Grundidee: Eingabe – Verarbeitung – Ausgabe.
Datenverarbeitung mit einem Graph von Microservices.
I1
Sources
Pn
P1P1
Pn
Processors
O1
Sinks
Microservice
(aka Dataservice)
Message
Queue
16. Probleme und Überlegungen zu “Pipes und Filters“.
QAware 16
Komplexität: das Muster bietet enorme Flexibilität, doch die Komplexität steigt da die Filter auf mehrere
Server verteilt sind.
Zuverlässigkeit: es braucht Infrastruktur, die sicherstellt, dass die zwischen Filtern in einer Pipeline
weitergeleiteten Daten nicht verloren gehen und die Filter selbst resilient laufen.
Idempotenz: speziell im Fehlerfall muss die Verarbeitung einer Nachricht das gleiche Ergebnis ohne jegliche
Seiteneffekte ergeben.
Wiederholte Nachrichten: die Pipeline muss doppelte Nachrichten erkennen und entfernen. Idealerweise
bietet die Messaging-Infrastruktur eine automatische Erkennung und Entfernung doppelter Nachrichten.
Kontext und Status: die Filter einer Pipeline werden separat ausgeführt, sie sollten keine Annahmen über die
Art und Reihenfolge des Aufrufs machen. Jeder Filter muss mit ausreichend Kontext- und Status-Information
versorgt werden.
siehe https://docs.microsoft.com/de-de/azure/architecture/patterns/pipes-and-filters
24. Wichtige Kubernetes Konzepte.
24
Services are an abstraction for a logical
collection of pods.
Pods are the smallest unit of compute in
Kubernetes
Deployments are an abstraction used to
declare and update pods, RCs, …
Replica Sets ensure that the desired number
of pod replicas are running
Labels are key/value pairs used to identify
Kubernetes resources
35. 35
AMQP protocol support
OpenWire support for ActiveMQ 5 clients
MQTT support
STOMP protocol support
HornetQ Core protocol support for HornetQ clients
JMS 2.0 and 1.1 support
High availability with shared store and non
shared store (replication)
Flexible Clustering
High performance journal for message persistence
Large Message Support
36. Quelle: https://softwaremill.com/mqperf/
Amazon SQS is an easy choice, with good performance and no
setup required, if already on AWS
if you are already using Mongo, it is easy to build a replicated
message queue on top of it, without the need to create and
maintain a separate messaging cluster
ActiveMQ is a popular and widely used messaging broker with
moderate performance, wide protocol support
Artemis offers the best perfomance (on par with Kafka) with the
familiarity of JMS and a wide range of supported protcols
AMQP/STOMP/MQTT support
Kafka offers the best performance (on par with Artemis) and
scalability, at the cost of feature set
EventStore can be your central storage for events with complex
event processing capabilities and great performance
36
41. QAware 41
Distributed Data Structures
Data Partitioning and Replication
Distributed Compute and Query
Cloud and Virtualization Support
JCache Provider, JEE Integrated Clustering
Multitude of clients (.NET, Java, Go, …)
Big Data (Jet, Spark, Mesos)
44. 44
Some Open Source Dataservice Platforms.
Standardized API with several open source implementations
Microservices: JavaEE micro container
Messaging: JMS, MQTT, Kafka, SQS
Platforms: Docker, Kubernetes, OpenShift, DC/OS
Stream processing tightly integrated with Kafka
Microservices: main()
Messaging: Kafka, Kafka Streams
Platforms: any Kafka runs on
Open source by Lightbend
Microservices: Lagom, Play
Messaging: akka
Platforms: Conductr, ???
Open source project based on the Spring stack
Microservices: Spring Boot, Spring Cloud Stream & Task
Messaging: Kafka, RabbitMQ
Platforms: PCF, Kuberntes, YARN, Mesos
Java EE / Jakarta EE Kafka Streams
Lagom Framework Spring Cloud Data Flow
45. Overview of Java EE APIs suited for Dataservices.
45
CDI
Extensions
Web
Fragments
Bean Validation
2.0
CDI 2.0
Managed Beans 1.0
JCA 1.7
JPA 2.2 JMS 2.0
JSP 2.3
EL 3.0
EJB 3.2 Batch 1.0
JSF 2.3
Interceptors
1.2
Mail 1.6
Common
Annotations 1.3
JTA 1.2
JAX-
WS 1.4
JAX-RS
2.1
Concurrency
1.0
JSON-
P 1.1
JSON-B 1.0
WebSocket
1.1
JAPSIC 1.1 JACC 1.5
Security
1.0
Servlet 4.0
JCache 1.0