Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Elfriede Echternach Geändert vor über 11 Jahren
1
Studienarbeit: Filteralgorithmen für Benachrichtigungssysteme
Sven Bittner, 16.Juli 2002
2
Zielstellung Implementierung eines baumbasierten Filteralgorithmus
Bessere Filterperformance durch Umordnen der Attributreihenfolge Vergleich mit anderen Systemen Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
3
Baumalgorithmus (gough95)
40 a 10 c P1 20 50 P3,4,5 100 P4 P2 80 schnellster Filteralgorithmus (fabret00) Aufbau DFA aus Profilen Zustände: Attributtests Übergänge: Testauswertungen -Übergang: Nichtzutreffen aller regulären Kanten Endzustände: Profilmengen der Pfade Filtern durchlaufen des Baumes Benachrichtigen der Profile in Endzuständen Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
4
Baumalgorithmus - Beispiel
Profilmenge: P1: a=10, b=20, c=50 P2: a=40, b=10, c=80 P3: a=40, b=20, c=100 P4: a=40, c=100 P5: a=40, b=20, c=100 a 10 b c P1 20 50 P2 80 P4 100 c 10 20 b 40 P3,4,5 100 P4 100 Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
5
Baumalgorithmus - Zustandsübergänge
100.00, , 100.02, ..., P1 P1,2 500.00, , 500.02, ..., Elementaufzählungen - Speicherverbrauch: Wertebereich a: [0, 1000], 2 Dezimalstellen Prädikate: a>= 100, a>=500 Elemente: 90000 + ungeordnete Wertebereiche Intervalle (Implementierung) - geordnete Wertebereiche + Speicherverbrauch: 1 Intervall pro Übergang bzw. 1 Wert pro Übergang - Halboffenes Intervall Leerintervalle (Gleichheitstests) 100.00 a P1 P1,2 500.00 Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
6
Baumalgorithmus - Intervalle
Wertebereich: a: Profilmenge: P1: a=10 P2: a>20 P3: a<7 P4: a=40 a ..6 7..9 10..10 11..20 21..39 40..40 41.. P3 P1 P2 P2,3 Knoten: Arrays: Intervall Profile 6 P3 9 10 P1 20 39 P2 40 P2, 3 100 P2 Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
7
Systembeschreibung Datentypen: ganze Zahlen, Dezimalzahlen (mit Stellenzahl), Aufzählungen Wertebereiche: aus Datentypen definieren Operatoren: >, <, =, Mengentest, Bereichstest Attribut: Name, Wertebereich Ereignistyp: Name, Attributmenge Ereignis: Anbieter, Ereignistyp, Menge von Attribut-Wert-Paaren Profil: Ereignistyp, Prädikatmenge, Benachrichtigung(en) Prädikat: Attribut, Operator, Vergleichswert (z.B. a=10) Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
8
Implementierung Sprache: Java
Standarddatentypen und Felder statt Containerklassen der Bibliotheken Option: Native-Language-Code (C++) bei Performanceproblemen (JNI) relationale Datenbank für Speicherung persistenter Daten persitent: Abonnenten, Profile, Wertebereiche, Anbieter Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
9
Implementierung - Teilbäume
Speicherverbrauch bei 10 Attributen,1 Ereignistyp Problem Speicherverbrauch des Baumes Lösung identifizieren identischer Teilbäume gleiche Profilmengen gleiche Teilbäume Verbesserung Faktor 7000 (bei 40 Profilen) 35 30 25 20 Speicher in kB 15 10 5 10 15 20 25 30 35 40 250 200 150 Speicher in MB Zacken: zufällige Profilauswahl, Speicher je nach Überlappung der Profildefinitionen 100 50 10 15 20 25 30 35 40 Profilanzahl Teilbäume als Verweise Teilbäume als Kopien Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
10
Implementierung - Knotenzahl
0,1 0,2 0,3 0,4 0,5 0,6 0,7 100 125 150 175 200 225 250 275 300 Profilanzahl Zeit pro Ereignis in ms 1 Knoten je Attribut Baum Abw.: 1-2% Matchingzeit bei 10 Attributen, 1 Ereignistyp 0,002 0,004 0,006 0,008 0,01 0,012 0,014 Speicherverbrauch bei 10 Attributen, 1 Ereignistyp Problem Knotenzahl des Baumes Lösung kein Baum, nur 1 Knoten pro Attribut Schneiden der Profilmengen Verbesserung (Speicher) Faktor 42 (bei 300 Profilen) 2500 2000 1500 Speicher in kB 1000 500 100 125 150 175 200 225 250 275 300 100000 90000 80000 70000 60000 eine Ebene des DFA in 1 Knoten packen Speicher in kB 50000 40000 30000 20000 10000 100 125 150 175 200 225 250 275 300 Profilanzahl 1 Knoten je Attribut Baum Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
11
Implementierungsansatz - Verweise (1)
Problem Speicherverbrauch der Profilverweise Lösung Verweise als Bitliste Verweise als Zwischenraumliste (feste/variable Breite) Beispiel (1000 Profile, 1 Ereignistyp, 10 Attribute) 700 Kanten pro Knoten 700 Verweise pro Ausgangskante Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
12
Implementierungsansatz - Verweise (2)
Speicherverbrauch Objektverweise(Standardmethode) # Kanten * # Profile je Kante * Speicher Verweis * # Knoten = 700 * 700 * 4 * 10 = MB Bitliste Feld aller Profile + # Intervalle * Speicher Bitliste * # Knoten = 1000 * * (1000/8) * 10 = 858,4 KB Verbesserung Faktor 22 Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
13
Implem. - Verteilungsabhängigkeit (1)
Umordnung der Attribute im Baum zwei Ansätze (hinze02) A1: Anteil unbedeckter Wertebereich in Profilen A2: Anteil unbedeckter Wertebereich in Profilen unter Berücksichtigung der Wahrscheinlichkeit bei Ereignissen Nutzung: Übergabe der Profile / Ereignisse beim Aufbau der Filterstruktur Erweiterung: Historie + Umordnung bei Bedarf Umordnung hier == Änderung der Auswertungsreihenfolge A2 heisst, das die Ereignisse zu den Profilen nicht passen Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
14
Implem. - Verteilungsabhängigkeit (2)
sukzessives Schneiden nach jedem Attribut Abbruch (kein Profil passend) bei Erreichen der leeren Menge u.U. Probleme - Bsp: 10 Knoten sukzessives Schneiden: max. 18 Mengen schneiden 1 Schnitt: 10 Mengen schneiden Profile für jeden Event/kleine Attributanzahl 1 Schnitt aller Attribute schneller Matchingzeit bei 10 Attributen, 1 Eventtyp 2 4 6 8 10 12 500 750 1000 1250 1500 1750 2000 2250 2500 2750 3000 Profilanzahl Zeit pro Event in ms einmaliges Schneiden sukzessives Schneiden Matchingzeit bei 20 Attributen, 1 Eventtyp 14 16 18 20 Zeit per Event in ms Abw.: 1-2% 20 nicht so große Verbesserung: da nicht soviele Ereignisse passen und auch zufällige Reihenfolge große Wahrscheinlichkeit zu Ergebnis leere Menge Ende Auslagerung Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
15
Vergleichssysteme CORBA-Notification-Service (Common Object Request Broker Architecture) Schnittstellenbeschreibung der OMG Implementierung: OpenORB - Java NS baut auf CORBA-Standard auf Erweiterung des Event-Service (kein Filtern) getypte, strukturierte Ereignisse Elvin4 Implementierung in C, Ansprechen in Java verteilte Client-/Serverarchitektur keine getypten Ereignisse Simulation durch zusätzliches Attribut Abonnent: Typ als Prädikat ; Anbieter: zusätzl. Attribut-Wert-Paar OpenOrb - Java : Performance später sehen Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
16
Performance - steigende Profilzahl
Matchingzeit bei 10 Attributen, 10 Ereignistypen Anstieg etwa linear Elvin4 ca mal langsamer CORBA ca mal langsamer 12 10 8 Zeit pro Ereignis in ms 6 4 2 250 500 750 1000 1250 1500 1750 2000 1200 1000 800 Zeit pro Ereignis in ms 600 400 200 250 500 750 1000 1250 1500 1750 2000 Profilanzahl Abw.: 1-2% Filteralgorithmus CORBA Elvin4 Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
17
Performance - steigende Attributzahl
Matchingzeit bei 1 Ereignistyp, 500 Profilen Anstieg etwa linear Elvin mal langsamer CORBA mal langsamer Filteralgorithmus: Abweichung wegen sukzes. Schneiden 40 35 30 25 Zeit pro Ereignis in ms 20 15 10 5 1 3 5 7 9 11 13 15 17 19 2500 2000 1500 sukz. Schneiden: nicht alle Attribute müssen ausgewertet werden; je von zufälliger Event-/Profilverteilung abhängig Zeit pro Ereignis in ms 1000 500 1 3 5 7 9 11 13 15 17 19 Attributanzahl Abw.: 1-2% Filteralgorithmus CORBA Elvin4 Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
18
Performance - steigende Typanzahl
Matchingzeit bei 10 Attributen, 500 Profilen Elvin mal langsamer CORBA mal langsamer keine Typunterstützung kein Hindernis (zuerst Typtest) 20 18 16 14 12 Zeit pro Ereignis in ms 10 8 6 4 2 1 3 5 7 9 1800 1600 1400 1200 1000 Zeit pro Ereignis in ms 800 600 400 200 1 3 5 7 9 Ereignistypanzahl Abw.: 1-2% Filteralgorithmus CORBA Elvin4 Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
19
Systemvergleich - Zusammenfassung
Geschwindigkeit: Elvin mal langsamer CORBA mal langsamer Vergleichbarkeit: Filteralgorithmus: Ansprechen im gleichen Adressraum Elvin/CORBA: Kommunikation via TCP/IP (Sockets) COBEA zeigt ähnliche Geschwindigkeiten[Ma98] Verteilungstransparenz, interne Abläufe nicht bekannt/hier übertrieben Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
20
Ausblick (Diplomarbeit)
bessere Speichernutzung durch Bitlisten Umordnen (Auswertungsreihenfolge) nach Aufbau der Struktur Historie aller Ereignisse bzw. deren Verteilung Verteilung des Systems event. Einarbeitung anderer Filteransätze Composite Events (Diplomarbeit Steven) Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
21
Literatur [fabret00] - F. Fabret, F. Llirbat, J.Pereira, and D. Shasha. Efficient matching for content-based publish/subscribe systems. Technical report, INRIA, 2000. [gough95] - John Gough, Glenn Smith. Efficient Recognition of Events in a Distributed System. In Proceedings of the ACSC-18, 1995. [hinze02] - Annika Hinze, Sven Bittner. Efficient Distribution-Based Event Filtering. Proceedings of DEBS at ICDCS, 2002. [ma98] - Chaoying Ma, Jean Bacon. COBEA: A CORBA-Based Event Architecture. Cambridge, 1998. Sven Bittner - Filteralgorithmen für Benachrichtigungssysteme
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.