Grid Component Model: Vorstellung und Vergleich
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Grid Component Model: Vorstellung und Vergleich Stefan Kaiser TU Berlin Fachgebiet Softwaretechnik Berlin, Germany skaiser@mailbox.tu-berlin.de Abstract. Es gibt mehrere Komponentenmodelle die Bezug auf Grid- Architekturen nehmen. Allerdings gibt es bisher kein Standardmodell, das die Besonderheiten des Grid berücksichtigt, um die Entwicklung effizienter und performanter Systeme zu ermöglichen. In dieser Arbeit wird das Grid Component Model vorgestellt. Es werden die wichtigsten Eigenschaften erläutert und das Thema der Formalisierung aufgegriffen. Darüber hinaus wird ein Vergleich mit einem anderen Komponenten- modell beschrieben. Key words: Component Model, GCM, Fractal, CCA, Grid Computing, Formalization, Interoperability 1 Einführung Der Begriff Grid Computing existiert schon seit einigen Jahren und steht für die Berechnung rechenintensiver Aufgaben in einem verteilten System. Diese Art des Rechnens bekommt immer mehr Bedeutung in der heutigen Zeit, denn es werden für die verschiedensten Anwendungen immer mehr Ressourcen benötigt, die ein Einzelner nicht mehr alleine anbieten kann. Dafür bietet Grid Computing die Nutzung von Ressourcen verschiedener Parteien und somit eine erfolgreiche Durchführung der angedachten Aufgaben. Um diese Ressourcen nutzen zu können wird allerdings eine Infrastruktur benötigt, welche das Angebot und die Verteilung der Ressourcen verwaltet. Die Anwendungen, die diese Ressourcen nutzen, müssen ebenfalls fähig sein mit den besonderen Eigenschaften eines Grids umzugehen. Um einheitliche Software zu schreiben werden Programmiermodelle verwen- det. In diesen Modellen sind verschiedene Eigenschaften festgelegt an die sich der Entwickler halten muss. Für komponentenbasierte Systeme gibt es viele solche Modelle. Einige davon sind auch auf die Architektur eines Grid ausgerichtet oder es existieren Erweiterungen dafür, um auf die spezifischen Grid-Eigenschaften einzugehen. Allerdings existiert bisher kein Standardmodell, speziell für Grids, das zum einen für Grid-Anwendungen und zum anderen für Grid-Plattformen gleichzeitig verwendet werden kann. Für diese Zwecke wurde das Grid Compo- nent Model (GCM) entwickelt und soll in dieser Arbeit vorgestellt werden.
2 Grid Component Model: Vorstellung und Vergleich Der Aufbau dieser Arbeit gliedert sich in sieben Teile. In Kapitel 2 wird kurz in das Thema Grid Computing eingeführt, um einen Überblick über den allgemeinen Anwendungsbereich des GCM zu erhalten. Kapitel 3 beschreibt da- raufhin die grundlegenden Eigenschaften des Komponentenmodells sowie das Referenzmodell Fractal. Ausgewählte tiefergehende Themen der Komponenten- spezifikation werden in Kapitel 4 beschrieben. Das Thema der Formalisierung wird im darauffolgenden fünften Kapitel betrachtet. Kapitel 6 zieht schließlich einen Vergleich mit der Common Component Architecture, einem weiteren Kom- ponentenmodell, und beschreibt Möglichkeiten der Interoperabilität damit. Das letzte Kapitel fasst die Informationen noch einmal zusammen und gibt einen Ausblick auf weitere Arbeiten bezüglich des Themas Grid Component Model. 2 Grid Computing Der Vision des Grid Computing ist ein globales Netzwerk, welches auf der ganzen Welt verfügbar ist. Ein gern verwendeter Vergleich ist das amerikanische Strom- netz Power Grid. [7] Ressourcen wie Rechenleistung und Speicherplatz sollen über das Grid problemlos verfügbar gemacht werden. Als Grid Computing wird die Vernetzung von Computern zur gemeinsamen Nutzung von Rechenleistung und Speicherplatz bezeichnet. [4] Die Vernetzung erfolgt, wie beim World Wide Web, über das Internet. Der Unterschied liegt in der Nutzung. Das Web verwendet das Internet zum Informationsaustausch, Grid Computing verwendet es zum Teilen von Rechenleistung. Dadurch entsteht eine Art virtueller Supercomputer, der zur Lösung besonders rechenintensiver Probleme verwendet werden kann. [6] Die Einsatzbereiche für Grids sind vielfältig und reichen von wissenschaftli- chen Breichen der Biologie, Pharmaforschung oder Teilchenphysik über kom- merzielle Bereiche wie e-Commerce und Webservices bis zum Erstellen von auf- wendigen Animationen in der Filmbranche. [4, 6] Die primäre Aufgabe eines Grid ist dabei nicht der Austausch von Daten, sondern die gemeinsame Nutzung von Ressourcen. Dazu müssen Richtlinien für alle beteiligten Individuen oder Institutionen erstellt werden, in denen Rechte und Bedingungen für die Nutzung der Ressourcen festgelegt sind. Ein solcher Zusammenschluss von Beteiligten und Richtlinien wird Virtuelle Organisation genannt. [8] Virtuelle Organisationen sind ein zentraler Bestandteil des Grid Comput- ing. Verschiedene Institutionen oder Individuen können sich darin zusammen- schließen und treten somit nach außen als einheitliches Unternehmen auf. Da- durch können die verschiedenen Eigenschaften der Beteiligten flexibel kombiniert werden, um ein individuelles Problem zu lösen. [5] Zum besseren Verständnis des Begriffs Grid Computing hilft es die Unterschiede zu verwandten Themen wie Cluster Computing und Cloud Computing zu ver- deutlichen. Beim Cluster Computing sind die Ressourcen eine Menge von Com- putern, die über ein schnelles, meist lokales, Netzwerk verbunden sind. [9] Es
Grid Component Model: Vorstellung und Vergleich 3 besteht somit im Vergleich zum Grid eine höhere Kopplung. Im Cluster gibt es keine geografische Verteilung über weite Strecken wie im Grid. Typischer- weise herrscht in einem Cluster auch keine Heterogenität, was im Grid eher wahrscheinlich ist. [6] Cloud Computing bietet ebenso wie Grid Computing die Mitbenutzung von Ressourcen an. Die Ressourcen sind beim Cloud Computing in der Regel im Besitz einer einzigen Partei und an einem gemeinsamen Stan- dort. Während beim Grid Computing die Ressourcen geografisch verteilt und im Besitz mehrerer Parteien sind. Cloud Computing ist eher kommerziell aus- gerichtet. Cloud-Systeme vermieten Ressourcen an Benutzer je nach Bedarf und auf Anfrage. Auch genügen solche Systeme scheinbar nicht den Anforderungen an Komplexität und Sicherheit, welche die Forschungsgemeinschaft verlangt. [3] Fig. 1. Grid Architektur Die Architektur eines Grid kann mit einem Schichtenmodell beschrieben wer- den, wie in Fig. 1 dargestellt. Jede Ebene hat eine bestimmte Funktionalität. Die Netzwerk Ebene ist die untereste Schicht und zuständig für die Verbindung der Ressourcen. Die Ressourcen Ebene stellt die Ressourcen dar, wie Computer oder Speichersysteme. Die Middleware Ebene bietet den Zugriff auf die darun- terliegende Ressourcen Ebene und auf der Anwendungs Ebene befinden sich die Anwendungen der Benutzer, die auf das Grid zugreifen wollen. [4] 3 Grid Component Model Das Grid Component Model (GCM) wurde vom CoreGRID Network of Excel- lence vorgeschlagen und entworfen. Das CoreGRID Network of Excellence ist Teil
4 Grid Component Model: Vorstellung und Vergleich eines europäischen Forschungsnetzwerks für den Bereich umfangreicher verteilter Grid und Peer-to-Peer Technologien. [10] Die Definition eines Programmiermodells speziell für Grids wurde entworfen, da die Entwicklung nach bisherigen Methoden und Modellen nicht zufrieden- stellend war. Ein Grid besitzt charakteristische Herausforderungen, die beachtet werden müssen, um effiziente Grid-Anwendungen zu erstellen. Dazu zählen vor allem die Heterogenität und Dynamik in Bezug auf Programmierbarkeit, Inter- operabilität, Code-Wiederverwendung und Effizienz. Bisherige Komponenten- Modelle können die Anforderungen an Performance und Effizienz nicht erfüllen. Das neu entworfene Modell soll sowohl für Grid-Anwendungen als auch Grid- Plattformen angewendet werden. [1, 2] 3.1 Eigenschaften Ein GCM-konformes Framework muss die folgenden Eigenschaften aufweisen: – Es müssen zusammengesetzte Komponenten erstellt werden können, da eine Komponente aus mehreren anderen Komponenten bestehen darf. – Verschiedene Formen der Kommunikation wie many-to-one und one-to-many müssen möglich sein, aber auch asynchrone Methodenaufrufe, eventbasierte und streamingbasierte Kommunikation. – Unterstützung von autonomem Verhalten von Komponenten zu Selbstkon- figuration, -optimierung, und -schutz. – Funktionale und nicht-funktionale Anpassungsfähigkeit der Komponenten. Dynamisches Hinzufügen, Ändern und Entfernen von Komponenten und Komponentenbeziehungen. – Es sollen Deployment-Beschreibungen für Komponenten und Komponenten- Architekturen auf dem Grid unterstützt werden. – Unterstützung einer Verhaltens-Spezifikationen für Komponenten um das Verhalten und die Zusammensetzung von Komponenten zu verifizieren. 3.2 Modell-Architektur Die Architektur des GCM ist auf Interoperabilität ausgelegt und enthält eine Komponentenspezifikation als XML Dokument. Ebenso eine Run-Time API, die in verschiedenen Sprachen verfügbar ist, sowie ein XML Dokument in dem Pack- aging beschrieben wird. [2] Die Komponentenspezifikation enthält Definitionen für Schnittstellen, ein- fache und zusammengesetzte Komponenten. Zusätzlich, auf Grund der geforder- ten Interoperabilität, gibt es Hinweise für andere Spezifikationen wie Java In- terfaces, C++ .h, Corba IDL oder WSDL. Schließlich gibt es noch Spezifika- tionen von Grid-Aspekten wie Parallelität, Verteiltheit, Virtuelle Knoten, sowie Performance-Ansprüche und Quality of Service-Aspekte. Die Run-Time API dient zum Beeinflussen der Komponenten zur Laufzeit. Dazu gehört die Überwachung, Rekonfiguration, Optimierung und Verwaltung des Life Cycle. Die Implementierungen der API sollten aufgrund von Effizienz
Grid Component Model: Vorstellung und Vergleich 5 und Ausdrucksfähigkeit sprachabhängig sein, z.B. in Java, C++, C# oder For- tran. Packaging Informationen wie Codeabhängigkeiten, Hardwareanforderungen oder Versionsabhängigkeiten sind hilfreich für das umfangreiche Deployment im Grid. 3.3 Fractal Den Grundstein des GCMs bildet das Fractal Component Model. Fractal ist ein stark erweiterbares Komponentenmodell und bildet das Referenzmodell für das GCM. Da Fractal nicht auf Verteiltheit und Grid-spezifische Eigenschaften ausgelegt ist, wird es um diese Eigenschaften erweitert. Fractal bildet somit die Basis des GCM. Da GCM Fractal erweitert und nicht komplett neu definiert ist, sind viele Eigenschaften der Fractal Spezifikation auch für das GCM von Bedeutung. Fractal Komponenten setzen sich aus zwei Teilen zusammen (s. Fig. 2): Con- tent und Controller. Der Content ist eine abstrakte Entität, die von einem Con- troller kontrolliert wird. Der Content kann aus Unterkomponenten und Bindings entstehen. Ein Controller, oder auch Membran genannt, ist eine abstrakte En- tität, die das Kontrollverhalten einer Komponente verkörpert und kann beliebige Kontroll-Mechanismen auf der zugehörigen Komponente ausführen. Eine Kom- Fig. 2. Zusammengesetzte Komponente in Fractal (aus [1, 2]) ponente besitzt vier Schnittstellen. Zum einen eine Client-Schnittstelle und zum anderen eine Server-Schnittstelle. Die Client-Schnittstelle zum Senden von Funk- tionsaufrufen und die Server-Schnittstelle zum Empfangen eingehender Funk- tionsaufrufe. Desweiteren besitzt eine Komponente eine funktionale Schnittstelle und eine Kontroll-Schnittstelle. Die funktionale Schnittstelle entspricht einer Funktion, die durch eine Komponente angeboten oder von dieser benötigt wird. Die Kon- troll-Schnittstelle verwaltet nichtfunktionale Aspekte einer Komponente wie z. B. Konfiguration oder Rekonfiguration. [2]
6 Grid Component Model: Vorstellung und Vergleich In Fractal gibt es verschiedene Conformance-Level. Diese sind abhängig vom Kontroll-Einfluss auf eine Komponente. Das niedrigste Level ist Level 0. Hier sind Fractal Komponenten wie einfache Objekte. Die Kontrollmöglichkeiten steigen je Level und eine Fractal Komponente muss sich an zusätzliche Vorgaben halten. D. h. bei bestimmten Eigenschaften einer Komponente muss diese bestimmte Controller implementieren. Das höchstmögliche Level an Kontrolle wird mit mit Level 3.3 erreicht. 3.4 GCM Conformance Level Auch im GCM gibt es vier Conformance Level, die sich allerdings von den Fractal Conformance Level unterscheiden. [2] Level 0 verlangt minimale Interoperabilität und Integration um GCM Kompo- nenten zu bearbeiten und betrachten. Level 1 nimmt Bezug auf die Programmiersprache. Somit kann eine Implemen- tierung z.B. GCM Level 1 Java oder C konform sein. Dieses Level hängt stark mit den Fractal Conformance Levels zusammen. Level 2 stellt eine Implementierung mit voller Funktionsfähigkeit dar. Es wird hier noch unterschieden zwischen Unterbereichen für Collective Communi- cation, dynamische Controller und autonome Controller. Level 3 fordert komplette Interoperabilität, indem die komplette GCM-API als Webservice verfügbar gemacht wird und somit die Verwaltung der Kompo- nenten mit verschiedenen Programmiersprachen durchgeführt werden kann. 4 Spezielle Aspekte des GCM Es gibt viele interessante Aspekte des GCM, die eine genauere Betrachtung Wert sind. In dieser Arbeit werden zwei davon vorgestellt. Virtuelle Knoten, um eine abstrakte Sicht auf die Infrastruktur von Grid-Anwendungen zu bekommen, und die beiden Kommunikationsschnittstellen Multicast und Gathercast, die für ein Grid eine hohe Bedeutung in Bezug auf effiziente Entwicklung haben können. 4.1 Virtuelle Knoten Virtuelle Knoten bieten eine praktische Möglichkeit die Infrastruktur einer Grid- Anwendung zu spezifizieren. Sie sind nur optionaler Bestandteil des GCM, haben aber durchaus sinnvolle Einsatzzwecke. Sie abstrahieren die physikalischen Ei- genschaften und erlauben eine klare Trennung zwischen Design und physikalis- cher Infrastruktur. Die Design-Infrastruktur bildet eine virtuelle Infrastruktur zur Darstellung der gewünschten Umsetzung einer Komponenten-Infrastruktur. Die physikalis- che Infrastruktur steht zur Zeit der tatsächlichen Umsetzung zur Verfügung. Sie greift direkt auf bestimmte Ressourcen zu und verwendet bestimmte Kommuni- kationsprotokolle. Diese Eigenschaften werden durch die virtuelle Infrastruktur
Grid Component Model: Vorstellung und Vergleich 7 verdeckt und abstrakt dargestellt, um eine einfache und unabhängige Verwen- dung zu ermöglichen. Die Spezifikation von virtuellen Knoten kann Eigenschaften definieren, die von zugewiesenen physikalischen Knoten erfüllt werden müssen. Virtuelle Kno- ten können verschiedene Kardinalitäten besitzen. Es gibt einfache und vielfache virtuelle Knoten. Ein einfacher virtueller Knoten benötigt nur einen einzigen physikalischen Knoten, ein vielfacher virtueller Knoten benötigt mehrere physi- kalische Knoten. Code-Beispiel für den Export zweier virtueller Knoten Zusätzlich gibt es die Möglichkeit virtuelle Knoten zu exportieren. Durch die Verwendung von exportierten virtuellen Knoten können Namenskonflikte ver- mieden werden, da für exportierte virtuelle Knoten ein eigener Name gewählt werden kann. Wird ein virtueller Knoten exportiert behält er seine Kardinalität bei. Durch das Exportieren können auch zusammengesetzte virtuelle Knoten er- stellt werden. Das Code-Beispiel zeigt einen virtuellen Knoten VN1 der sich aus den beiden virtuellen Knoten client-vn und server-vn zusammensetzt. Somit werden beide Komponenten client und server auf dem selben virtuellen Knoten ausgeführt. [2] 4.2 Multicast und Gathercast Eine wichtige Eigenschaft in einem Grid ist die Verteilung von Informationen an mehrere Parteien. Wird eine Nachricht gesendet, so kann diese an mehrere Empfänger verteilt werden. Ebenso können mehrere Nachrichten empfangen wer- den und dann zusammengefasst an einen Empfänger weitergeleitet werden. Diese Art der gesammelten Kommunikation wird über sog. Sammelschnittstellen er- reicht. Für die Verteilung der Informationen an mehrere Empfänger gibt es die Multicast-Schnittstelle und für das Zusammenfassen mehrerer Nachrichten für einen Empfänger gibt es die Gathercast-Schnittstelle. Multicast bezeichnet die one-to-many Beziehung zwischen Sender und Empfän- ger. In diesem Fall wird ein einzelner Aufruf in eine Liste von Aufrufen umge- wandelt. Somit gibt es im Fall von Rückgabewerten auch immer eine Liste von Rückgabewerten, anstatt eines Einzelnen. Damit ändert sich auch der Typ
8 Grid Component Model: Vorstellung und Vergleich der Rückgabe im Gegensatz zu normalen Aufrufen, da als Rückgabewert eine Liste verwaltet werden muss. Eine Komponente im GCM kann zwei verschiedene Multicast-Schnittstellen implementieren. Die Multicast-Server-Schnittstelle wandelt einen Aufruf in eine Menge von Aufrufen um. Diese Menge von Aufrufen wird entweder, im Fall einer einfachen Komponente, an Implementierungs-Code weitergeleitet, oder an Server-Schnitt- stellen interner Komponenten, im Fall einer zusammengesetzten Komponente. Die Multicast-Client-Schnittstelle wandelt einen Aufruf in eine Menge von Aufrufen um. Dieser Aufruf kommt entweder vom Implementierungs-Code einer einfachen Komponente oder von einer internen Komponente und wird an ange- bundene Server-Schnittstellen externer Komponenten weitergeleitet. Einer der Hauptgründe für diese Art von Schnittstellen ist die mögliche parallele Ausführung von Aufrufen, was der Effizienz der entwickelten Grid- Anwendungen zugute kommt. Gathercast ist das symmetrische Abbild der Multicast-Schnittstelle. Gather- cast ist die many-to-one Beziehung zwischen Sender und Empfänger. Es gibt also mehrere Sender und nur einen Empfänger. Die Schnittstelle wandelt somit mehrere Aufrufe in nur einen einzigen Aufruf um. Gibt es einen Rückgabewert beim Aufruf, so wird dieser an die aufrufenden Komponenten weitergeleitet. Auch bei der Gathercast- Schnittstelle gibt es zwei verschiedene Varianten, die eine Komponente implementieren kann. Die Gathercast-Server-Schnittstelle wandelt eine Menge von Aufrufen in ei- nen Einzelnen um. Die Menge von Aufrufen kommt von Server-Schnittstellen ex- terner Komponenten und wird bei zusammengesetzten Komponenten an Server- Schnittstellen interner Komponenten weitergeleitet und bei einfacher Kompo- nenten an den Implementierungs-Code. Die Gathercast-Client-Schnittstelle wandelt eine Menge von Aufrufen in ei- nen Einzelnen um. Die Menge an Aufrufen kommt bei zusammengesetzten Kom- ponenten von Client-Schnittstellen interner Komponenten und bei einfachen Komponenten aus dem Implementierungs-Code. Bei der Gathercast-Schnittstelle ist ein wichtiger Aspekt die Synchronisa- tion der eingehenden Aufrufe. Die Nachrichten müssen zwischengespeichert wer- den und es muss gewartet werden bis die Nachricht an die eigentliche Ziel- Schnittstelle weitergeleitet wird. Die Gathercast-Schnittstelle ist sich bewusst welche anderen Schnittstellen angebunden sind. Somit können Annahmen er- stellt und Regeln festgelegt werden. Dadurch ist es beispielsweise möglich die Nachricht nach einer bestimmten Zahl eingegangener Nachrichten zusammen- zufassen und weiterzuleiten. Zusätzlich könnte auch ein Time-Out eingeführt werden, mit dem eine maximale Wartezeit festgelegt wird. Hängt die Bearbeitung der Aufrufe von der Übergabe bestimmter Parameter ab, so gibt es eine Optimierungsmöglichkeit der beiden Sammelschnittstellen. Die Standardverteilung ist die Broadcast-Weitergabe aller Parameter an alle Zielschnittstellen. Sind einige der Parameter allerdings Wertelisten, so können
Grid Component Model: Vorstellung und Vergleich 9 diese aufgeteilt werden. Jede Zielschnittstelle bekommt somit nur einen Teil der Parameter und alle arbeiten auf unterschiedlichen Daten. Bei der Multicast- Schnittstelle werden die Aufrufe somit parallel und mit unterschiedlichen Daten bearbeitet. Bei der Gathercast-Schnittstelle werden dagegen Aufrufe mit jeweils verschiedenen Parametern zu einem Aufruf zusammengefasst. Neben one-to-many und many-to-one ist es auch möglich eine many-to-many Kommunikation zu realisieren. Dazu müssen die verschiedenen Multicast- und Gathercast-Schnittstellen in geeigneter Weise kombiniert werden. [2] 5 Formale Spezifikation Bisher existiert keine formale Spezifikation für das GCM. Allerdings gibt es zwei Ansätze für das Fractal Komponentenmodell. Diese können somit auch für das GCM verwendet werden, da Fractal die Grundlage des GCM bildet. Die erwähnten Formalisierungs-Ansätze sind in [20] und [21] beschrieben. Der Ansatz in [21] umfasst allerdings nicht alle Eigenschaften der Fractal Spezi- fikation. [20] bietet dagegen eine vollständige sprachunabhängige formale Spez- ifikation. Deswegen wird im folgenden nur auf die in [20] vorgestellte formale Spezifikation eingeganen. Diese wurde in der Spezifikationssprache Alloy 4 [12] geschrieben. Die formale Spezifikation bereinigt einige Unklarheiten und ist in manchen Aspekten toleranter im Vergleich zur nicht-formalen Spezifikation. Es können damit formale Überprüfungen von Fractal Designs und Tools durchgeführt wer- den. Andere Komponentenmodelle können verglichen werden. Das ist bspw. in- teressant, um herauszufinden ob ein bestimmtes Komponentenmodell eine kor- rekte Spezialisierung des Fractal Modells darstellt. Darüberhinaus bildet eine for- male Spezifikation die Basis für eine formale Architektur-Beschreibungs-sprache für Fractal. Der Kern des Fractal Modells wird im ersten Teil der formalen Spezifikation behandelt. Hier wird als erstes der Begriff für eine Komponente definiert. Eine Komponente wird kell genannt, was eine entfernte Anspielung auf das englische Wort cell sein soll. Eine Komponente hat die Möglichkeit mit ihrer Umgebung zu kommunizieren. Die Kommunikation läuft über sog. gates ab. Gates können somit als die Schnittstellen einer Komponente betrachtet werden. Da eine Kom- ponente auch aus Unterkomponenten bestehen kann, werden diese als subkells bezeichnet. Um nun Komponenten und Gates zu definieren, werden zuerst Men- gen von atomaren Elementen definiert, in denen verschiedene Eigenschaften der Schnittstellen und Komponenten verwaltet werden. module fractal/foundations sig Id {} sig Val {} sig Op extends Id {}
10 Grid Component Model: Vorstellung und Vergleich Die Namen stehen dabei für Mengen von Bezeichnern, Basiswerten und Transak- tionsnamen. Die Transaktionsnamen sind als Untermenge der Bezeichner fest- gelegt. Wie im Code-Beispiel zu sehen, ist es in Alloy möglich Module zu definie- ren. Diese können dadurch in anderen Modulen importiert und verwendet wer- den. Mit diesen primitiven Mengen sind nun Gate und Kell definiert: sig Gate { gid: Id } sig Kell { gates: set Gate, sc: set Kell, kid: Id } fact GatesInKellHaveUniqueIds { all c:Kell | all i,j:c.gates | i.gid = j.gid implies i = j } Die Definition legt also fest, dass ein Gate einen Bezeichner besitzt. Dieser Bezei- chner muss aus der vorher definierten Menge Id stammen und wird in der Eigen- schaft gid verwaltet. Ein Kell-Element hat auch einen Bezeichner kid. Zusätzlich hat es eine Menge von Gates und die Menge sc an Unterkomponenten. Der anschließend definierte Alloy fact stellt sicher, dass alle Schnittstellen, die zu einer Komponente gehören, unterschiedliche Bezeichner besitzen. Damit wurde die grundlegende Struktur einer Komponente festgelegt. Als nächstes wird die Komponente mit Transitionen ausgestattet, wozu die Elemente TKell und Tran- sition definiert werden: sig TKell in Kell { transitions: set Transition } sig Transition { tsc: set Kell, sin: set Signal, sout: set Signal, res: set Kell } fact TransMayNotHaveDifferentSubComps { all c:TKell | all t:c.transitions | t.tsc = c.sc } TKell ist eine Untermenge von Kell und enthält zusätzlich eine Menge von Tran- sitionen. Das Element Transition enthält eine Menge an initialen Komponenten
Grid Component Model: Vorstellung und Vergleich 11 tsc, ein Input-Signal sin, ein Output-Signal sout und eine Menge an resultieren- den Komponenten res. Die Menge an initialen Komponenten stellt dabei die Menge an Unterkomponenten der Komponente dar, auf der die Transition aus- geführt wird. Der zugehörige fact stellt dabei sicher, dass es sich bei den initialen Komponenten um die Unterkomponenten der Transition-Komponente handelt. Um die Definition des Kerns des Fractal Modells abzuschließen fehlt noch die Definition des Signal-Elements: sig Signal { target: Gate, operation: Op, args: Id -> set Arg } sig Arg in Id + Val + Gate + Kell {} fact SignalsTargetGates { all c:TKell | c.transitions.(sin + sout).target in c.gates } Ein Signal enthält eine Zielschnittstelle target, einen Transaktionsnamen oper- ation und einen Datensatz an verschiedenen Argumenten args. Die Argumente sind im Element Arg definiert und umfassen die Mengen von Bezeichner, Werte, Schnittstellen und Komponenten. Der fact SignalsTargetGates stellt sicher, dass alle Zielschnittstellen einer Transition auch Schnittstellen der zugehörigen Kom- ponente sind. Die definierten Eigenschaften spiegeln nur den grundlegenden Teil des Fractal Modells wider. Die komplette formale Spezifikation findet sich in [20] und wurde hier nur auszugsweise erwähnt. 6 Vergleich und Interoperabilität mit CCA Es gibt neben dem Grid Component Model noch weitere Komponentenmodelle, die sich für die Entwicklung von Grid-Anwendungen eignen. Die wichtigsten sind dabei die Common Component Architecture (CCA) [14] und das CORBA Com- ponent Model mit Erweiterungen für Grids [15]. In [16] vergleichen Malawski und Bubak zwei Komponenten Modelle und testen ihre Fähigkeit zusammen- zuarbeiten. Sie definieren ein Framework mit dem Fractal Komponenten und CCA Komponenten interagieren und zeigen damit die Offenheit beider Systeme. Untermauert werden ihre Behauptungen durch eine Beispiel-Implementierung. Aus den vorhandenen Komponenten Modellen wurden die beiden Frameworks GCM und CCA ausgewählt. CCA existiert schon einige Zeit und hat mehrere Im- plementierungen. GCM dagegen ist aktueller und will ein Standard-Komponen- tenmodell im Grid-Bereich definieren. Um das zu erreichen muss das Modell
12 Grid Component Model: Vorstellung und Vergleich die Zusammenarbeit mit existierenden Anwendungen und die Integration bish- eriger Komponenten ermöglichen. Die Basis von GCM bildet das Fractal Kom- ponenten Modell, in dem auch die grundlegenden Eigenschaften der Kompo- nenten und ihr Zusammenspiel definiert sind. Somit stützen sich Malawski und Bubak hauptsächlich auf Fractal, verwenden aber als Implementierung die GCM- Implementierung ProActive. In zukünftigen Arbeiten sollen die zusätzlichen As- pekte des GCM in Betracht gezogen werden. Als CCA-Implementierung kommt MOCCA [17] zum Einsatz. Interoperabilität zweier Komponenten Modelle ist das Ziel. Interoperabilität be- deutet hier die Zusammenarbeit der Modelle in einem heterogenen Kontext. Der herkömmliche Ansatz dafür besteht in der Integration von Webservices und somit XML als gemeinsame Sprache um unabhängig Informationen auszu- tauschen. Der Ansatz aus [16] ist allerdings ein anderer. Hier wird eine neue Interoperabilitäts-Schicht zwischen bestimmten Komponenten durch Vermittler und Adapter erzeugt. Somit wird kein zusätzliches überlagerndes Framework verwendet. 6.1 Analyse der Modelle Die CCA-Spezifikation definiert verschiedene Kernentitäten des Modells: Kom- ponenten, Ports und ein Framework. Für die externen Schnittstellen der Kom- ponenten gibt es verschiedene Ports. Die Client-Schnittstelle wird als uses-Port bezeichnet und die Server-Schnittstelle als provides-Port. Das Framework besitzt eine Services-Schnittstelle bei der die Ports registriert werden können. Zum Er- stellen und vernichten von Komponenten, sowie zum Verbinden der Ports gibt es die Schnittstelle BuilderService. Neben diesen Schnittstellen gibt es noch op- tionale Ports, die Interoperabilität erleichtern sollen. Im Vergleich zu Fractal hat CCA einige Gemeinsamkeiten sowie Unterschiede. Zu den Gemeinsamkeiten zählt die Trennung von Schnittstelle und Implemen- tierung. Auch die Zusammensetzung von Anwendungen durch Verbindung der Client- und Server-Ports ist in beiden Modellen möglich. Beide Modelle un- terstützen die Fähigkeit zu Reflexion. Die wichtigste Gemeinsamkeit ist allerd- ings die Übereinstimmung der funktionalen Schnittstellen. Unterschiede, die es zu überwinden gilt, liegen in der Kommunikation der Komponenten mit der Außenwelt. Bei CCA informieren die Komponenten das Framework über ihre Schnittstellen und bei Fractal wartet eine Komponente bis sie danach gefragt wird. Verbindungen werden in CCA über den BuilderSer- vice erstellt und vom Framework verwaltet. Fractal-Komponenten sind dagegen selbst verantwortlich für ihre Verbindungen. In CCA gibt es kein entsprechen- des Gegenstück zum Fractal-ContentController, da in CCA zusammengeset- zte Komponenten nicht explizit definiert sind. Auch gibt es keinen Standard Life Cycle Mechanismus. CCA unterscheidet nicht zwischen nicht-funktionalen Schnittstellen wie Fractal, hat aber trotzdem vergleichbare Möglichkeiten der- artige Eigenschaften zu beeinflussen. Die Erstellung von Komponenten wird in
Grid Component Model: Vorstellung und Vergleich 13 CCA auch vom BuilderService übernommen, während es in Fractal die Factory- Schnittstelle dazu gibt. Fractal besitzt eine Application Description Language (ADL). CCA hat sowas nicht standardäßig, allerdings definieren verschiedene Implementierungen jeweils eigene ADLs um Anwendungen zusammenzusetzen. Ein Problem für die Interoperabilität beider Modelle ist die Tatsache, dass Fractal- bzw. GCM-Komponenten einen festen, unveränderlichen Typ besitzen. Dieser statische Typ kann zur Verifikation der Korrektheit von Komponenten- verbindungen verwendet werden, ist allerdings ab der Instantiierung nicht mehr erweiterbar. CCA-Komponenten können jederzeit neue Ports registrieren und besitzen somit keinen festen Komponententyp. Um diesem Problem zu begeg- nen schlagen Malawski und Bubak unter anderem vor, dass der Entwickler eine ADL für die CCA-Komponente erstellen soll. Damit ist es möglich einige Ports, die während des Komponenten-Life Cycle angeboten werden, für Fractal als op- tionale Schnittstellen zu definieren. Dieser Lösungsansatz ist möglichst allgemein gehalten und soll ein gutes Verständnis für die Unterschiede zwischen CCA und Fractal ermöglichen. Er konzentriert sich außerdem auf die Interaktion zwischen beiden Modellen. Bei dem genannten Lösungsansatz wird somit ein Mapping benötigt, das CCA-Ports auf die entsprechenden GCM-Schnittstellen abbildet. 6.2 Integrationsstratiegen In [16] wird für die Prüfung der Interoperabilität beider Modelle die Integration des CCA-Modells innerhalb eines GCM- bzw. Fractal-Systems betrachtet. Es wird unterschieden zwischen der Integration einer einzelnen CCA Komponente und der eines kompletten CCA-Systems, bestehend aus mehreren Komponen- ten. Für die Kombination von CCA und Fractal muss ein Framework mehrere Eigenschaften unterstützen. Das wichtigste ist die Kommunikation vom Fractal- System zum CCA-System und zurück. Aber auch das Verbinden von Fractal- Interfaces mit dem CCA-System und sofern es unterstützt wird, der Export von neuen CCA-Ports. Die Integration einer einzelnen CCA-Komponente wird mit Hilfe eines Wrap- pers durchgeführt. Dieser Wrapper ist eine einfache Fractal Komponente und ummantelt die CCA-Komponente. Der Wrapper bietet der CCA-Komponente die Schnittstelle cca.Services. Vor der Instantiierung muss allerdings der Typ der Fractal-Komponente bekannt sein, der möglicherweise durch eine ADL-Beschrei- bung ermittelt werden kann. Somit wird die gesamte Kommunikation von einem Fractal-Framework durchgeführt und kein CCA-Framework benötigt. Im Fall der Integration eines gesamten CCA-Systems werden die CCA-Kom- ponenten in ihrem eigenen Framework erstellt und mit Fractal-Komponenten in einem Fractal-Framework verbunden. Um eine vollständige Zusammenarbeit zwischen beiden Frameworks zu erreichen muss das komplette CCA-System in- nerhalb eines Fractal Frameworks als zusammengesetzte Fractal-Komponente angesehen werden. Dazu wird wieder ein Wrapper eingesetzt, der das komplette CCA-System ummantelt.
14 Grid Component Model: Vorstellung und Vergleich Der Wrapper erhält die Informationen über das Mapping der Frameworks und erzeugt sogenannte GluePorts. Diese GluePorts übersetzen die Aufrufe von Fractal in Aufrufe für CCA und umgekehrt. Nach außen bieten die GluePorts Fractal-Schnittstellen an und können mit Fractal-Komponenten über den Bind- ingController verbunden werden, intern werden die CCA-Ports über den Builder- Service mit den GluePorts verbunden. 6.3 Ergebnis Die Analyse der beiden Systeme hat die Unterschiede beider Modelle gezeigt. Doch ist es trotzdem möglich, dass beide Frameworks zusammenarbeiten. Der Vorteil des beschriebenen Ansatzes ist, dass kein zusätzliches Framework benö- tigt wird. Zukünftige Arbeiten werden in Richtung Automatisierung und Gen- eration von Glue-Code zur Laufzeit zielen. Die erweiterten Eigenschaften des GCM sollen ebenfalls zukünftig behandelt werden. 7 Zusammenfassung In dieser Arbeit wurde anfangs der Begriff des Grid Computing erläutert und anschließend das Grid Component Model eingeführt. Es wurde beschrieben wie sich dieses Modell zusammensetzt, auf welche Eigenschaften bezüglich des Grid zu achten sind und dass es eine Erweiterung zum Fractal Komponentenmod- ell darstellt. Zusätzlich wurden bestimmte Aspekte wie virtuelle Knoten sowie Multicast- und Gathercast-Schnittstellen erläutert. Daraufhin wurde der Kern einer formalen Spezifikation für Fractal vorgestellt, die somit auch für das GCM Gültigkeit besitzt. Anschließend wurde ein Vergleich zwischen GCM und dem CCA Komponentenmodell gezogen und deren Möglichkeiten der Interoperabili- tät veranschaulicht. Es gibt viele weiterführende Arbeiten zu Themen des GCM. In [18] wird an- hand einer Beispielanwendung demonstriert wie sich eine Anwendung mit dem GCM umsetzen lässt. Dazu wurde ProActive verwendet und versucht eine Grid Anwendung zu erstellen, die unter anderem auch Multicast- und Gathercast- Schnittstellen berücksichtigt. Mit dem Thema autonome Komponenten beschäftigen sich in letzter Zeit mehrere Arbeiten. Es geht zum Beispiel in [19] darum, wie autonomes Verhal- ten in Grid Komponenten implementiert werden kann. In [20] wird der formale Aspekt von autonomen Komponenten behandelt und ein formale Beschreibung der adaptiven Operationen erstellt.
Grid Component Model: Vorstellung und Vergleich 15 References 1. Institue on Programming Model: Proposals for a Grid Component Model, Core- GRID deliverable D.PM.02 (2006) 2. Institue on Programming Model: Basic features of the Grid Component Model, CoreGRID deliverable D.PM.04 (2007) 3. GridTalk: GridBriefings - Grids and clouds: the new computing. http://www. gridtalk.org/briefings/gridsandclouds.pdf (letzte Abfrage: 03.06.2009) 4. GridCafé: The place for everybody to learn about grid computing. http://www. gridcafe.org (letzte Abfrage: 03.06.2009) 5. Wikipedia: Virtuelle Organisationen. http://de.wikipedia.org/wiki/Virtuelle_ Organisation (letzte Abfrage: 17.07.2009, oldid=61901799) 6. Wikipedia: Grid Computing. http://de.wikipedia.org/wiki/Grid-Computing (letzte Abfrage: 17.07.2009, oldid=60952747) 7. Barth, T.: Grid Computing: Das wahre Web 2.0? http://www.heise.de/tp/r4/ artikel/27/27029/1.html (letzte Abfrage: 03.06.2009) 8. Foster, I., Kesselman, C.: The Grid: Blueprint for a New Computing Infrastructure. 2. Auflage, Morgan Kaufmann, San Francisco (2004) 9. Wikipedia: Computercluster. http://de.wikipedia.org/wiki/Computercluster (letzte Abfrage: 17.07.2009, oldid=62262354) 10. CoreGRID European Research Network. http://www.coregrid.net (letzte Abfrage: 03.06.2009) 11. P. Merle, J.B. Stefani: A formal specification of the Fractal component model in Alloy. INRIA Research Report RR-6721 (2008) 12. D. Jackson. Software Abstractions: Logic, Language, and Analysis. MIT Press (2006) 13. E. Bruneton, T. Coupaye, and J.B. Stefani: The Fractal Component Model. Tech- nical report, Specification v2, ObjectWeb Consortium (2003) 14. R. Armstrong et al.: The CCA component model for high-performance scientific computing. Concurr. Comput.: Pract. Exper., 18(2):215-229 (2006) 15. S. Lacour et al.: Deploying CORBA components on a computational grid. Volume 3083 of LNCS, pages 35-49 (2004) 16. M. Malawski, M. Bubak: Interoperability of grid component models: GCM and CCA case study. Towards Next Generation Grids (Proceedings of the CoreGRID Symposium 2007), CoreGRID, pages 95-105. Springer (2007) 17. M. Malawski et al.: MOCCA - towards a distributed CCA framework for meta- computing. In Proceedings of the 10th HIPS Workshop in Conjunction with IPDPS. IEEE (2005) 18. N. Parlavantzas et al.: Componentising a scientific application for the grid. Core- GRID Technical Report TR-0031 (2006) 19. M. Aldinucci et al.: Behavioural skeletons in GCM: autonomic management of grid components. In D. E. Baz, J. Bourgeois, and F. Spies, editors, Proc. of Intl. Euromicro PDP 2008: Parallel Distributed and network-based Processing, pages 54-63, Toulouse. IEEE (2008) 20. M. Aldinucci, E. Tuosto.: Towards a formal semantics for autonomic components. In T. Priol and M. Vanneschi, editors, From Grids To Service and Pervasive Com- puting (Proceedings of the CoreGRID Symposium 2008), CoreGRID, pages 31-45, Las Palmas. Springer (2008) 21. M. Simonot, M.-V. Aponte.: Modélisation formelle du contrôle en Fractal. ARA REVE Project Deliverable 2.3. CNAM-CEDRIC (2007)
Sie können auch lesen