Service Architekturen für alle – Service-Plattform und Peer-to-Peer im Haus und Auto – Referenten Ronald Kutschke Markus Block von der Hochschule der Medien, Stuttgart im Rahmen des SPIQ Jour Fix am Donnerstag, 08.09.2005 Einleitung Inhalt Inhalt • Peer-to-Peer (P2P) – – – – Von Client – Server zu P2P Ausblick Vorstellung JXTA Anwendungsgebiete für P2P Systeme • OSGi – Architektur – Einsatzgebiete • OSGi & Peer-to-Peer – Automatisierte Auflösung von Bundleabhängigkeiten • Fazit • Ressourcen • Kontakt 2 Peer-to-Peer Inhalt • Peer-to-Peer (P2P) – – – – Von Client – Server zu P2P Ausblick Vorstellung JXTA Anwendungsgebiete für P2P Systeme • OSGi – Architektur – Ensatzgebiete • OSGi & Peer-to-Peer – Automatisierte Auflösung von Bundleabhängigkeiten • Fazit • Ressourcen • Kontakt 3 Peer-to-Peer Netzwerk Topologien Zentrale Topologie • Server bietet Service an • Client nutzt Service • Statische Servicesuche • Relativ statische Adressierung (DNS) Æ Client – Server Architektur 4 Peer-to-Peer Netzwerk Topologien Zentrale Topologie – Beispiel 3 2 Melde Server 1 Datei-Download Suchanfrage 5 Peer-to-Peer Netzwerk Topologien Zentrale Topologie – Bewertung • Vorteile – Einfaches Anbieten, Suchen und Finden von Services in statischen Umgebungen – Einfache Administrierung • Nachteile – Je mehr Clients desto größer der Server (Rechenleistung als auch Speicher) – Server Æ Single Point of Failure – Schlecht geeignet für Dynamische Umgebungen 6 Peer-to-Peer Netzwerk Topologien Teils Dezentrale Topologie • Dynamisches Adressierungssystem (1996 ICQ) • Dezentrale Servicenutzung • Server für Management Aufgaben Æ Adressierung Æ Serviceverzeichnis Æ Kein richtiges P2P System • 1999 Napster 7 Peer-to-Peer Netzwerk Topologien Teils Dezentrale Topologie – Beispiel Client Client Server Client Client 8 Peer-to-Peer Netzwerk Topologien Teils Dezentrale Topologie – Bewertung • Vorteile – Einfaches Anbieten, Suchen und Finden von Services – Dezentrale Servicenutzung • Nachteile – Server Æ Single Point of Failure 9 Peer-to-Peer Netzwerk Topologien Rein Dezentrale Topologie • Jeder Peer ist gleichberechtigt Ækann Server wie auch Client Funktionalität übernehmen Æ Servent • komplett dezentrales System – Adressierung – Serviceverzeichnis – Servicenutzung Æ P2P System • 2001 Gnutella 10 Peer-to-Peer Netzwerk Topologien Rein Dezentrale Topologie – Beispiel Servent Servent Servent Servent Servent Servent Servent 11 Peer-to-Peer Netzwerk Topologien Rein Dezentrale Topologie – Bewertung • Vorteile – Bessere Performance bei Servicenutzung – Optimale Verfügbarkeit / Ausfallsicherheit • Nachteile – – – – Initialer Netzwerkzugriff Such-Flooding Ungenaue Suche Skalierbarkeit 12 Peer-to-Peer Netzwerk Topologien Hybride Topologie • Mischform aus Zentraler und Dezentraler Topologie • Super Nodes und Ordinary Nodes – SN erfüllen Management Aufgaben – Jeder ON kann zu SN werden • seit 2001 Kazaa, eDonkey/eMule, Overnet, BitTorrent, JXTA 13 Peer-to-Peer Netzwerk Topologien Hybride Topologie – Beispiel 3 Interne Suche 4 4 4 5 Melde Treffer 3 Interne Suche Melde Treffer Melde Treffer 3 Interne Suche Datei-Download 14 Peer-to-Peer Netzwerk Topologien Hybride Topologie – BitTorrent Seed Node Seed Node Seed Node Tracker 2 Locator Datei ON Web Server 15 Peer-to-Peer Netzwerk Topologien Hybride Topologie – Bewertung • Vorteile – Initialer Netzwerkzugriff über SN – Bessere Skalierbarkeit durch • Abwicklung der Managementfunktionen über das SN Backbone • Auslagern der Managementfunktionen • Nachteile – Kompromiss von Zentraler und Dezentraler Topologie – Flaschenhälse bei wenig verbreiteten Blöcken 16 Peer-to-Peer Ausblick Ausblick – Avalanche • Derzeit von Microsoft entwickelt • Anstatt der Dateiblöcke werden distinkte Linearkombinationen übertragen – Server Coding – Network Coding Æ jeder Block kann für Rekonstruktion von Datei verwendet werden 17 Peer-to-Peer Ausblick Server Coding Sin City.avi B1 B2 B3 wähle: x1 * B1 + x2 * B2 + x3 * B3 = E1 y1 * B1 + y2 * B2 + y3 * B3 = E2 z1 * B1 + z2 * B2 + z3 * B3 = E3 … 18 Peer-to-Peer Ausblick Server (De-)Coding 19 Peer-to-Peer Ausblick File Sharing ohne Server Coding B1 B3 B2 B2 B1 B2 B3 20 Peer-to-Peer Ausblick File Sharing mit Server Coding E1 Node A E2 E3 Node B Node C E1 B1 E2 B2 E4 B3 E4 Node D Node X 21 Peer-to-Peer Ausblick Avalanche – Bewertung • Vorteile – Optimale Verteilung der Blöcke Æ Schnellerer Download • Server Coding: 2 – 3 mal schneller • Network Coding: weitere 20 – 30% schneller • Nachteile – Zusätzlicher Traffic durch Koeffizienten Vektoren – Encoding und Decoding Geschwindigkeit – Falsche Blöcke von boshaften Nodes 22 Peer-to-Peer JXTA Vorstellung JXTA • Von Sun Microsystems entwickelt • Versucht P2P System Standard zu definieren • Protokollspezifikation Æ Plattformunabhängig Æ Programmiersprachenunabhängig Æ Netzwerkprotokollunabhängig • Referenzimplementierung von Sun für Java J2SE 23 Peer-to-Peer JXTA Architektur Quelle: http://www.sun.com/software/jxta/JXTA5.pdf 24 Peer-to-Peer JXTA Konzepte • JXTA ID – – • 128Bit großer eindeutiger Identifier zur Adressierung von Peers, Ressourcen… im JXTA Netzwerk Peer – Node im JXTA Netz • • • • PeerGroup – – • Edge Peers Rendezvous Peers Relay Peers Zusammenschluss von Peers Logische Strukturierung des Netzwerks Advertisement – – XML Dokument, das JXTA Komponente repräsentiert Besteht aus einer ID, und optionalen zusätzlichen Meta Informationen 25 Peer-to-Peer Anwendungsgebiete Anwendungsgebiete für P2P Systeme • Dynamische Systeme, die Unzuverlässigkeiten des Netzwerkes verkraften können – – – – – – Instant Messaging Voice over IP File Sharing Ad-Hoc Netzwerke Verteiltes Ressourcen Sharing Verteilte Suche • Schlecht geeignet – in statischen Systemen – in hoch performanten Systemen – in Systemen mit dynamischen Daten, die zu jeder Zeit und auf jedem Rechner konsistent sein müssen 26 OSGi Inhalt • Peer-to-Peer (P2P) – – – – Von Client – Server zu P2P Ausblick Vorstellung JXTA Anwendungsgebiete für P2P Systeme • OSGi – Architektur – Einsatzgebiete • OSGi & Peer-to-Peer – Automatisierte Auflösung von Bundleabhängigkeiten • Fazit • Ressourcen • Kontakt 27 OSGi Einführung OSGi • OSGi – Open Services Gateways Initiative • OSGi Alliance wurde 1999 gegründet – Ziel: Spezifizierung einer offenen Laufzeitumgebung für Services • Mitglieder sind unter anderem BMW Group, Deutsche Telekom AG, IBM Corporation, Robert Bosch GmbH, Siemens AG , Sun Microsystems, Inc. und andere. 28 OSGi Einführung Was ist OSGi? • OSGi ist eine Spezifikation – Open Source Implementierungen: Knopflerfish und Oscar – Kommerzielle Implementierungen von Firmen, wie z.B. Prosyst und IBM • Standardisierte Laufzeitumgebung für Services – Installation, Start, Stop, Update, Deinstallation – Berücksichtigung von Versionen und Abhängigkeiten der Services • Komponentenorientiert (SOA Konzepte) – Wiederverwendbarkeit der Komponenten und Services – Ein Service kann wiederum anderen Services verwenden 29 OSGi Architektur OSGi Umgebung • OS & Hardware – OSGi ist von einer Java VM abhängig, d.h. jede Hardware und jedes OS für das es eine Java VM gibt wird unterstützt • Execution Environment – Java Laufzeitumgebung wie z.B. J2SE, J2ME – auf Java beschränkt, ein gute Erklärung gibt das Paper: „The OSGi-Java Connection“ [http://www.aqute.biz/resources/osgi-java.pdf] Quelle: http://www.osgi.org 30 OSGi Architektur Modules • Class Loading – Vollständige Trennung der Module – Kontrollierte Zugriffe auf Ressourcen ermöglichen Æ Jedes Bundle erhält eine Manifestdatei mit Import-Package und ExportPackage Angaben (Beispiel) Manifest-Version: 1.0 Ant-Version: Apache Ant 1.6.2 Created-By: 1.4.2_06-b03 (Sun Microsystems Inc.) Bundle-Name: Log Service Bundle-SymbolicName: org.knopflerfish:Log Service:1.0.0 Bundle-Version: 1.0.0 Bundle-Description: The Knopflerfish OSGi log service Bundle-Vendor: Knopflerfish Export-Package: org.osgi.service.log; specification-version=1.2, org.knopflerfish.service.log; specification-version=1.1 Import-Package: org.knopflerfish.service.console, org.knopflerfish.service.log,org.osgi.framework, org.osgi.service.cm,org.osgi.service.log Bundle-UUID: org.knopflerfish:Log Service:1.0.0:all Build-Date: Wed December 29 2004, 14:06:16 Bundle-APIVendor: OSGi/Knopflerfish 31 OSGi Architektur Bundle Life Cycle • Von der OSGi Plattform oder von außen gesteuert • Bundle befindet sich zu jeder Zeit in einem definierten Zustand Quelle: OSGi Spec. v3, S. 58 32 OSGi Architektur Services • Service Registry – Zentrales Serviceverzeichnis für die OSGi Plattform – Abfrage des Verzeichnisses • Syntax angelehnt an LDAP Search Filter Syntax: (&(objectclass=org.service.PrinterService)(type=laser)) • Service – Funktionalität, die nach außen oder innerhalb der OSGi Plattform angeboten wird – Servicebeschreibung • Java Interface • zusätzliche Metainformationen über Name-Wert Paare – Service Spezifikationen: Log, HTTP, Preferences, IO Connector, JINI, UPnP, etc. 33 OSGi Architektur Bundles & Security • Applications / Bundles – Ein Bundle ist ein Softwarepaket, in einem Java Archiv Datei (JAR) verpackt – Beschreibung durch Manifestdatei – Verwaltung lokal und von entferntem Computer möglich • Security – Trennung der Bundles voneinander – Kontrollierte Zugriffe auf Ressourcen anderer Bundles – Ein Permission-basiertes Security Konzepts wird unterstützt 34 OSGi Architektur Event Model • Framework-, Bundle- und Service-Events • Ermöglicht dynamische Aktionen durch Verwendung von Event-Listener • Permanente Verfügbarkeit eines Services darf nicht angenommen werden 35 OSGi Einsatzgebiete OSGi Einsatzgebiete • Heimnetzwerk – Integration der Technologien und Protokolle im Heimnetzwerk – Residential Gateway (Schnittstelle zum Internet) 36 OSGi Einsatzgebiete OSGi Einsatzgebiete • Automobil – Immer mehr Software im Auto • Wiederverwendung von Softwarekomponenten • Updatemechanismen für die Softwarekomponenten – Aktualisierung der Komponenten ohne Plattform-Neustart • Mobile Endgeräte – Gemeinsame Nutzung von Ressourcen – Location-based Services • Embedded Devices – Integration verschiedener Bussysteme 37 OSGi Einsatzgebiete OSGi Einsatzgebiete • Application Server (Application = Bundle) – Trennung der Applications voneinander – Oft verwendete Bibliotheken können zwischen den Applications geteilt werden – Neustart / Update der Applications ohne Neustart der Laufzeitumgebung 38 OSGi Einsatzgebiete OSGi Einsatzgebiete • Erweiterungsmechanismus für Applikationen (Eclipse) – Integration von OSGi in Eclipse ab Version 3 – Vor Version 3 statischer Plugin Mechanismus • Plugins wurden nur beim Start erkannt Installation eines Plugins bedeutet Neustart Update eines Plugins bedeutet Neustart – OSGi als Standard für Plugin Runtime, vor Version 3 keine Spezifikation der Runtime – Durch klar spez. Runtime Rich Client Plattform möglich 39 OSGi Aktuelles Java Module System - JSR 277 • Java Specification Request (JSR) 277, vom 14. Juni 2005: Java Module System – – – – – – Auslieferungsformat für Java Module (soll JAR Format ersetzen) Versionierung und Abhängigkeitsverwaltung Repository Unterstützung von Java Module in der Java Virtual Machine Unterstützende Tools Voraussichtliche Integration in Java SE 7 (Ende 2007) 40 OSGi & Peer-to-Peer Inhalt • Peer-to-Peer (P2P) – – – – Von Client – Server zu P2P Ausblick Vorstellung JXTA Anwendungsgebiete für P2P Systeme • OSGi – Architektur – Einsatzgebiete • OSGi & Peer-to-Peer – Automatisierte Auflösung von Bundleabhängigkeiten • Fazit • Ressourcen • Kontakt 41 OSGi & Peer-to-Peer Bundleabhängigkeiten OSGi Plattform • Isolierte Betrachtung der OSGi Plattform – keine automatische Auflösung von Abhängigkeiten, manueller Eingriff notwendig install Bundle X dependency Bundle Y 42 OSGi & Peer-to-Peer Bundleabhängigkeiten Zentrales Bundle Verzeichnis • Zentrales Verzeichnis mit Pointer auf Speicherort eines Bundles • Repository mit einer Sammlung von OSGi Bundles Bundle Repository Bundle Y Internet 2 download&install 3 Bundle A Bundle B OSGI Plattform install Bundle X dependency Bundle Y 43 OSGi & Peer-to-Peer Bundleabhängigkeiten Zentrales Bundle Verzeichnis • Adresse des Verzeichnisses / Repositories muss bekannt sein • Verz./Repos. kann – Service einstellen – Adresse ändern – nicht erreichbar sein • Gesuchtes Bundle ist nicht im Repository • Ein neues Verz./Repos. wird nicht autom. erkannt und kann somit nicht genutzt werden • Dem Betreiber des Repositories entstehen Kosten, die er auf die Nutzer umlegen wird 44 OSGi & Peer-to-Peer Bundleabhängigkeiten Dezentraler OSGi Plattform Verbund • OSGi Plattformen in einem Verbund • Verbindung über ein Peer-to-Peer Netzwerk Bundle B Bundle Y Bundle C Bundle Z OSGI Plattform OSGI Plattform P2P Netzwerk 2 Download Request, Download & Install Bundle A Bundle B OSGI Plattform Suchanfrage 1 & Antwort Bundle X dependency Bundle Y 45 OSGi & Peer-to-Peer Bundleabhängigkeiten Dezentraler OSGi Plattform Verbund • Automatisierte Suche nach Bundles • Häufig verwendete Bundles sind hochgradig verteilt, bei weniger häufig verwendeten Bundles kann es vorkommen, dass sie nicht gefunden werden • Erweiterung der OSGi Plattform (Installationsvorgang) • Erweiterung der Manifest Datei – Export-Bundle Eintrag erlaubt die Freigabe des Bundles im Peer-to-Peer Netzwerk • Mapping der Manifest Datei auf ein JXTA Advertisement • Signatur des Bundleherstellers unbedingt notwendig 46 Schlussbetrachtung Fazit Fazit • JXTA und OSGi sind vom Konzept her vielversprechende Technologien • Die OSGi Konzepte bringen viele Vorteile beim Entwickeln von Software – Updatemechanismus – Abhängigkeitsverwaltung • Durch die Kombination mit JXTA könnte die Auflösung von Abhängigkeiten komplett automatisiert werden 47 Schlussbetrachtung Ressourcen Ressourcen (1) • Peer-to-Peer – Netzwerk Topologien • Dr. Cai Ziegler – Die Technik hinter modernen Peer-to-Peer-Netzen c‘t 2005, Heft 16 • Peer-to-Peer Eintagsfliege oder Zukunftsmodell? http://www.iicm.edu/research/seminars/ws_01/freismuth-peer2peer.pdf – Ausblick • Network Coding for Large Scale Content Distribution (Avalanche) http://www.research.microsoft.com/~pablo/papers/nc_contentdist.pdf – JXTA • JXTA v2.0 Protocols Specification http://spec.jxta.org/nonav/v1.0/docbook/JXTAProtocols.html • Joseph D. Gradecki – Mastering JXTA 48 Schlussbetrachtung Ressourcen Ressourcen (2) • OSGi – OSGi Spezifikation • OSGi Spec. v3, S. 58 – Java Module System, JSR 277 • http://www.jcp.org/en/jsr/detail?id=277 – The OSGi-Java Connection • http://www.aqute.biz/resources/osgi-java.pdf • TradingCenter – P2P Auction Platform – http://tradingcenter.jxta.org 49 Schlussbetrachtung Kontakt Danke für Ihr Interesse! Ronald Kutschke <[email protected]> Markus Block <[email protected]> 50