QoS-Middleware

Werbung
QoS-Middleware
am Beispiel des CORBA-ORBs TAO
Ansgar Konermann
E-Mail: [email protected]
15. November 2001
http://www-st.inf.tu-dresden.de/~ak26/slides/hs-ws0102/
Inhalt
'
'
Einleitung
' wesentliche Fragestellungen
Überblick
' CORBA-Architektur
' Beispiel-ORB TAO
' Einschub ACE
2
Inhalt (2)
'
QoS in CORBA
'
Unterstützung durch den ORB selbst
'
Unterstützung durch optionale CORBAErweiterungen und Dienste
'
Wichtige Informationsquellen
'
Zusammenfassung
3
Einleitung
Wesentliche Fragestellungen
'
Wie wird QoS durch CORBA unterstützt?
'
Wie weit wird diese Unterstützung von TAO
umgesetzt?
'
Welche Rolle spielt ACE hier?
'
Welche Voraussetzungen sind notwendig, damit
ein CORBA-System "echtzeitfähig/QoS-fähig
wird"? (insbesondere TAO)
4
Inhalt
'
'
Einleitung
' wesentliche Fragestellungen
Überblick
' CORBA-Architektur
' Beispiel-ORB TAO
' Einschub ACE
5
Überblick
CORBA-Architektur
6
Überblick: CORBA-Architektur
Request (1)
7
Überblick CORBA-Architektur
Request (2)
8
Überblick
Beispiel-ORB TAO
'
'
'
'
'
'
'
'
TAO: "The ACE ORB"
Volle CORBA 2.2/2.3 Unterstützung
Weitere Features: Echtzeitfähigkeit, Fehlertoleranz
Quelltext frei verfügbar (C/C++)
Kommerzieller Support verfügbar
Umfangreiche Online-Dokumentation
Entwicklung erfolgt in Zusammenarbeit mit
Industriepartnern (Auswahl):
'
Cisco, DARPA, Lockheed Martin, Microsoft, Siemens, Sprint
Implementiert auf Grundlage von ACE
9
Überblick: Beispiel-ORB TAO
TAO: Architektur
10
Überblick
Einschub ACE
'
ACE: "ADAPTIVE Computing Environment"
'
Klassenbibliothek/Framework: vereinfacht
Herstellung von verteilten Systemen
'
Ziele von ACE:
'
'
'
'
Erhöhte Portierbarkeit
Software-Qualität durch Verwendung von Mustern
Vorhersagbarkeit, Effizienz (QoS-Unterstützung!)
Weg: Abstraktionen auf unterschiedlicher Ebene
11
Überblick: Einschub ACE
ACE: Architektur
12
Überblick: Einschub ACE
ACE: Architektur (2)
'
"OS Adapter Layer": Plattformabhängigkeiten vor
höheren Schichten verstecken
'
"C++ Wrapper Facades": Typsichere
Schnittstellen zur Kapselung und Erweiterung
der OS-APIs
'
"Frameworks": integrieren und erweitern C++
Wrapper
'
"Distributed Services and Components":
'
wiederverwendbare Komponenten für häufige
Aufgaben in verteilten Systemen (Naming, Logging, ...)
13
Inhalt
QoS in CORBA
'
QoS in CORBA
'
Unterstützung durch den ORB selbst:
'
'
'
Repräsentation von QoS-Parametern: Policies
CORBA Messaging
Unterstützung durch optionale CORBAErweiterungen und Dienste
'
'
'
Real-Time CORBA
CORBA Notification Service
Audio/Video Streams Service (nicht weiter betrachtet)
14
QoS in CORBA: Unterstützung durch den ORB
Policies
'
Repräsentation von QoS-Parametern in CORBA
durch sog. Policies
'
Abstrakte Basisklasse: CORBA::Policy; CORBADienste leiten konkrete Policy-Klassen ab
'
ORB erzeugt Instanzen von CORBA::Policy:
create_policy()
'
Zahlreiche QoS-Klassen von OMG spezifiziert:
eindeutige Zuordnung eines "PolicyType"
'
TAO: Policies als solche voll unterstützt (Teil der
IIOP-Spezifikation)
15
QoS in CORBA: Unterstützung durch den ORB
Policies: Schnittstellen
PRGXOH%14$#^
W\SHGHIXQVLJQHGORQJ2QNKE[6[RG
LQWHUIDFH2QNKE[^
TGCFQPN[CVVTKDWVG2QNKE[6[RGRQNKE[AV[RG
3ROLF\FRS\
YRLGGHVWUR\
`HQG3ROLF\
W\SHGHIVHTXHQFH3ROLF\!2QNKE[.KUV
W\SHGHIVHTXHQFH3ROLF\7\SH!2QNKE[6[RG5GS
LQWHUIDFH14$^
3ROLF\ETGCVGARQNKE[
LQ3ROLF\7\SHW\SH
KPCP[XCN
UDLVHV3ROLF\(UURU
`HQG25%
`HQG&25%$
16
QoS in CORBA: Unterstützung durch den ORB
Policies: Festlegung
'
Auf Client-Seite:
'
'
'
'
'
Für gesamten ORB: ORBPolicyManager
Für aktuellen Thread: PolicyCurrent
Durch Methoden in CORBA::Object:
' Policies für ein einzelnes CORBA-Objekt
Auf Server-Seite:
'
'
Durch spezielle CORBA-Objekte:
Für einen POA: POA::create_poa()
Bei widersprüchlichen Policies auf Client- und
Serverseite: Lösungsmechanismus notwendig
17
QoS in CORBA: Unterstützung durch den ORB
Policies: Codebeispiel
CORBA::ORB_ptr orb = CORBA::ORB_init(argc, argv);
CORBA::Object_ptr pfobj =
orb->resolve_initial_references("RootPOA");
PortableServer::POA_ptr rootPOA;
rootPOA = PortableServer::POA::narrow(pfobj);
CORBA::PolicyList policies(2);
policies.length(2);
policies[0] = rootPOA->create_thread_policy(
PortableServer::ThreadPolicy::ORB_CTRL_MODEL);
policies[1] = rootPOA->create_lifespan_policy(
PortableServer::LifespanPolicy::TRANSIENT);
PortableServer::POA_ptr poa =
rootPOA->create_POA(my_little_poa,
PortableServer::POAManager::_nil(), policies);
18
Inhalt
QoS in CORBA
'
QoS in CORBA
'
Unterstützung durch den ORB selbst:
'
'
'
Repräsentation von QoS-Parametern: Policies
CORBA Messaging
Unterstützung optionalen CORBA-Erweiterungen
und CORBA-Diensten
'
'
'
Real-Time CORBA
CORBA Notification Service
Audio/Video Streams Service (nicht weiter betrachtet)
19
QoS in CORBA: Unterstützung durch den ORB
CORBA Messaging
'
'
'
'
Einführung neuer Methodenaufruf-Semantiken:
'
'
bisher: synchrone Aufrufe (two/one-way, def. synchr.)
neu: asynchronous method invocation (AMI)
Callback vs. Polling
Routing von asynchronen Aufrufen möglich
'
'
Request und Reply zeitlich unabhängig: mobile bzw. temporär
vom Netz abgekoppelte Clients/Server möglich
Router können Request/Reply zustellen
TAO: Unterstützung unvollständig (Kennzeichnung
unterstützter Features: Feature)
20
QoS in CORBA: CORBA Messaging
AMI Routing
21
QoS in CORBA: CORBA Messaging
QoS Parameter
'
'
'
'
'
RebindPolicy: Transparenz von Migration und
Verbindungsabbrüchen
Prioritäten für Request/Reply (sync/async)
Start-/Endzeiten für Request/Reply (sync/async)
Routing:
'
'
Art: keins, "forward", "store and forward"
Max. Anzahl Zwischenstationen
QueueOrderPolicy: Anfragen im Router sortieren
'
"egal", zeitlich, nach Priorität, nach Deadline
22
Inhalt
QoS in CORBA
'
QoS in CORBA
'
Unterstützung durch den ORB selbst:
'
'
'
Repräsentation von QoS-Parametern: Policies
CORBA Messaging
Unterstützung durch optionale CORBAErweiterungen und -Dienste
'
'
'
Real-Time CORBA
CORBA Notification Service
Audio/Video Streams Service (nicht weiter betrachtet)
23
RT-CORBA
Was ist RT-CORBA?
'
'
Erweiterung von Standard-CORBA
'
Bestandteil der CORBA 2.4 Spezifikation
'
Optional: nicht jeder CORBA 2.4 ORB muss RTCORBA unterstützen
TAO: teilweise Unterstützung ("work in
progress")
24
RT-CORBA
Ziele der Spezifikation
'
'
'
'
Erleichterung, um Ende-zu-Ende Vorhersagbarkeit zu
erreichen
Unterstützung bei der Verwaltung von Ressourcen
Allgemeinheit: geeignet für weiche und harte RTAnforderungen
Nicht Ziel: Portabilitäts-Schicht für RTOS bereitstellen
'
'
besser: "POSIX real-time extensions" verwenden
Spezifikation kompatibel mit POSIX Extensions
25
RT-CORBA
Ende-zu-Ende Vorhersagbarkeit
'
Notwendige Voraussetzung: alle
Systemkomponenten müssen RT unterstützen:
'
'
'
'
Betriebssystem (Scheduling-Mechanismus)
CORBA ORB
Kommunikationsschicht (Netzwerk)
Anwendung selbst
'
RT-CORBA erleichtert RT-fähige Kombination
dieser Komponenten (nicht: garantiert)
'
TAO: wenig konkrete Informationen
(beispielsweise als "Systemanforderungen")
26
RT-CORBA
Architektur
27
RT-CORBA
Prioritäten
'
Prioritäten des verwendeten OS: Native
Thread Priorities
'
Prioritäten in CORBA: CORBA Priority
'
PriorityMapping: Abbildung CORBA-Priority
nach Native und umgekehrt
'
Priority Models:
' Client Propagated
' Server Declared
28
RT-CORBA
Prioritäten: Schnittstellen
module RTCORBA {
typedef short Priority;
const Priority minPriority = 0;
const Priority maxPriority = 32767;
};
module RTPortableServer {
local interface POA : PortableServer::POA {
Object create_reference_with_priority (
in CORBA::RepositoryId intf,
in RTCORBA::Priority priority )
raises ( WrongPolicy );
ObjectId activate_object_with_priority (
in PortableServer::Servant p_servant,
in RTCORBA::Priority priority )
raises ( ServantAlreadyActive, WrongPolicy );
// ...
}; // end POA
}; // end RTPortableServer
29
RT-CORBA
Prioritäten: Codebeispiel
// Servant-Implementierung
class MyFooServant : public POA_Foo {
public:
MyFooServant(POA_ptr poa, Long value){
// ...
}
//...
};
// Hauptprogramm:
// Servant-Objekt erzeugen und aktivieren
MyFooServant* afoo = new MyFooServant(poa, 27);
PortableServer::ObjectId_var oid =
poa->activate_object_with_priority(afoo, 42);
Foo_var foo = afoo->_this();
// ORB "starten"
poa->the_POAManager()->activate();
orb->run();
// ...
RT-CORBA
Mutex
'
Hilfsmittel bei Koordinierung von Wettbewerb um
Betriebsmittel ("Sperre")
'
Zusätzliche Maßnahmen zur Verhinderung von
Prioritätsumkehr bei Threads
'
'
durch "Priority inheritance" (vgl. VL EZS, Prof. Härtig)
muss von Mutex-Implementierung berücksichtigt
werden
'
RTCORBA::Mutex bietet Schnittstelle zur MutexImplementierung des RT-ORB
'
TAO: volle Unterstützung
31
RT-CORBA
Threadpools
'
'
'
Hilfsmittel zur serverseitigen Thread-Verwaltung
'
Anzahl von Threads zu einem "Pool" zusammengefasst
Möglichkeiten:
'
'
'
'
Zuweisung von Prioritäten zum ThreadPool
Threaderzeugung im Voraus
Begrenzung der maximalen Thread-Anzahl
Pufferung eingehender Anfragen
Erzielbare Effekte:
'
'
Verringerung von Prioritätsumkehr, Latenz
Erhöhung der Vorhersagbarkeit
32
RT-CORBA
Weitere Features
' Getrennte Netzwerkverbindungen für Requests gleicher
Priorität (priority banded connections)
' Anforderung exklusiver Netzwerkverbindungen, kein
Multiplexing von Anfragen (private connections)
' Zeitschranken für Requests (relative roundtrip timeout)
' Anwendung kann Protokoll auf Server- und Clientseite
einstellen (TAO: IIOP, UIOP, SHMIOP, SSLIOP, DIOP)
' Scheduling Service vereinfacht korrekte Anwendung der
RTCORBA-Erweiterungen
33
Inhalt
QoS in CORBA
'
QoS in CORBA
'
Unterstützung durch den ORB selbst:
'
'
'
Repräsentation von QoS-Parametern: Policies
CORBA Messaging
Unterstützung durch optionale CORBAErweiterungen und -Dienste
'
'
Real-Time CORBA
CORBA Notification Service
34
QoS in CORBA
Notification Service
'
Austausch asynchroner Nachrichten:
'
Publisher/Subscriber-Modell
'
'
'
Supplier - Channel - Consumer
Erweitert CORBA Event Service:
'
Filterung von Nachrichten
'
Einstellung von QoS-Parametern
Abwärtskompatibilität
35
QoS in CORBA: Notification Service
Architektur (vereinfacht)
36
QoS in CORBA: Notification Service
Properties
'
QoS-Eigenschaften durch Properties
repräsentiert (nicht: Policies)
'
Einstellen der Eigenschaften:
'
Mit Getter/Setter-Methoden:
'
'
'
'
Channel, SupplierAdmin, ConsumerAdmin, ProxySupplier,
ProxyConsumer
Abstrakte Basisklasse QoSAdmin, o. g. Klassen erweitern
Schnittstelle
In speziellem Datenfeld:
'
Auch für einzelne (strukturierte) Events
Hierarchische Gültigkeitsbereiche (absteigende
Priorität): Event, Proxy, Admin, Channel
37
QoS in CORBA: Notification Service
QoSAdmin: Schnittstelle
module CosNotification {
interface QoSAdmin {
QoSProperties get_qos();
void set_qos ( in QoSProperties qos )
raises ( UnsupportedQoS );
void validate_qos (
in QoSProperties required_qos,
out NamedPropertyRangeSeq available_qos )
raises ( UnsupportedQoS );
}; // QosAdmin
// ...
};
38
QoS in CORBA: Notification Service
Properties: Schnittstelle
module CosNotification {
typedef string Istring;
typedef Istring PropertyName;
typedef any PropertyValue;
struct Property {
PropertyName name;
PropertyValue value;
};
typedef sequence<Property> PropertySeq;
typedef PropertySeq QoSProperties;
// ..
};
39
QoS in CORBA: Notification Service
QoS-Parameter
'
'
'
'
'
'
Verlässlichkeit: EventReliability, ConnectionReliability
Event-Priority, Expiry times (StopTime, Timeout)
Earliest Delivery Time
Maximum Events per Consumer (Queue-Optimierung)
Order Policy, Discard Policy
Maximum Batch Size, Pacing Interval (für Empfänger
von Ereignis-Folgen/sequences)
40
Inhalt
Wichtige Informationsquellen
'
QoS in CORBA
'
Unterstützung durch den ORB selbst
'
Unterstützung durch optionale CORBAErweiterungen und Dienste
'
Wichtige Informationsquellen
'
Zusammenfassung
41
Wichtige Informationsquellen (1)
'
Object Management Group:
' "The Common Object Request Broker. Architecture
and Specification", ab Revision 2.4 (00-10-01)
'
'
'
'
'
ORB-Unterstützung für QoS (Policies, CORBA-Messaging)
RT-CORBA
"Notification Service Specification", Version 1.0
(00-06-20)
"Audio/Video Stream Specification", Version 1.0
(00-01-03)
Einstiegspunkt CORBA: http://www.omg.org/corba
42
Wichtige Informationsquellen (2)
'
Distributed Object Computing Group:
'
'
'
'
'
'
Große Informationsfülle, nicht immer optimal strukturiert
Einstiegspunkt zu ACE:
http://www.cs.wustl.edu/~schmidt/ACE.html
Einstiegspunkt zu TAO:
http://www.cs.wustl.edu/~schmidt/TAO.html
USENET: news:comp.soft-sys.ace
Mailinglisten: http://www.cs.wustl.edu/~schmidt/TAO-mail.html
Kommerzieller Support:
'
'
http://www.ociweb.com
"TAO Developer's Guide version 1.1a"
43
Wichtige Informationsquellen (3)
'
Literatur:
'
'
'
Jon Siegel: "CORBA 3. Fundamentals and Programming.
Second Edition", New York 2000 (OMG Press)
Michi Henning, Steve Vinoski: "Advanced CORBA Programming
with C++", Reading, Massachusetts 1999 (Addison Wesley
Longman)
Ergänzende Lehrveranstaltungen:
'
'
Prof. H. Härtig: "Echtzeitsysteme"
Dr. rer. nat. Cl.-J. Hamann: "Quantitative Methoden der
Betriebssysteme-Konstruktion"
44
Zusammenfassung
'
QoS/RT muss von jeder beteiligten
Systemkomponente unterstützt werden
'
CORBA bietet Hilfsmittel an, um ein QoS/RTfähiges Gesamtsystem zu bauen
'
Keine einheitliche "QoS-Spezifikation"
'
TAO implementiert Großteil der QoS/RTFeatures von CORBA
'
QoS/RT weiterhin Forschungsgegenstand
45
Vielen Dank.
Herunterladen