Theoretische Grundlagen

From
Revision as of 10:55, 22 March 2005 by 213.69.217.130 (talk)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

SEITE IST NOCH IN DER ENTSTEHUNG!!!


Um zu verstehen, warum die durch Jini(TM) festgelegten und anfänglich oft als reichlich kompliziert empfundenen Konstrukte in dieser Architektur enthalten sein müssen, sollte man zunächst, die unter ... dargelegten Designziele von Jini(TM) den tatsächlichen Gegebenheiten eines verteilten Systems gegenüber stellen. Um daran anschließend besser verstehen zu können wie besagte Konstrukte in der Java Intelligent Network Infrastructure ineinander greifen, ist ein gewisses Verständnis sogenannter dienstorientierter Architekturen, engl. service-oriented architectures (SOAs), vorteilhaft. Zwar ist es im Rahmen einer Studienarbeit gänzlich unmöglich auch nur einen der genannten Themenkomplexe erschöpfend zu behandeln, einige wichtige Punkte aus diesen sollen aber dennoch dargelegt werden, soweit sie für den weiteren Kontext von Bedeutung sind.


Verteilte Systeme

Unter diesem Punkt sollen kurz die wichtigsten Eigenschaften verteilter Systeme vorgestellt werden. Dies geschieht wie oben erwähnt nicht mit dem Anspruch auf erschöpfende Behandlung des Themas. Hierfür sei auf die einschlägige Literatur verwiesen, u. a. [..., Tanenbaum1], [..., Tanenbaum2], [..., Chow] und [..., Andrews].

Charakterisierung

Für den Begriff des verteilten Systems existieren mehrere Definitionsansätze. Einige betonen mehr die physische Sicht auf Verteilung, während andere mehr eine logische bzw. anwendungsorientierte Sichtweise auf ein verteiltes System in den Vordergrund stellen. Die an den physischen Aspekte der Verteilung orientierte Sichtweise betrifft die Aufteilung eines Systems auf mehrere, voneinander unabhängige Computer. Die logischen bzw. anwendungsorientiere Perspektive beschreibt dagegen die Aufteilung von Zustand und Verhalten des Gesamtsystems auf mehrere autonome Verarbeitungsknoten, wobei egal ist, auf welchen Rechnern diese Knoten ablaufen. Im Rahmen der nachfolgenden Abhandlungen soll für ein verteiltes System die folgende, auf Puder&Römer [..., Puder&Römer, S. ...] aufbauende Erklärung für ein verteiltes System gelten.

Ein verteiltes System ist ein Informationsverarbeitendes System, das eine Vielzahl autonomer Verarbeitungsknoten enthält, die auf unterschiedlichen Rechnern ablaufen können und die über ein Kommunikationsnetzwerk miteinander kooperieren, um ein angestrebtes Ziel zu erreichen.

Als Verarbeitungsknoten kann im Jini(TM)-Kontext eine Java(TM) Virtual Machine (JVM) angenommen werden. Das Kommunikationsnetzwerk sei die Vereinigung aller aktiven und passiven Hard- und Softwarebausteine, die notwendig sind, damit Daten zwischen den verschiedenen, an einem verteilten System beteiligten Verarbeitungsknoten ausgetauscht werden können. Griffel identifiziert in [..., Griffel, S. 143] für ein verteiltes System weiterhin folgende Eigenschaften:

- Der Austausch von Daten zwischen den Verarbeitungsknoten eines verteilten Systems erfolgt ausschließlich über den Austausch von Nachrichten via Kommunikationsnetzwerk. - Ein verteiltes System besitzt zu keinem Zeitpunkt einen feststellbaren globalen Zustand, da der Datenaustausch zwischen den Verarbeitungsknoten des Systems mittels Nachrichten erfolgt und deren Übertragung Latenz- und Vermittlungszeiten in Anspruch nimmt. Trifft eine Nachricht bei ihrem Empfänger ein, können somit die in ihr enthaltenen Informationen schon veraltet sein. - Ein verteiltes System erbringt seine Gesamtfunktionalität durch die arbeitsteilige zielgerichtete Kooperation der in den einzelnen Verarbeitungsknoten angesiedelten Softwarekomponenten.

Auf den ersten Blick führen diese Eigenschaften in Bezug auf die von Jini(TM) formulierten Ziele zu einem Dilemma. Auf der einen Seite sollen auf Basis von Jini(TM) verteilte Systeme erstellt werden, die genauso stabil und zuverlässig laufen und die in ihrem Antwortverhalten genauso performant sind, wie man es von traditionellen zentralisierten Systemen gewohnt ist. Auf der anderen Seite kann man in einem verteilten System zu keinem Zeitpunkt den aktuellen globalen Zustand ermitteln. Diese Eigenschaft impliziert u. a., auch, dass man zu keinem Zeitpunkt feststellen kann, welche Verarbeitungsknoten und damit welche Komponenten und Ressourcen aktuell am System beteiligt sind. Wie soll man unter diesen Voraussetzungen ein stabiles und funktionierendes System erstellen, welches seine Gesamtfunktionalität durch die zielgerichtete arbeitsteilige Kooperation seiner, über die verschiedenen Verarbeitungsknoten verteilten Komponenten erbringt? Und wie will man für ein verteiltes System eine Performanz im Antwortverhalten sicher stellen, die annähernd äquivalent zu der eines traditionellen zentralisierten Systems ist, wenn die Kommunikation zwischen Komponenten, die in unterschiedlichen Verarbeitungsknoten angesiedelt sind, von vornherein mit nicht unerheblichen Latenzzeiten belegt ist? Auf all diese Fragen muss Jini(TM) eine Antwort liefern, sollen die gesteckten Ziele erreicht werden.