Client/Server

Werbung
Client/Server-Systeme
Prof. Dr.-Ing. Wilhelm Spruth
WS 2003/04
Teil 9
Transaktionsverarbeitung
cs 0800 ww6
sch 02-97
Transaktionsverarbeitungssystem
Transaction Processing System, TP-System
besteht aus:
•
•
•
•
•
Anwendungen
Datenbank(en)
Netzwerksteuerung
Entwicklungswerkzeuge
Transaktionsmonitor (TP Monitor)
Ein Transaktionsmonitor ist eine Softwarekomponente, welche den
atomaren Charakter vieler gleichzeitig ablaufender Transaktionen
sicherstellt. Der TP Monitor stellt die Kernfunktionen für ein
Transaktionsverarbeitungssysten bereit. Hierzu gehören:
•
•
•
•
•
•
Message Queuing
Lock Verwaltung
Log Verwaltung
2-Phase Commit Synchronisation
Rollback Funktion
Laststeuerung (Load Balancing)
cs 0823 ww6
rahm 02-99
Stored Procedures vs. TP Monitor
2 Phase Commit
Es können mehrere TP Monitore involviert sein
Heterogene Datenbanken
Leistung
De facto alle TP Benchmarks werden mit TP Monitoren
gefahren
cs 0857 ww
wgs 03-99
Beispiel für Transaktionsmonitore
BEA Tuxedo (AT&T→
→Novell → BEA)
DEC ACMS für VMS, Ultrix
IBM CICS
IBM IMS-DB/DC
IBM TPF
SAP R/3
Siemens UTM
Tandem NonStop Kernel (NSK) / Guardian /Pathway
Microsoft Transaction Server (MTS)
Corba OTS (Object Transaction Service)
EJB JTS (Java Transaction Service)
Eigenschaften eines
Transaktionsmonitors:
hohe Verfügbarkeit
kurze Antwortzeit (< 0.3 Sek. erwünscht)
geeignet für hohes Verkehrsaufkommen
niedrige Kosten pro Transaktion
Integrität beim Zugriff auf gemeinsam genutzte
Ressourcen
cs 0824 ww6
wgs 02-99
Einordnung des TP Monitors
Klienten
TP
Anwendungen
Daten
haltung
Middleware, hier TP Monitor
Betriebssystem, einschließlichTransport Dienste, z.B. TCP/IP
Es wäre denkbar, die TP Monitor Funktion in das Betriebssystem
einzubauen. Dies ist z.B. beim Compaq/Tandem „Guardian“ und
beim IBM „TPF“ Betriebssystem der Fall. Ein normales
Betriebssystem ist jedoch strukturiert, vor allem Stapelverarbeitung
und lang dauernde interaktive Time-Sharing Sitzungen zu
unterstützen. Deshalb setzt im Regelfall der TP Monitor als ein
einziger Anwendungsprozess auf dem Betriebssystem auf.
Hierbei vermeidet der TP Monitor nach Möglichkeit die Nutzung der
Betriebssystem Funktionen. Um Leistung und Durchsatz zu
optimieren hat er z.B. eigene Message Handling und Queuing
Einrichtungen und evtl. (z.B. bei CICS) sein eigenes File System.
cs 0829 ww6
wgs 02-99
Stored Procedures vs. TP Monitor
2 Phase Commit
Es können mehrere TP Monitore involviert sein
Heterogene Datenbanken
Leistung
De facto alle TP Benchmarks werden mit TP Monitoren
gefahren
cs 0857 ww
wgs 03-99
cs 0826a ww6
wgs 09-00
Eingabe Queue
enqueue
dequeue
Queue
Manager
Transaktions
Verarbeitung
Klient
dequeue
enqueue
Ausgabe Queue
Server
Queue Manager
Jede einzelne Transaktion wird in 3 Subtransaktionen aufgelöst, die
alle eigene ACID Eigenschaften haben.
Subtransaktion 1 nimmt die Eingabenachricht entgegen, stellt sie in
die Eingabe Queue, und commits.
Subtransaktion 2 dequeues die Nachricht, verarbeitet sie, stellt das
Ergebnis in die Ausgabequeue, löscht den Eintrag in der
Eingabequeue und commits.
Subtransaktion 3 übernimmt das Ergebnis von der Ausgabequeue,
übergibt das Ergebnis an den Klienten, löscht den Eintrag in der
Ausgabequeue und commits.
Ein separater Queue Manager ist optimiert für diese Aufgabe.
es 1159
wgs 08-00
Komponenten eines TP Monitors
Endbenutzer kommunizieren mit dem TP Monitor mit Hilfe von
Nachrichten.
Presentation Services bilden die Datenausgabe auf die GUI des
Benutzers ab.
Eingabe-Nachrichten werden mit einer trid (Transaktions ID)
versehen und in einer Warteschlange gepuffert. Aus
Zuverlässigkeitsgründen muß diese einen Systemabsturz
überleben. Eine ähnliche Warteschlange existiert für die Ausgabe
von Nachrichten.
Der Scheduler verteilt eingehende Bearbeitungsanforderungen auf
die einzelnen Server Prozesse.
Ein TP Monitor bezeichnet seine Server Prozesse als Ressource
Manager. Es existiert ein Ressource Manager pro (aktive)
Anwendung. Ressource Manager sind multithreaded; ein
spezifischer Ressource Manager für eine bestimmte Anwendung ist
in der Lage, mehrere Transaktionen gleichzeitig zu verarbeiten.
Der Lock Manager blockiert einen Teil einer Datenbanktabelle. In
Zusammenarbeit mit dem Datenbanksystem stellt er die „Isolation“
der ACID Eigenschaft sicher.
Der LOG Manager hält alle Änderungen gegen die Datenbank fest.
Mit Hilfe der Log Datenbank kann der Recovery Manager im
Fehlerfall den ursprünglichen Zustand der Datenbank
wiederherstellen (Atomizität der ACID Eigenschaft).
In dem Repository verwaltet der TP Monitor Benutzerdaten und
-rechte, Screens, Datenbanktabellen, Anwendungen sowie
zurückliegende Versionen von Anwendungen und Prozeduren.
cs 0827 ww6
wgs 02-99
cs 0922 ww6
wgs 0923 07-00
Backward Recovery
Der Transaktionsmonitor stellt sicher, daß im Fehlerfall der
teilweise Ablauf einer Transaktion rückgängig gemacht
wird, und daß alle abgeänderten Felder einer Datenbank
wieder in ihren ursprünglichen Zustand zurückbersetzt
werden.
cs1026 ww6
wgs 02-97
Plattenspeicher
Zwischenpuffer
5
Löschen
1
1
4
3
2
ack
2
commit
abzuändernde
Datensätze
zu schreibende Daten
Hauptspeicher
Backward Recovery
Andere Bezeichnungen: backout, roll back abort
1. abzuändernde Information in Puffer zwischenspeichern
2. Datensätze überschreiben
3. Commit Status festhalten. Damit ist es geschehen
4. erfolgreiches Commit dem Benutzer mitteilen
5. Zwischenpuffer löschen
css1010 ww6
wgs 02-97
Flat Transaction
start_transaction {
beginwork ( );
.....
.....
.....
.....
.....
.....
.....
.....
if no_error commit ( ) else rollback ( ) ;
}
cs 0822 ww6
rahm 02-99
Transaction
#1
Begin
Trans.
Transaction
#2
Begin
Trans.
Commit
Transaction
#3
Begin
Trans.
Commit
Commit
Flat Transaction
Alle Arbeit innerhalb einer Flat Transaction findet auf der gleichen
Ebene statt. Die Transaktion überlebt entweder mit allen
Teilfunktionen (commit) oder es erfolgt ein rollback einschließlich
aller Teilfunktion (abort).
cs 0855 ww
wgs 12-99
Logical Unit of Work
LUW
Aktion 1
Aktion 2
Aktion 3
Aktion 4
Aktion 5
Aktion 6
Start Transaktion
Ende Transaktion
LUW 4
LUW 3
LUW 2
LUW 1
Aktionen sind Bausteine, aus denen der (zeitliche) Arbeitsablauf eines
Resource Managers (Server) besteht.
Nicht geschützte (unprotected) Aktionen haben keine ACID
Eigenschaften.
Geschützte (protected) Aktionen haben ACID Eigenschaften und
werden als „Logical Unit of Work“ (LUW) bezeichnet.
Teilweise abgeschlossene LUW´s können rückgängig gemacht
werden.
Reale (real) Aktionen beeinflussen die physikalische Umwelt auf eine
Art, die nur schwer oder garnicht rückgängig zu machen ist (roll
back). Beispiele: Ein Loch bohren, Geldausgabe am Automaten,
vertrauliche Daten an den falschen Empfänger senden. ACID
Eigenschaften für reale Aktionen mögen schwierig oder unmöglich zu
implementieren sein.
cs 0842 ww6
wgs 05-97
„Logical Units of Work „ (LUW) und Sync Punkte
Andere Bezeichnungen: Aktionen und Save Points
Sync Punkte bewirken, daß ROLLBACK WORK nur bis zu dem
angegebenen sync Punkt zurücksetzt.
cs 0903 ww
wgs 02-97
LUW Backout
cs 0905 ww
wgs 02-97
1. Darlehnskonto abrechnen, Saldo um Tilgungsrate verändern
2. Tilgung und Zinsen im laufenden Konto (Kontokorrent) auf der
Sollseite buchen
3. Globales Limit überprüfen
4. Bilanzpositionen (Konten)
5. G+V Positionen (Gewinn- und Verlust Konten)
6. Zinsabgrenzung monatlich für jährliche Zinszahlung
7. Bankmeldewesen (ein Kunde nimmt je 90 000.- DM bei 10 Banken
auf, läuft am Stichtag)
6
7
1
2
3
4
5
6
7
1
2
3
Zeit
Abarbeitung in Reihenfolge
evt. keine Sync Points erforderlich
cs 0898 ww6
wgs 12-99
Buchungsvorgänge, monatliche Kreditabrechnung
1. Darlehnskonto abrechnen, Saldo um Tilgungsrate verändern
2. Tilgung und Zinsen im laufenden Konto (Kontokorrent) auf der
Sollseite buchen
3. Globales Limit überprüfen
4. Bilanzpositionen (Konten)
5. G+V Positionen (Gewinn- und Verlust Konten)
6. Zinsabgrenzung monatlich für jährliche Zinszahlung
7. Bankmeldewesen (ein Kunde nimmt je 90 000.- DM bei 10 Banken
auf, läuft am Stichtag)
Buchungsvorgang
1
2
3
4
5
6
7
Kunde Nr
1
2
3
.
Beispiel:
Schritte 1 - 3 als 1 Transaktion
Schritte 4 - 7 :
Zwischenergebnisse
persistent speichern
.
99999
cs 0879 ww6
wgs 12-99
Main Transaction
von
Konto 1
abbuchen
auf
Konto 2
zubuchen
Zeit
update
history
start
transaction
2 phase
commit
TP
Monitor
Oracle
Database
TP
Monitor
DB2
Database
TP
Monitor
Sybase
Database
Distributed Flat Transaction
cs 0853 ww6
wgs 12-99
Zwei-Phasen-Festübergabe
Two-phase Commit
Erforderlich bei der gleichzeitigen Änderung mehrerer
Datenbanken, z.B. Banküberweisung von Bank A nach Bank B
Elektronisches Clearinghaus sendet Nachrichten an beide Banken
Problem, wenn entweder Abbuchung oder Gutschrift nicht erfolgt
Daher atomare Transaktionen erforderlich
Konsistenz wird erreicht durch einen „Master“ (CommitKoordinator), der die Arbeit von „Slaves“ überwacht
Clearinghaus übernimmt Rolle des Master, die beiden Banken sind
Slaves. Two-phase-Commit-Protokoll stellt sicher, daß Abbuchung
und Gutschrift entweder beide erfolgen, oder beide nicht erfolgen
Slave #1
Slave #2
Datenbank A
Abbuchung
Konto Nr. xxx
Datenbank B
Gutschrift
Konto Nr. yyy
Commit Coordinator
Master
css1011 ww6
wgs 02-97
Master
Slave
Begin atomic action
Send Request 1
.............
Send Request n
Send „ Prepare to commit“
if action can be performed
then begin
Lock data
Store initial state on disk
Store requests on disk
Send „OK“
end
else
Send „Failure“
if all slaves said „OK“
then send „Commit“
else send „Rollback“
Wait for acknowledgements
if master said commt
then begin
Do work
Unlock data
end
Send „Acknowledgement“
2-Phase Commit Protokoll
cs 0938 ww6
nach Tanenbaum
wgs 12-01
CICS
Customer Information Control System
IBM Transaction Processing Facility
TPF
Eigenständiges Betriebssystem, erlaubt nur eine einzige
Anwendung: Transaktionsverarbeitung
Hervorgegangen aus dem SABER (SABRE) Flugplatzreservierungssystem (American Airlines, 1959). Später umbenannt in
SABRE → ACP → TPF
Keine Einrichtungen für Softwareentwicklung (erfolgt auf einem
anderen Rechner)
Run-to-Completion (non-preemptive) Scheduler/Dispatcher
Betriebssystem Aufruf erfordert ca. 500 Maschinenbefehle
E/A Operation erfordert etwa 500 - 800 Maschinenbefehle
> 10000 Transaktionen/s
Anwendungen:
Flugplatzreservierung (Amadeus)
Geldausgabeautomaten
Kreditkartenverifizierung
cs 0819 ww6
wgs 02-99
CICS
Customer Information Control System
Der am weitesten verbreitete, IBM proprietäre
Transaktionsmonitor.
Verfügbar unter den S/390-Betriebssystemen OS/390 und
VSE, sowie in modifizierter Form (als Encina Erweiterung)
unter OS/400, OS/2, Windows, AIX, HPUX, Sinix, Solaris,
Digital Unix sowie Linux.
Unter OS/390 (und VSE) laufen alle Anwendungen und
Dienste im Problemstatus, ungeschützt voneinander
innerhalb eines einzigen virtuellen Adressenraums.
Anwendungen und Ressource Manager laufen als Threads
innerhalb dieses Adressenraums.
Spitzenposition bezüglich Durchsatz, Zuverlässigkeit und
Verfügbarkeit.
Es wird angenommen, daß bei 490 der weltweit 500 größten
Unternehmen CICS eingesetzt wird.
Eine detaillierte CICS Beschreibung ist zu finden unter
http://www-ti.informatik.unituebingen.de/os390/foils/content.htm
im Unterverzeichnis
Transaction Processing / CICS / Einführung
cs 0832 ww6
wgs 02-97
In 1999 war die Anzahl der weltweit
ausgeführten
CICS Transaktionen etwa so groß
wie die Anzahl der Hits auf Seiten des WorldWide Web.
In 1999 setzen weltweit etwa 15 000 Unternehmen CICS ein.
Von den 2000 größten Unternehmen setzen > 90% CICS
ein.
Sie generierten etwa 20 Milliarden Transaktionen pro Tag.
Es existieren etwa 30 Mill. CICS Terminals weltweit.
Zum Vergleich existierten weltweit 379 Mill. Internet
Anschlüsse im März 2001, die meisten davon in Privathaushalten.
Durchschnittliche CICS Terminal Benutzungsdauer
4 - 6 Stunden / Tag.
Durchschnittliche Internet Benutzungsdauer
etwa 10 Stunden / Monat.
http://www.hursley.ibm.com/infopack/A33578.pdf
J. Gray: How High is High Performance Transaction Processing?
http://research.Microsoft.com/~Gray/Talks/
R. Fox: „Net Population Newest Numbers“. Comm. ACM, Vol. 44, No.7, July 2001, P.9 .
cs 0888 ww 6
wgs 08-00
Investition in Anwendungen
16 000 Unternehmen weltweit (darunter 490 of the Fortune 500
Companies) setzen CICS ein. Es sind 30 Millionen CICS Terminals
installiert. Hiermit werden 20 Milliarden Transaktionen/Tag
ausgeführt. Das ist mehr, als das World Wide Web im gleichen
Zeitraum an Hits erzeugt.
Mit CICS Transaktionen werden täglich 64 Billionen (10 12) $
transferiert oder abgerechnet.
Eine Überschlagsrechnung mit den folgenden Annahmen:
• 20 000 S/390 Servers haben durchschnittlich 1 Mill. Zeilen aktiven
Anwendungscode (zwischen 200 000 und 50 Millionen pro
Server), kumulativ 20 Milliarden LOC.
• Produktivität von 2 000 LOC/Mannjahr, Investition von 10
Millionen Mannjahren.
• 100 000 $/Mannjahr, Investition von 1 Billion $ (1012) in S/390
Anwendungssoftware
Zum Vergleich, das USA 1999 GNP war 9 Billion $.
http://www-3.ibm.com/developer/solutionsevent/pdfs/spector_lunchtime_keynote.pdf
es 0228 ww6
wgs 06-01
Beispiel für ein CICS-Statement
innerhalb eines C++-Programms:
EXEC CICS SEND MAP("label04") MAPSET("s04set") ERASE;
Neue CICS Anwendungen werden häufig in C oder Java
geschrieben. Daneben hat Cobol nach wie vor eine überragende
Bedeutung.
Beispiel für ein CICS-Statement
innerhalb eines COBOL-Programms
EXEC CICS
WRITEQ TS QUEUE(‘ACCTLOG’) FROM(ACCTDTLO)
LENGTH(DTL-LNG)
END EXEC
Ein existierender Datensatz „ACCTDTLO“ wird in eine temporäre
Warteschlange ACCTLOG geschrieben, die als Log zur
Datensicherung dient
Die existierende Menge an Cobol Programmen besteht aus etwa
180 Milliarden Zeilen Cobol Code, mit einer jährlichen Zuwachsrate
von 5 Milliarden Lines of Code (LOC). Etwa 35 % von allen neuen
Business Anwendungen LOC werden derzeitig in Cobol
geschrieben. (Für weitere 35% wird Visual Basic benutzt, der Rest
verteilt sich auf C++, Java, PL/1, RPG und andere).
css1013 ww6
wgs 02-97
main()
{
EXEC SQL DECLARE C1 CURSOR FOR
SELECT VNAME,NNAME FROM ZEYPRAK.TABPRAK;
EXEC SQL OPEN C1;
EXEC SQL FETCH C1 INTO :vname, :nname;
memcpy(liste.listei.vnam1i,vname,20);
memcpy(liste.listei.nnam1i,nname,20);
EXEC SQL FETCH C1 INTO :vname, :nname;
memcpy(liste.listei.vnam2i,vname,20);
memcpy(liste.listei.nnam2i,nname,20);
EXEC SQL FETCH C1 INTO :vname, :nname;
memcpy(liste.listei.vnam3i,vname,20);
memcpy(liste.listei.nnam3i,nname,20);
EXEC SQL FETCH C1 INTO :vname, :nname;
memcpy(liste.listei.vnam4i,vname,20);
memcpy(liste.listei.nnam4i,nname,20);
EXEC SQL CLOSE C1;
EXEC CICS SEND MAP("liste") MAPSET("prakset") ERASE;
}
Beispiel für Embedded SQL
cs 2820 ww6
wgs 02-01
Quellprogramm
SQL Precompiler
Programm mit native DB2 API
CICS Precompiler
Programm mit native CICS API
C Compiler
Object Programm
Link
Ausführbares Maschinenprogramm
Erstellen einer CICS - DB2 Anwendung
cs 0931 ww
wgs 06-01
Cobol
COBOL is for morons. (Edsger Dijkstra)
The use of COBOL cripples the mind; its teaching should,
therefore, be regarded as a criminal offence. (Edsger Dijkstra)
With respect to COBOL you can really do only one of two things:
fight the disease or pretend that it does not exist. (Edsger Dijkstra)
Cobol has almost no fervent enthusiasts. As a programming tool, it
has roughly the sex appeal of a wrench. (Charles Petzold)
COBOL: (Synonymous with evil.) A weak, verbose, and flabby
language used by card wallopers to do boring mindless things on
dinosaur mainframes.
-----------------------------------------------------------------------------------------------http://www.cs.virginia.edu/~evans/cs655/readings/ewd498.html
http://www.sysprog.net/quotcob.html
es0905 ww6
wgs 10.02
The Significance of COBOL
75% of all business data is processed in COBOL. - Gartner Group
There are between 180 billion and 200 billion lines of COBOL code
in use worldwide. - Gartner Group
This represents over 60 percent of the world’s computer code.
Existing legacy systems are predominantly written in COBOL.
15% of all new applications (5 billion lines) through 2005 will be in
COBOL. - Gartner Group
CICS transaction volume (such as COBOL-based ATM transactions)
grew from 20 billion per day in 1998 to 30 billion per day in 2002. The Cobol Report
Replacement costs for COBOL systems, estimated at $25 per line,
are in the hundreds of billions of dollars. - Tactical Strategy Group
"Integration with Legacies" is the number one concern of IT
managers in 2003. - Gartner Group
There are over 90,000 COBOL programmers in North America in
2002. Over the next four years there will be a 13% decrease in their
number due to retirement and death. - Gartner Group
The most highly paid programmers in the next ten years are going
to be COBOL programmers who know the Internet. - GIGA Group
http://www.cobolwebler.com/cobolfacts.htm
Gartner Inc., From the Dustbin, Cobol Rises, 2001
Reprinted in Microfocus Outlook, COBOL Technology and Contemporary Business Systems, May
2002
http://www.eweek.com/article2/0,3959,25993,00.asp
http://www.info.uni-karlsruhe.de/lehre/2002WS/hps/Cobol-X1.pdf
cs 0944 ww6
wgs 03-03
Informatik Spektrum
Band 26, Heft 2, April 2003
cs 1029 ww6
wgs 05 - 03
Herunterladen