2.3 Infrastruktur durch Transaction Processing Monitore (“TP-Heavy”) Workshop • Vertiefung der X/Open DTP Protokolle • Programmierparadigmen • Verteilte Transaktionsverarbeitung (i. Vgl. zu Oracle) • Optimierungen für 2PC • Funktionalität und Aufbau des TP-Monitors TUXEDO • Komponenten • Systemarchitektur • Einführung in die Übungsaufgabe Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 2: Workshop TP-Heavy – 1 Verteilte Transaktionsverarbeitung mit X/Open DTP Laufzeitumgebung des TP Monitor • Verteilte Überweisung Client Transfer ATM TP Monitor Service Debit Credit Bern DB DB Objektverwaltung höherer Ordnung (OHO) – SS 2002 Zürich DB DB Kapitel 2: Workshop TP-Heavy – 2 X/Open’s Programmierparadigmen • Service-Orientierung • Bereitstellung von Funktionalität über C/COBOL-Funktionen • Bekanntgabe dieser Funktionen an den TP Mon. (Advertising) • sog. Request-/Response-Programmierung • Konversations-Orientierung • Eröffnung eines Kanals • Senden von Daten und Ergebnissen über diesen Kanal • Typed Buffers • Strukturen zum maschinenunabh. Datenaustausch Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 2: Workshop TP-Heavy – 3 Programmier-Unterstützung durch X/Open • Kommunikations-Puffer • tpalloc - Speicher anfordern • tpfree - Speicher freigeben • tprealloc - neue Speichergrösse • Erstellung von Services • tpservice - Template für einen Service • tpreturn - Verlassen einer Service-Routine Objektverwaltung höherer Ordnung (OHO) – SS 2002 • Service-Aufruf • tpacall - asynchroner Aufruf • tpcall - synchroner Aufruf • tpcancel - Antwort verwerfen • tpgetrply - Antwort zu asynchronem Aufruf holen • Konversations-Routinen • tpconnect - Konversation eröffnen • tpdiscon - Konv. beenden • tprecv - Nachricht empfangen • tpsend - Nachricht senden Kapitel 2: Workshop TP-Heavy – 4 Programmier- vs. Systemsicht • Programmiersicht: Code, den der Applikationsentwickler schreiben muss • Aufgaben: • DB-Zugriff implementieren • Transaktionsgrenzen setzen • Aufruf anderer TP-MonitorServices durchführen • Kommunikationspufferverwaltung (!) Objektverwaltung höherer Ordnung (OHO) – SS 2002 • Systemsicht: Boilerplate Code, der vom System automatisch ausgeführt wird und in TP-Monitor-Bibliotheken implementiert ist • Aufgaben • Verwaltung des Transaktionsbaumes gegenüber DBMSs und weiteren TP-MonitorInstanzen • Zwei-Phasen-Commit • Lastbalanzierung • Datenabhängiges Routing • ... Kapitel 2: Workshop TP-Heavy – 5 Programmierer-Sicht Service-Orientierung Aufrufe in den Applikationsprogrammen Client tpcall(.) tx_begin() Transfer ATM tx_commit() tpcall(char*) Debit tpcall(char*) tpreturn(.) EXEC SQL AT DB_NAME Bern DBMS Objektverwaltung höherer Ordnung (OHO) – SS 2002 Credit tpreturn(.) EXEC SQL AT DB_NAME Zürich DBMS Kapitel 2: Workshop TP-Heavy – 6 Systemsicht: Transaktionsbaum 1 Transfer tpcall TM ax_add_branch ax_add_branch CRM XID1 TM Debit ax_start XID2 CRM TM Bern DBMS Objektverwaltung höherer Ordnung (OHO) – SS 2002 ATM ax_start CRM Zürich Credit DBMS Kapitel 2: Workshop TP-Heavy – 7 Systemsicht: Transaktionsbaum 2 Transfer tx_commit TM ATM xa_prepare xa_prepare CRM xa_prepare(XID1) TM Debit ax_prep. xa_prepare xa_prepare(XID2) CRM TM Bern DBMS Objektverwaltung höherer Ordnung (OHO) – SS 2002 Credit ax_prep. xa_prepare CRM Zürich DBMS Kapitel 2: Workshop TP-Heavy – 8 Systemsicht: Transaktionsbaum 3 Transfer TPEABORT TM ATM XA_OK XA_RB CRM XA_OK TM Debit TM_OK XA_OK XA_RB CRM TM Bern DBMS Objektverwaltung höherer Ordnung (OHO) – SS 2002 Credit TM_RB CRM XA_RBINTEGRITY Zürich DBMS Kapitel 2: Workshop TP-Heavy – 9 Optimierungen im 2PC • Zielsetzungen: • Verminderung der Anzahl benötigter Nachrichten • Verringerung der I/O auf dem Log • Angewandte Techniken: • presumed abort: kein Log-Eintrag - TA-Branch wurde aborted • group commit: akkumuliertes Schreiben von Log-Einträgen (Log-Dämon wird alle 50msec aktiviert, TA solange verzögert) • transfer-of-commit: prepare, und mit neuem TA-Branch wird dortiger TM 2PC-Koordinator • lazy commit: asynch. Commit-Logging - keine Durability • last-resource-manager-option: bei entarteten TA-Bäumen transfer-of-commit anwenden, so dass letzter DB als 2PCKoordinator Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 2: Workshop TP-Heavy – 10 TP Monitor TUXEDO • Hersteller: Bea Systems http://www.beasys.com • System-Komponenten: • TUXEDO System/T • Administrationsschnittstelle • Applikationsentwicklung • Implementierung von TM, XA, XA+, XATMI • TUXEDO System/D: SQL-DBMS (Resource Manager) zu System/T • TUXEDO Workstation: Client-Anbindung von entfernten Rechnern • TUXEDO /Q: Transaktionelle Message-Queues • TUXEDO /TxRPC: Implementierung von X/Open TxRPC • TUXEDO /Domain: Interoperabilität mit anderen TUXEDO Instanzen oder anderen TP Monitoren über OSI-TP Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 2: Workshop TP-Heavy – 11 TUXEDO: System-Architektur TUXEDO Kernel: BBL Client call X A T M I queue push/get CREDIT put queue put Transaction Manager Objektverwaltung höherer Ordnung (OHO) – SS 2002 push/get DEBIT LOG Kapitel 2: Workshop TP-Heavy – 12 TUXEDO: Mehrrechner-Architektur TUXEDO Kernel: BBL X A T M I queue queue TUXEDO Kernel: BBL CREDIT DEBIT X A T M I queue queue CREDIT DEBIT remote call put remote call stub BRIDGE Message Transmission Objektverwaltung höherer Ordnung (OHO) – SS 2002 BRIDGE Kapitel 2: Workshop TP-Heavy – 13 TUXEDO: Load-Balancing • X A T M I Many Services - Single Queue: sobald Service fertig, neuen Auftrag aus der Queue CREDIT CREDIT Objektverwaltung höherer Ordnung (OHO) – SS 2002 • Many Services - Many Queues: Service-“Farm“ ggf. auf mehreren Rechnern, Zuteilung nach Workload-Heuristik X A T M I CREDIT CREDIT Kapitel 2: Workshop TP-Heavy – 14 Die TP-Monitor BRIDGE • Herstellerspezifische Lösungen • meist als eigenständiger Betriebssystem-Prozess • Aufgabe an der Daten-Quelle: • Entgegennahme von Aufträgen für entfernte Rechner • Entgegennahme von Daten für entfernte Rechner • ggf. Übersetzung der Daten in maschinenunabhängige Repräsentation (sog. Marshalling) • Aufgaben Daten-Senke: gleicher Ablauf in umgekehrter Reihenfolge • sowie: Positionierung des Auftrags in der richtigen Queue • Ergebnisse werden auf dem gleichen Weg zurückgesandt • Siehe auch Object Request Broker-Konzept im CORBA-Teil Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 2: Workshop TP-Heavy – 15 Übungsaufgabe • Zielsetzung: Programmierung einer verteilten Überweisungstransaktion mit TUXEDO • Schritte: • Hallo-Welt-Service mit TUXEDO • Verteilte Verarbeitung einer Überweisung • Sicherstellung der ACID-Eigenschaften • Lerneffekte • Anwendung der TX- und ATMI-Standards sowie von FML-Buffers • Arbeit mit komplexem System: OS, RDBMS, TP Mon Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 2: Workshop TP-Heavy – 16 Zielsystem Client Client Transfer Transfer Deposit Withdraw Bern STUD5 Objektverwaltung höherer Ordnung (OHO) – SS 2002 Deposit Withdraw Zürich STUD2 Kapitel 2: Workshop TP-Heavy – 17 TUXEDO FML-Buffers • TUXEDO-spezifische Erweiterung der X/Open Typed Buffers • Datenstruktur zum Austausch zwischen Rechnern • tpcall(char* svc, char* idata…); • Vorteil: • Information durch Feldbezeichner-Wert-Paare (<fname>,<value>) z.B.: [(VORNAME,”Torsten”), (NACHNAME,”Grabs”)] • Effizienter Transfer von Puffern “beliebiger” Grösse • Inhaltsbasiertes Routing (abhängig vom Pufferinhalt) • Programmierschnittstelle: • tpalloc: Anfordern dynmischen Speichers unter TP Mon.Kontrolle • Finit: Initialisierung des Puffers • Fchgs: Einfügen/Aendern von Feldern im Puffer Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 2: Workshop TP-Heavy – 18 Zielsystem tx_begin() Client Transfer ATM tx_commit() tpcall(char*) tpcall(char*) Debit Credit EXEC SQL AT DB_NAME EXEC SQL AT DB_NAME Bern Oracle Objektverwaltung höherer Ordnung (OHO) – SS 2002 Zürich Oracle Kapitel 2: Workshop TP-Heavy – 19 Ausblick: Transaktionelle Message Queues für die Bankapplikation Client ATM Queue Queue Transfer Queue Bern Withdraw Zürich Credit DB DB Objektverwaltung höherer Ordnung (OHO) – SS 2002 Kapitel 2: Workshop TP-Heavy – 20