Robuste Anwendungen mit Hystrix



Ähnliche Dokumente
Oracle APEX Installer

Java: Vererbung. Teil 3: super()

Objektorientierte Programmierung

SEP 114. Design by Contract

Kleines Handbuch zur Fotogalerie der Pixel AG

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Guide DynDNS und Portforwarding

ebay Mode Fokus ebay Partner Network

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Visualisierung auf Büro PC s mit dem ibricks Widget

Kapsch Carrier Solutions GmbH Service & Support Helpdesk

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Lokale Installation von DotNetNuke 4 ohne IIS

OpenOffice Installation Eckehard Möbius, Böblingen - Oliver Schulz, Stuttgart Stand / Version 1.4

Stecken Sie Ihren USB Stick oder Ihre externe USB Festplatte in den USB Steckplatz des Sinus 154 DSL SE.

Echtzeitanomalieerkennung für Internetdienste (Abschlussvortrag)

WebService in Java SE und EE

Schedulingund Thread-Ausführer

Programmieren in Java

Client-Server-Beziehungen

Prinzipien Objektorientierter Programmierung

Kommunikations-Management

ACDSee 2009 Tutorials: Datenbankinformation in Dateien einbetten

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

HP Service Virtualization. Bernd Schindelasch 19. Juni 2013

Guideline. Facebook Posting. mit advertzoom Version 2.3

Aktivieren von Onlinediensten im Volume Licensing Service Center

etermin Einbindung in Outlook

Nachricht der Kundenbetreuung

Anleitung zum Online-Monitoring für Installateure

Installation SQL- Server 2012 Single Node

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

5.2 Neue Projekte erstellen

Haben Sie schon einmal aus einem ScreenCobol Requestor ein Java Programm aufgerufen?

SharePoint Demonstration

Themen. Web Service - Clients. Kommunikation zw. Web Services

BMW TREUE SERVICE. SRP MARKETING MODUL. ANLEITUNG ZUM EINSPIELEN DER LEUCHTTURMKAMPAGNEN IN DIE KSD.

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

WORKSHOP VEEAM ENDPOINT BACKUP FREE

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Tipps und Tricks zu Netop Vision und Vision Pro

DOKUMENTATION IVT Online-Shop

Planung für Organisation und Technik

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

NbI-HS. NbIServ Bethenhausen Bethenhausen

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Übungen zu Softwaretechnik

VERWALTUNG. Postfächer, Autoresponder, Weiterleitungen, Aliases. Bachstraße 47, 3580 Mödring

RESTful Web. Representational State Transfer

So funktioniert die NetWorker 7.5 Eigenschaft zum Sichern umbenannter Verzeichnisse ( Backup renamed Directories )

Kurzanleitung /Kompalitätstest Barcode. Sie haben zwei Möglichkeiten unsere Barcode/Strichcodes für Ihren eigenen stationären Einzelhandel zu nutzen.

Probeklausur Softwareengineering SS 15

MailUtilities: Remote Deployment - Einführung

3 Windows als Storage-Zentrale

Tevalo Handbuch v 1.1 vom

Internet Explorer Version 6

1 Was ist das Mediencenter?

Einführung in die Programmierung für Wirtschaftsinformatik

Memeo Instant Backup Kurzleitfaden. Schritt 1: Richten Sie Ihr kostenloses Memeo-Konto ein

Ihr CMS für die eigene Facebook Page - 1

Installation der SAS Foundation Software auf Windows

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

IBM SPSS Data Access Pack Installationsanweisung für Windows

DOKUMENTATION VOGELZUCHT 2015 PLUS

macs Support Ticket System

Proxyeinstellungen für Agenda-Anwendungen

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Anleitung zum School Education Gateway

Aktualisierung der Lizenzierungsrichtlinien für Adobe Produkte

Im folgenden wird die Outlookanbindung an organice/pi beschrieben.

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Erstellen eines Office-COM-Add-In mit Visual Basic 2005 Express Edition

Windows Server 2012 R2 Essentials & Hyper-V

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

Installieren und Verwenden von Document Distributor

AGFA ORBIS eportal / Orbis Web

... über OGVIT GmbH & Co. KG

Windows 8/8.1 RecImg-Manager

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

How to do? Projekte - Zeiterfassung

Windows 7 Winbuilder USB Stick

Gründe für fehlende Vorsorgemaßnahmen gegen Krankheit

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

Wichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher)

Tutorial: Wie kann ich Dokumente verwalten?

Kontaktlinsen über die neue Website bestellen eine Kurzanleitung

Anleitung. Lesezugriff auf die App CHARLY Termine unter Android Stand:

Transkript:

Robuste Anwendungen mit Hystrix Alexander Schwartz Entwicklertag Frankfurt am 25. Februar 2015 1

AGENDA 1. Anwendungen mit externen Diensten 2. Einbau von Hystrix Schritt für Schritt 3. Anwendungsüberwachung mit Hystrix 4. Hystrix für jede Anwendung geeignet? 5. Zusammenfassung 2

Mein Sponsor und Arbeitgeber msg systems ag in 13 Städten in Deutschland präsent 1980 gegründet 23 Länder mehr als 4.500 Kollegen 583 Mio Umsatz 2013 3

Wer ich bin Alexander Schwartz Principal IT Consultant im GB Travel und Logistics 384 gefundene Geocaches 2 Kinder 12 Jahre Java 1 Frau 7 Jahre PL/SQL 3,5 Jahre Direktbank 7 Jahre Absatzfinanzierung @ahus1de 4

AGENDA 1. Anwendungen mit externen Diensten 2. Einbau von Hystrix Schritt für Schritt 3. Anwendungsüberwachung mit Hystrix 4. Hystrix für jede Anwendung geeignet? 5. Zusammenfassung 5

Anwendungen mit externen Diensten Idealisierte Anwendungen haben keine Abhängigkeiten Registrierung 6

Anwendungen mit externen Diensten Echte Anwendungen haben Abhängigkeiten Kontodatenvalidierung Registrierung Kundendatenbank 7

Anwendungen mit externen Diensten Ein Dominoeffekt tritt auf, wenn eine Komponente ausfällt Ein verteiltes System bietet viele Fehlermöglichkeiten Ein Nutzer kann sich nur registrieren, wenn alle drei Komponenten funktionieren. (Performance-)Probleme können sich fortpflanzen und verstärken. Peter Deutsch: Fallacies of Distributed Computing (1994) https://blogs.oracle.com/jag/resource/fallacies.html 8

Anwendungen mit externen Diensten Domino: Eine langsame Kundendatenbank destabilisiert das System Kontodatenvalidierung Registrierung Kundendatenbank 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. 9

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 10

AGENDA 1. Anwendungen mit externen Diensten 2. Einbau von Hystrix Schritt für Schritt 3. Anwendungsüberwachung mit Hystrix 4. Hystrix für jede Anwendung geeignet? 5. Zusammenfassung 11

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 12

Einbau von Hystrix Schritt für Schritt Ausgangsbasis: Aufruf des externen Services ohne Absicherung if (!IBANValidator.isValid(account)) { throw new ValidationException("invalid"); } 13

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); } 14

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. 15

Einbau von Hystrix Schritt für Schritt Schritt 2b: Entpacken der ursprünglichen Exceptions (bei Bedarf) try { if (!new IBANValidatorCommand(account).execute()) { throw new ValidationException("invalid"); } } catch (HystrixRuntimeException e) { if (e.getcause() instanceof MyException) { throw (MyException) e.getcause(); } throw e; } 16

Einbau von Hystrix Schritt für Schritt Standardverhalten von Hystrix implementiert alle drei Patterns Zeitlimit von 1.000 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. 17

Einbau von Hystrix Schritt für Schritt Schritt 3: Hinzufügen von Fallbacks private static class IBANValidatorCommand... { } /*... */ @Override protected Boolean getfallback() { return IBANFallback.isCheckDigitValid(account); } 18

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 # archaius.properties (spezifische Werte für ein HystrixCommand) hystrix.command.default.circuitbreaker.errorthresholdpercentage=50 hystrix.command.ibanvalidatorcommand.execution.isolation.thread.timeoutinmilliseconds=1000 hystrix.command.default.circuitbreaker.requestvolumethreshold=20 hystrix.command.ibanvalidatorcommand.circuitbreaker.errorthresholdpercentage=50 hystrix.command.default.circuitbreaker.sleepwindowinmilliseconds=5000 hystrix.command.ibanvalidatorcommand.circuitbreaker.requestvolumethreshold=20 hystrix.command.ibanvalidatorcommand.circuitbreaker.sleepwindowinmilliseconds=5000 19

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(); 20

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 } 21

Einbau von Hystrix Schritt für Schritt Interner schematischer Ablauf eines HystrixCommands Quelle: https://github.com/netflix/hystrix/wiki/how-it-works 22

AGENDA 1. Anwendungen mit externen Diensten 2. Einbau von Hystrix Schritt für Schritt 3. Anwendungsüberwachung mit Hystrix 4. Hystrix für jede Anwendung geeignet? 5. Zusammenfassung 23

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 24

Anwendungsüberwachung mit Hystrix Echtzeitinformationen werden im Hystrix Dashboard angezeigt Ergebnisse absolut Fehlerrate Verlauf der letzten IBANValidatorCom Minuten Anfragen Anzahl der Hosts im Cluster Zustand Antwortverhalten 25

Anwendungsüberwachung mit Hystrix Echtzeitinformationen werden im Hystrix Dashboard angezeigt 26

Anwendungsüberwachung mit Hystrix Echtzeitinformationen werden im Riemann Dashboard angezeigt 27

Anwendungsüberwachung mit Hystrix Langzeitinformationen werden in Zabbix angezeigt 28

AGENDA 1. Anwendungen mit externen Diensten 2. Einbau von Hystrix Schritt für Schritt 3. Anwendungsüberwachung mit Hystrix 4. Hystrix für jede Anwendung geeignet? 5. Zusammenfassung 29

Hystrix für jede Anwendung geeignet? Rezept für die Einführung von Hystrix 1. Bewusstsein schaffen: Komponenten können ausfallen, Fehler dürfen sich nicht fortpflanzen. 2. Vermessung des Normalzustands. 3. Identifikation der geeigneten Schnittstellen (synchron und idempotent). 4. Akzeptieren, dass zu langsame Antworten als Fehler gewertet werden. 5. Aufbau Monitoring und Einbau und Aktivierung von Hystrix in die Anwendung. 30

Hystrix für jede Anwendung geeignet? Alternative: Rezept II für die Einführung von Hystrix 1. Identifikation der geeigneten Schnittstellen (synchron und idempotent). 2. Einbau von Hystrix mit neutralisierter/deaktivierter Funktion. 3. Aufbau Monitoring und Vermessung des Normalzustands. 4. Akzeptieren, dass zu langsame Antworten als Fehler gewertet werden. 5. Hystrix scharfschalten. 31

Hystrix für jede Anwendung geeignet? Mögliche Herausforderungen rund um Hystrix 1. Hystrix ist Open-Source-Software Für Korrekturen und neue Funktionalität ist Mitarbeit am Code explizit gewünscht. 2. Gebaut für Netflix-Infrastruktur Durch die Nutzung bei Netflix bewährt. Eigene Anwendungsfälle sollten ausgiebig getestet werden. 3. 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. 4. Exceptions des Service werden als HystrixRuntimeExceptions verpackt Wenn der eigene Code die Exceptions des Service erwartet, so müssen die HystrixRuntimeExceptions entpackt werden. 32

AGENDA 1. Anwendungen mit externen Diensten 2. Einbau von Hystrix Schritt für Schritt 3. Anwendungsüberwachung mit Hystrix 4. Hystrix für jede Anwendung geeignet? 5. Zusammenfassung 33

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. Literatur: Release It! Design and Deploy Production-Ready Software (Michael Nygard) Fallacies of Distributed Computing (Peter Deutsch, 1994) https://blogs.oracle.com/jag/resource/fallacies.html Hystrix @ Github: https://github.com/netflix/hystrix Hystrix @ Heise Developer: http://heise.de/-2176465 Hystrix Examples: http://ahus1.github.io/hystrix-examples/ @ahus1de 34

Vielen Dank für Ihre Aufmerksamkeit Alexander Schwartz Geschäftsbereich Travel & Logistics Principal IT Consultant Telefon: +49 171 5625767 alexander.schwartz@msg-systems.com www.msg-systems.com 35