Oracle Coherence – Einführung und Anwendungsfälle Java Objekte auf Wolke7 Matthias Schorer, AEW6, Harald Wiedemer, Oracle Deutschland | JBFOne 2008
Agenda Distributed Caches Oracle Coherence - Konzepte Oracle Coherence - Anwendung Demo Coherence Anwendungsfälle - heute Vorstellung der Thematik Distributed Cache Funktionsweise anhand von Coherence wird erklärt Die Ideen bezüglich Distributed Cache werden vorgestellt: Ikesa cache Verwendung Grid anstatt AQ Die Servicewolke Demo Coherence Anwendungsfälle - die Zukunft
Ziel dieses Vortrags Der Vortrag soll Einblick geben in die Thematik von verteilten Caches die Umsetzung dieser Konzepte in dem Produkt Oracle Coherence die Nutzung der Vorteile dieses Konzepts innerhalb der FIDUCIA Die theoretische Vorstellung wird durch den beispielhaften Aufbau eines verteilten Caches in einer Demo ergänzt
Agenda Distributed Caches Oracle Coherence - Konzepte Oracle Coherence - Anwendung Demo Coherence Anwendungsfälle - heute Vorstellung der Thematik Distributed Cache Funktionsweise anhand von Coherence wird erklärt Die Ideen bezüglich Distributed Cache werden vorgestellt: Ikesa cache Verwendung Grid anstatt AQ Die Servicewolke Demo Coherence Anwendungsfälle - die Zukunft
45 Minuten = 2700 Sekunden = 2,7 Mio. Millisekunden Vortragsdauer 45 Minuten = 2700 Sekunden = 2,7 Mio. Millisekunden oder Zeit für 37,500,000 Transaktionen! 13,8 Tx/msec = 0,072 msec/Tx
Wieso? Die Kunden und Partner verlangen mehr Leistung Heute: ~100.000 Bank-Arbeitsplätze in den Banken Aber auch Mio. von Kunden per E-Banking möglich. Morgen gibt Vortrag zum Thema BAP auf iPhone Nicht mehr 100.000, sondern Millionen! Und Daten müssen schneller zur Verfügung stehen. „Ich nicht erst beim nächsten Batchlauf erfahren, ob meine Überweisung zu Lemann Brothers raus ist“
Wie? Web Tier Applikations Tier Datenbank Tier Wo ist in der heutigen Umgebung am meisten Potential für Optimierung? Web Tier Applikations Tier Datenbank Tier Netzwerk Transferzeit ~ 5 µs (10 -6 sec) 0,000005 sec Network Web Servers TomCat, Grid Oracle, IMS, DB2, MQ, AQ Platten Zugriffszeit ~ 5 ms (10 -3 sec) 0,005 sec Cobol, SQL, Messaging (Platten) Java Objekte (Speicher) Speicher Zugriffszeit ~ 5 ns (10 -9 sec) 0,000000005 sec
Wie? Web Tier Applikations Tier Datenbank Tier Grid wird um verteilten Cache erweitert Web Tier Applikations Tier Datenbank Tier Network Web Servers TomCat, Grid, Cache Oracle, IMS, DB2, MQ, AQ Cobol, SQL, Messaging (Platten) Java Objekte (Speicher)
Randbedingungen No Single Points of Failure Sicherheit der Daten Sicherheit vor Verfügbarkeit Speicherung in 2 Rechenzentren Hauptspeicher auf (einzelnem) Portal- Rechner begrenzt CPU-Leistung auf (einzelnem) Portal- Rechner begrenzt Skalierung über >500 Portal-Rechner No Single Points of Failure No Simple Points of Bottleneck No Service Registries No Masters + Workers already got one that is partitioned into over 200 separate clusters No Manual Partitioning Keep everything in Memory Active + Active Sites Across WAN Develop system on a note book Scale to over 500 servers No reconfiguration outages No byte-code manipulation / proxies No Data or Task Loss During failure During server upgrade During scale out No Transactions (XA) Support multiple versions Predictable response times Predictable scale out costs Manage via JMX, from any point in the “Cloud”. Pure Java Standard Edition Infrastructure add a maximum of 3ms latency to tasks. Integrate with existing applications (Java 1.4.2+)
Agenda Distributed Caches Oracle Coherence - Konzepte Oracle Coherence - Anwendung Demo Coherence Anwendungsfälle - heute Vorstellung der Thematik Distributed Cache Funktionsweise anhand von Coherence wird erklärt Die Ideen bezüglich Distributed Cache werden vorgestellt: Ikesa cache Verwendung Grid anstatt AQ Die Servicewolke Demo Coherence Anwendungsfälle - die Zukunft
Oracle Coherence Peer-to-Peer Clustering Kein Single Points of Failure Kein Master/Slave Alle Knoten übernehmen gleiche Aufgaben: Überwachung Cluster Funktion Verwaltung und Verarbeitung Daten Abfragen Parallelverarbeitung im “Team” Kommunikation Multicast oder 1:1 Skalierbar bis zur Maschinengrenze Standard Infrastruktur nutzbar Auf lineare Skalierbarkeit hin entworfen
Partitionierung Automatische Partitionierung Automatische, synchrone Spiegelung aller Daten Alle Knoten wissen jederzeit den Ort aller Daten (und deren Backup)! (Consensus)
Cluster-Überwachung Knoten überwachen sich gegenseitig Bei Zweifel wird Status gemeinsam ermittelt.
Cluster-Überwachung Knoten überwachen sich gegenseitig Bei Zweifel wird Status gemeinsam ermittelt Verbleibende Knoten übernehmen Daten und Funktion eines ausgefallenen Knoten Kein Datenverlust bei Ausfall Keine Unterbrechung des Betriebs Alle Knoten haben jederzeit die gleiche Sicht des Clusterzustands! (Consensus)
Erweiterung des Clusters Dynamische Erweiterung im laufenden Betrieb Daten und Funktionen werden automatisch auf neuen Knoten verteilt Keine Neupartitionierung Keine Neukonfiguration Keine Unterbrechung durch Erweiterung
Agenda Distributed Caches Oracle Coherence - Konzepte Oracle Coherence - Anwendung Demo Coherence Anwendungsfälle - heute Vorstellung der Thematik Distributed Cache Funktionsweise anhand von Coherence wird erklärt Die Ideen bezüglich Distributed Cache werden vorgestellt: Ikesa cache Verwendung Grid anstatt AQ Die Servicewolke Demo Coherence Anwendungsfälle - die Zukunft
Schlüssel/Objekt Paare Coherence verwaltet Daten als Paare aus Schlüssel/Wert oder Schlüssel/Objekt Nicht relational – kein RDBMS – keine Tabellen/Spalten – kein SQL Schlüssel und Objekt können jeden Datentyp annehmen Einfacher Datentyp wie String Meist benutzerdefinierter Datentyp oder Objekt Kein Data Dictionary Benutzer muss Objekte und Datentypen definieren Anwendung muss Daten kennen Kein SQL oder andere Abfragesprache Abfragen sind in Anwendung hart-codiert und müssen berechenbar sein Beispiel (mit vergleichbarem SQL) put(1, “Hallo”) = INSERT INTO table VALUES(1,’Hallo’); get(1) = SELECT * FROM table WHERE id = 1;
Erstellen eines Caches, Eintrag und Abfrage von Daten Erstellen eines Caches (NamedCache): NamedCache implementiert java.util.Map und javax.util.jcache, CacheFactory.ensureCluster(); NamedCache myCache = CacheFactory.getCache(“employees“); Daten in Cache eintragen: Daten aus Cache abfragen: myCache.put(“Name”,”Tim Middleton”); Java.util.Map Standardmethoden stehen zur Verfügung: get, put, putAll, size, clear, lock, unlock… Javax.util.jcache: String name = (String)myCache.get(“Name”);
Cluster Hallo Welt public void main(String[] args) throws IOException { CacheFactory.ensureCluster(); NamedCache nc = CacheFactory.getCache(“test”); nc.put(“key”, “Hallo Welt”); System.out.println(nc.get(“key”)); System.in.read(); // Cluster may throw exception }
Agenda Distributed Caches Oracle Coherence - Konzepte Oracle Coherence - Anwendung Demo Coherence Anwendungsfälle - heute Vorstellung der Thematik Distributed Cache Funktionsweise anhand von Coherence wird erklärt Die Ideen bezüglich Distributed Cache werden vorgestellt: Ikesa cache Verwendung Grid anstatt AQ Die Servicewolke Demo Coherence Anwendungsfälle - die Zukunft
Coherence Demo Wer kann mit einem Laptop zur Demo beitragen? Voraussetzungen: DHCP, Java ≥1.5, Admin-Rechte
Agenda Distributed Caches Oracle Coherence - Konzepte Oracle Coherence - Anwendung Demo Coherence Anwendungsfälle - heute Vorstellung der Thematik Distributed Cache Funktionsweise anhand von Coherence wird erklärt Die Ideen bezüglich Distributed Cache werden vorgestellt: Ikesa cache Verwendung Grid anstatt AQ Die Servicewolke Demo Coherence Anwendungsfälle - die Zukunft
Was kann man alles problemlos cachen? Statische oder semistatische Daten Daten deren Inhalt ausschließlich durch dezentrale Logik verändert wird
Das Projekt Coherence QuickWins Organisationseinheiten (OE) Einsparung von MIPS durch weniger häufiges Aufrufen der Transaktion ML744 Einsparung 66% der Aufrufe IKESA Einsparung von 99% der DB2-Queries PSF und Session-Handling Ersatz der JBF-Internen Messaging Verarbeitung BLZ und BIC Liste
Agenda Distributed Caches Oracle Coherence - Konzepte Oracle Coherence - Anwendung Demo Coherence Anwendungsfälle - heute Vorstellung der Thematik Distributed Cache Funktionsweise anhand von Coherence wird erklärt Die Ideen bezüglich Distributed Cache werden vorgestellt: Ikesa cache Verwendung Grid anstatt AQ Die Servicewolke Demo Coherence Anwendungsfälle - die Zukunft
Coherence Zukunftsplanung Ersatz von Oracle-AQ durch Coherence im Bereich Grid Bessere und flexiblere Ausnutzung der vorhandenen Rechnerressourcen
Coherence anstatt AQ – vorher: Master / Worker Pattern
Coherence anstatt AQ – nachher: Coherence manages Tasks
Heute: Portale mit Queues JPortal 1 JPortal 4 CustId: 1 - 200 CustId: 501 - 600 JPortal 2 JPortal 5 CustId: 201 - 400 CustId: 601 - 700 JPortal 3 JPortal n CustId: 401 - 500 CustId: 701 - n
Morgen: Portale in einer Grid-Wolke JPortal 1 JPortal 4 CustId: 1 - 200 CustId: 501 - 600 JPortal 5 CustId: 201 - 400 JPortal 2 CustId: 601 - 700 JPortal 3 JPortal n CustId: 401 - 500 CustId: 701 - n
Vorteile für das Grid Stark reduzierte Komplexität Anstatt vieler Queues nur noch eine Coherence Wolke Einfacher Portalumzug Das leerlaufen lassen und umziehen der Queues entfällt Einfacheres Monitoring Coherence „weiß“ wo sich die Tasks befinden Geringere Latenzzeit
Der nächste Schritt, weg vom Portal hin zu Wolke JPortal 1 JPortal 4 CustId: 1 - 200 CustId: 501 - 600 JPortal 5 CustId: 201 - 400 JPortal 2 CustId: 601 - 700 JPortal 3 JPortal n CustId: 401 - 500 CustId: 701 - n
Der nächste Schritt, weg vom Portal hin zu Wolke Software Stack 3.3 JPortal 1 JPortal 4 Software Stack 3.2 Software Stack 3.3 Software Stack 3.3 JPortal 2 JPortal 5 JPortal 3 Software Stack 4.0 JPortal n Software Stack 4.0
Neue Möglichkeiten – neue Flexibilität Software Stack 3.3 Software Stack 3.2 Software Stack 3.3 Software Stack 3.3 Software Stack 4.0 Software Stack 4.0
Vorteile für den Betrieb Wegfall des Redirector User benötigt keine Session mehr auf den Servern Wegfall von Apache und MOD_JK Die Wolke konfiguriert sich selbst Requests werden versioniert in die Wolke gestellt und von einem beliebigen Server mit dem richtigen Softwarestack beantwortet Wegfall des Portalstruktur Ein Server kann irgendwo im RZ stehen und muss nicht zwingend einem Schrank zugeordnet werden
Fragen? – Diskussion? Matthias Schorer Harald Wiedemer Anwendungsentwicklung Matthias.Schorer@fiducia.de 089/99433358 Harald Wiedemer Oracle Deutschland GmbH Harald.Wiedemer@oracle.com 0711/72840148
Ihr IT-Partner Vielen Dank