Absicherung gegenüber externen Diensten mit Hystrix

Slides:



Advertisements
Ähnliche Präsentationen
interaktiver Web Service Workflows
Advertisements

Software Engeniering II
Software Assurance Erweiterte Software Assurance Services
der Universität Oldenburg
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Einführung in die Informatik: Programmierung und Software-Entwicklung
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Basis-Architekturen für Web-Anwendungen
Erweiterung B2B Usermanagement / LDAP-Anbindung
Proaktives CONTRL Handling mit B2B by Practice
Ausnahmen HS Merseburg (FH) WS 06/07.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Threads Richard Göbel.
Java: Objektorientierte Programmierung
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Komplexe Systemlandschaft
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Brandenburgische Technische Universität Cottbus Program Profiling Andrzej Filipiak Übung Testen von Software SoSe 2006.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Datenmanagement in Sensornetzen PRESTO - Feedback gesteuertes Datenmanagement - SS 2007 Sören Wenzlaff.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
M A P K I T Management eines J2EE basierten eCommerce Systems am Beispiel des ATG Dynamo Applikationsservers und BMC Patrol als Managementframework.
Grundschutztools
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
TWS/Graph HORIZONT Produkt-Präsentation Software für Rechenzentren
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Xenario IES Information Enterprise Server. Xenario Information Enterprise Server (IES) Die neue Architektur des Sitepark Information Enterprise Servers.
{The Business Engineers} copyright by mindsquare GmbH Seite 1 Risikomanagement e Risk.
Tobias Kluge: FAME Middleware / Karlsruhe / The FAME project – Middleware.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
HORIZONT 1 XINFO ® Das IT - Informationssystem Java Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Generalisierung/Spezialisierung Subtypisierung/Vererbung
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Analyse von Ablaufdiagrammen
Das Änderungssystem für TWS Definitionen
HORIZONT 1 XINFO ® Das IT - Informationssystem HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 /
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
HORIZONT 1 XINFO ® Das IT - Informationssystem Assembler HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 /
Publikation auf Knopfdruck Judith Riegelnig Michael Grüebler 19. Oktober 2010 / Statistiktage Neuenburg.
SAP Seminar 2007 Materialstammsätze anlegen
Managemententscheidungsunterstützungssysteme (Ausgewählte Methoden und Fallstudien) ( Die Thesen zur Vorlesung 3) Thema der Vorlesung Lösung der linearen.
Das IT - Informationssystem
Analyseprodukte numerischer Modelle
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
2014 Januar 2014 So Mo Di Mi Do Fr Sa So
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Vortrag von Rechtsanwältin Verena Nedden, Fachanwältin für Steuerrecht zur Veranstaltung Wege zum bedingungslosen Grundeinkommen der Piratenpartei Rhein-Hessen.
Einführung OpenSTA. Agenda - über OGVIT - Warum Lasttests - Was ist OpenSTA - Wie arbeitet OpenSTA - Skripte für OpenSTA - OpenSTA Collectors - Tests.
Untersuchungen zur Erstellung eines
Javelin Internet-based parallel computing using Java.
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
prof. dr. dieter steinmannfachhochschule trier © prof. dr. dieter steinmann Folie 1 vom Montag, 30. März 2015.
Das IT - Informationssystem
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
Wieland Schwinger Softwareentwicklung 2 Assertions.
© 2012 TravelTainment Einführung in Enterprise JavaBeans Seminarvortrag von Ralf Penners Folie 1 von 34.
 Präsentation transkript:

Absicherung gegenüber externen Diensten mit Hystrix <<Präsentationstitel, Datum und Autor über Ansicht -> Kopf- und Fußzeile anpassen>> msg systems, tt.mm.jj Absicherung gegenüber externen Diensten mit Hystrix Alexander Schwartz Source Talk Tage 2014 am 26. August 2014 in Göttingen @ahus1de Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014 <<Autor>>

Source Talk Tage 2014 / Hystrix / Alexander Schwartz AGENDA Anwendungen mit externen Diensten Einbau von Hystrix Schritt für Schritt Anwendungsüberwachung mit Hystrix Hystrix – für jede Anwendung geeignet? Zusammenfassung Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Source Talk Tage 2014 / Hystrix / Alexander Schwartz AGENDA Anwendungen mit externen Diensten Einbau von Hystrix Schritt für Schritt Anwendungsüberwachung mit Hystrix Hystrix – für jede Anwendung geeignet? Zusammenfassung Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Anwendungen mit externen Diensten Idealisierte Anwendungen haben keine Abhängigkeiten Registrierung Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Anwendungen mit externen Diensten Echte Anwendungen haben Abhängigkeiten Kontodaten- validierung Registrierung Kunden- datenbank Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Anwendungen mit externen Diensten Ein Dominoeffekt tritt auf, wenn eine Komponente ausfällt Ein Nutzer kann sich nur registrieren, wenn alle drei Komponenten funktionieren. (Performance-)Probleme können sich fortpflanzen und verstärken. Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Anwendungen mit externen Diensten Domino: Eine langsame Kundendatenbank destabilisiert das System Eine langsame Kundendatenbank führt zur Überlastung der Kontovalidierung. Die aufgestauten Nutzer führen zu einer Überlastung der Registrierung. Das System kann nicht ohne Hilfe in einen stabilen Zustand gelangen. Kontodaten- validierung Registrierung Kunden- datenbank Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Anwendungen mit externen Diensten Probleme in einer Komponente sollen sich nicht fortpflanzen Möglichkeit 1: Asynchrone Verarbeitung Warteschlangen: Die Kunden werden nach der Registrierung asynchron in der Kundendatenbank angelegt. Aber: Funktioniert nicht bei synchroner Rückgabe von Werten wie bei der Kontovalidierung. Möglichkeit 2: Robuste synchrone Verarbeitung Beschränkung der Antwortzeit (Timeout) Sicherungen beim Abweichen vom Normbereich (Circuit Breaker) Abschottung der Komponenten untereinander (Bulkhead) Technische Implementierung: Netflix Hystrix Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Source Talk Tage 2014 / Hystrix / Alexander Schwartz AGENDA Anwendungen mit externen Diensten Einbau von Hystrix Schritt für Schritt Anwendungsüberwachung mit Hystrix Hystrix – für jede Anwendung geeignet? Zusammenfassung Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Einbau von Hystrix Schritt für Schritt Netflix Hystrix: Kapselung von Schnittstellen Java-Bibliothek: kann beliebige Schnittstellen kapseln Implementiert Patterns für robuste Anbindung von Schnittstellen Open Source seit 2011 Hystrix @ Github: https://github.com/Netflix/Hystrix Hystrix Tutorial: https://github.com/ahus1/hystrix-examples Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Einbau von Hystrix Schritt für Schritt Ausgangsbasis: Aufruf des externen Services ohne Absicherung if (!IBANValidator.isValid(account)) { throw new ValidationException("invalid"); } Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Einbau von Hystrix Schritt für Schritt Schritt 1: Kapselung des Aufrufs als HystrixCommand private static class IBANValidatorCommand extends HystrixCommand<Boolean> { private Account account; protected IBANValidatorCommand(Account account) { super(Setter.withGroupKey(HystrixCommandGroupKey.Factory .asKey("iban"))); this.account = account; } @Override protected Boolean run() throws Exception { return IBANValidator.isValid(account); Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Einbau von Hystrix Schritt für Schritt Schritt 2: Anpassen des ursprünglichen Codes if (!new IBANValidatorCommand(account).execute()) { throw new ValidationException("invalid"); } IBANValidatorCommand wirft HystrixRuntimeExceptions. Die Exceptions des gekapselten Aufrufs werden in HystrixRuntimeExceptions eingepackt. Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Einbau von Hystrix Schritt für Schritt <<Präsentationstitel, Datum und Autor über Ansicht -> Kopf- und Fußzeile anpassen>> msg systems, tt.mm.jj Einbau von Hystrix Schritt für Schritt Standardverhalten von Hystrix implementiert alle drei Patterns Zeitlimit von 1000 ms für die Antwort (Timeout) Maximal 10 parallele Anfragen (Bulkhead) Abschaltung, wenn mehr als 50% der Aufrufe fehlschlagen (Circuit Breaker) Nach einer Abschaltung Wiederanlaufversuch alle 5 Sekunden (Circuit Breaker) Die Standardwerte und die individuellen Werte auf Kommandoebene sind konfigurierbar. => Bulkhead (10 parallele Anfragen) schlägt i.d.R. als Rate Limiter zuerst zu! Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014 <<Autor>>

Einbau von Hystrix Schritt für Schritt Schritt 3: Hinzufügen von Fallbacks private static class IBANValidatorCommand ... { /* ... */ @Override protected Boolean getFallback() { return IBANValidator.isCheckDigitValid(account); } Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Einbau von Hystrix Schritt für Schritt Schritt 4: Konfiguration zur Laufzeit Hystrix wird standardmäßig über Archaius konfiguriert. Archaius kann die Werte aus einer Datenbank, einer Datei, etc. auslesen. Änderungen werden ohne Neustart aktiv. (Mehr Informationen: https://github.com/Netflix/Hystrix/wiki/Configuration) # Java Start-Parameter -Darchaius.configurationSource.additionalUrls=file:///.../archaius.properties -Darchaius.fixedDelayPollingScheduler.delayMills=1000 -Darchaius.fixedDelayPollingScheduler.initialDelayMills=1000 # archaius.properties (Standard-Werte) hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=1000 hystrix.command.default.circuitBreaker.errorThresholdPercentage=50 hystrix.command.default.circuitBreaker.requestVolumeThreshold=20 hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=5000 # archaius.properties (spezifische Werte für ein HystrixCommand) hystrix.command.IBANValidatorCommand.execution.isolation.thread.timeoutInMilliseconds=1000 hystrix.command.IBANValidatorCommand.circuitBreaker.errorThresholdPercentage=50 hystrix.command.IBANValidatorCommand.circuitBreaker.requestVolumeThreshold=20 hystrix.command.IBANValidatorCommand.circuitBreaker.sleepWindowInMilliseconds=5000 Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Einbau von Hystrix Schritt für Schritt Option: Verwendung von Futures Future<Boolean> futureResult = new IBANValidatorCommand(account).queue(); /* ... do something in between ... */ // see if the call has completed in the meantime if(futureResult.isDone()) { /* ... */ } // retrieve result - wait if necessary Boolean result = futureResult.get(); Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Einbau von Hystrix Schritt für Schritt Option: Verwendung von Observables Observable<Boolean> result = new IBANValidatorCommand(account).observe(); result.subscribe(new Action1<Boolean>() { @Override public void call(Boolean b) { // do something once the response is ready } }); Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Einbau von Hystrix Schritt für Schritt Interner schematischer Ablauf eines HystrixCommands Quelle: https://github.com/Netflix/Hystrix/wiki/How-it-Works Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Source Talk Tage 2014 / Hystrix / Alexander Schwartz AGENDA Anwendungen mit externen Diensten Einbau von Hystrix Schritt für Schritt Anwendungsüberwachung mit Hystrix Hystrix – für jede Anwendung geeignet? Zusammenfassung Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Anwendungsüberwachung mit Hystrix Langzeit- und Echtzeit-Überwachung Überwachung liefert mir wichtige Informationen: Funktioniert die Anbindung wie gewünscht? Hat sich der Normbereich verändert? Alle Parameter und Kennzahlen sind verfügbar per API oder Konnektoren für Yammer Metrics, Netflix Servo, JMX, … Proof of Concept mit Zabbix und Riemann im Tutorial Hystrix Dashboard ist Teil der Hystrix Distribution: Browser-Seite mit Commands und Thread Pools pro Anwendung im Cluster Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Anwendungsüberwachung mit Hystrix Echtzeitinformationen werden im Hystrix Dashboard angezeigt Ergebnisse absolut Fehlerrate Verlauf der letzten Minuten IBANValidatorCom… Anfragen Anzahl der Hosts im Cluster Zustand Antwortverhalten Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Anwendungsüberwachung mit Hystrix Echtzeitinformationen werden im Hystrix Dashboard angezeigt Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Source Talk Tage 2014 / Hystrix / Alexander Schwartz AGENDA Anwendungen mit externen Diensten Einbau von Hystrix Schritt für Schritt Anwendungsüberwachung mit Hystrix Hystrix – für jede Anwendung geeignet? Zusammenfassung Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Hystrix – für jede Anwendung geeignet? Rezept für die Einführung von Hystrix Bewusstsein schaffen: Komponenten können ausfallen, Fehler dürfen sich nicht fortpflanzen. Vermessung des Normalzustands. Identifikation der geeigneten Schnittstellen (synchron und idempotent). Akzeptieren, dass zu langsame Antworten als Fehler gewertet werden. Aufbau Monitoring und Einbau von Hystrix der Anwendung. Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Hystrix – für jede Anwendung geeignet? <<Präsentationstitel, Datum und Autor über Ansicht -> Kopf- und Fußzeile anpassen>> msg systems, tt.mm.jj Hystrix – für jede Anwendung geeignet? Mögliche Herausforderungen rund um Hystrix Hystrix ist Open-Source-Software Für Korrekturen und neue Funktionalität ist Mitarbeit am Code explizit gewünscht. Gebaut für Netflix-Infrastruktur Durch die Nutzung bei Netflix bewährt. Eigene Anwendungsfälle sollten ausgiebig getestet werden. Entkopplung basiert auf Threads Kein Problem in Apache Tomcat, ggf. in anderen Application Servern. Eingeschränkte Nutzung ohne Threads ist möglich. JEE7 JSR 236 (Concurrency Utilities for Java EE) noch nicht unterstützt. Exceptions des Service werden als HystrixRuntimeExceptions verpackt Wenn der eigene Code die Exceptions des Service erwartet, so müssen die HystrixRuntimeExceptions entpackt werden. => Keine selbstständige adaptive Anpassung Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014 <<Autor>>

Source Talk Tage 2014 / Hystrix / Alexander Schwartz AGENDA Anwendungen mit externen Diensten Einbau von Hystrix Schritt für Schritt Anwendungsüberwachung mit Hystrix Hystrix – für jede Anwendung geeignet? Zusammenfassung Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Source Talk Tage 2014 / Hystrix / Alexander Schwartz Zusammenfassung Hystrix ermöglicht widerstandsfähige Anwendungen Mit Hystrix steht eine erprobte technische Lösung für bewährte Patterns zur Verfügung. Ein Umbau bestehender Anwendungen ist auch nachträglich möglich. APIs mit bestehenden Implementierungen für die Integration in ein bestehendes Monitoring existieren. Hystrix @ Github: https://github.com/Netflix/Hystrix Hystrix @ Heise Developer: http://heise.de/-2176465 Hystrix Examples: http://ahus1.github.io/hystrix-examples/ @ahus1de Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Source Talk Tage 2014 / Hystrix / Alexander Schwartz Geschäftsbereich Travel & Logistics Principal IT Consultant Telefon: +49 171 5625767 alexander.schwartz@msg-systems.com www.msg-systems.com Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Source Talk Tage 2014 / Hystrix / Alexander Schwartz Szenario Engpass-Service mit verschiedenen Antwortzeiten 20 Prozesse schicken im Abstand von einer Sekunde eine Anfrage Simulierter externer Service verarbeitet Anfragen streng sequenziell Antwortzeit des externen Service wird schrittweise vergrößert Die folgenden Folien zeigen das Verhalten, wie es im Hystrix Dashboard angezeigt wird. (vgl. http://ahus1.github.io/hystrix-examples/) Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Source Talk Tage 2014 / Hystrix / Alexander Schwartz Szenario Schnelle Antwort: 10 ms Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Source Talk Tage 2014 / Hystrix / Alexander Schwartz Szenario Mittlere Antwort: 70 ms Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Source Talk Tage 2014 / Hystrix / Alexander Schwartz Szenario Langsame Antwort: 100 ms Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Source Talk Tage 2014 / Hystrix / Alexander Schwartz Szenario Kritische Antwortzeit: 200 ms Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014

Source Talk Tage 2014 / Hystrix / Alexander Schwartz Szenario Zu langsam: 1500 ms Source Talk Tage 2014 / Hystrix / Alexander Schwartz © msg systems ag, 26.08.2014