Vortrag

Werbung
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
Herunterladen