Siena - Cornell Computer Science
Download
Report
Transcript Siena - Cornell Computer Science
Advanced Publish/Subscribe
Communication Services
Antonio Carzaniga and Alexander L. Wolf
University of Colorado at Boulder
Boulder, Colorado USA
{carzanig,alw}@cs.colorado.edu
About the Tutors
Antonio
Carzaniga
– PhD: Politecnico di Milano, Italy
– Previously at CEFRIEL
Alexander
L. Wolf
– PhD: University of Massachusetts, Amherst USA
– Previously at AT&T Bell Laboratories
General
research interests
– software engineering, distributed systems,
security, and networking
– Developers of the Siena pub/sub system
Outline
What
is publish/subscribe communication?
Service models
Implementation models
Survey of representative pub/sub systems
Using publish/subscribe communication
Advanced topics
Outline
What
is publish/subscribe communication?
Service models
Implementation models
Survey of representative pub/sub systems
Using publish/subscribe communication
Advanced topics
Origins of Publish/Subscribe
Database
triggers
– Ingres
client
Message-oriented
client 2
middleware
mailbox
– IBM MQSeries
mailbox
client 1
Message-based
– Field
– Sun ToolTalk
– DEC Fuse
software bus architecture
client 1
client 2
bus
client 3
Common Characteristics
Asynchrony
– send and forget
Reactive
– computation driven by receipt of message
Location/identity
abstraction
– destination determined by receiver, not sender
Loose
coupling
– senders/receivers added without reconfiguration
– one-to-many, many-to-one, many-to-many
Levels of Deployment
From
machines to whole networks
– Single machine
» call back, signal
– LAN
» RPC
– WAN
» client/server, overlay router network
Single
machine/LAN solutions are mature
WAN (e.g., the Internet) solutions still require
significant new research advances
Basic Approaches to Publish/Subscribe
Listener
model
– receivers register with senders
– sender/receiver communication is point-to-point
Database
trigger model
– “senders” update tables
– “receivers” (or internal code) notified of changes
Broker
model
– receivers register with common message broker
– sender/receiver communication is mediated by
message broker through a middleware service
Publish/Subscribe Middleware Service
want
low air fares
to Europe
subscribe
notification
want
special offers
by United
publish
notify
publication
publish/subscribe
service
subscription
want to fly
December
DEN-MXP
United offers
DEN-MXP
October
subscriber
publisher
Alitalia offers
DEN-MXP
Nov-Feb
Sampling of Applications
Gaming
Workflow
Auctioning
Intrusion
detection
Network management
Application
management
File
sharing
Sensor grids
News distribution
Group communication
Resource discovery
Software component
integration
General Goals and Objectives
Dynamic
integration of heterogeneous
computing and information services
Timely
information dissemination
Support
for loosely-coupled, distributed
applications
Scalable
deployment
Outline
What
is publish/subscribe communication?
Service models
Implementation models
Survey of representative pub/sub systems
Using publish/subscribe communication
Advanced topics
Basic Elements of a Service Model
Data
model
– structure
– types
Subscription
model
– filter language
– scope
– subscription modifications
General
challenge
– expressiveness versus scalability
Data Model
Fare Offer
United DEN MXP 850 USD
string
United
getAirline
DEN
MXP
850
USD
setAirline
getOrigin
list of values
setOrigin
Airline
United
Origin
DEN
Destination
MXP
Price
850
Currency
USD
set of named values
<fare-offer>
<al>United</al>
<orig>DEN</orig>
<dest>MXP</dest>
<price>850</price>
<cur>USD</cur>
</fare-offer>
tree of named values
getDestination
setDestination
getPrice
setPrice
getCurrency
setCurrency
full type system
Subscription Model: Filter Language
Operators
string
are implied by the data model
prefix, suffix, substring, regular
expression
list
value operators + indexing
named values value operators + selection
tree
value operators + structure walk
full type
user-defined operators
Example: Siena Data Model
A
publication is a set of typed attributes
attribute ≡ (type,name,value)
string
date
date
string
string
string
float
string
class
starts
expires
origin
destination
carrier
price
currency
=
=
=
=
=
=
=
=
travel/airlines/offers
Jun
Aug
DEN
MXP
United
850
USD
Example: Siena Filter Language
A
filter is a list of attribute constraints
attribute constraint ≡ (type,name,operator,value)
string
date
date
string
string
class
starts
expires
origin
destination
>*
<
>
=
=
travel/airlines/
Jul
Jul
DEN
MXP
Example: Siena Matching Rules
Matching
is defined by covering relations
p matches f (or f covers p)
publication p
refundable = no
price = 850
destination = MXP
airline = United
filter f
airline = United
price < 900
price > 300
destination any
Scope/Expressiveness of Subscriptions
Channel
joinChannel(37)
– channel identifier
– equality over channel
identifiers
Subject
(or topic)
– designated subject field
– general filter applied to
designated field
Content
channel
37
Subject
Fare Offer
Airline
United
Origin
DEN
Destination
MXP
Airline
Price
Fare Offer
Currency
United
Origin
DEN
Destination
MXP
Price
850
Currency
USD
Subject
subscribe(“Origin=DEN,Price<900”)
– all message fields
– general filter applied to
full message content
850
USD
subscribe(“Fare”)
Subject
Fare Offer
Airline
United
Origin
DEN
Destination
MXP
Price
850
Currency
USD
Multicast vs. Content-Based Pub/Sub
Multicast Service
Content-Based Service
joinGroup(IF,group)
leaveGroup(IF,group)
ip_send(datagram)
ifconfig(IF,predicate)
ifconfig(IF,false)
send(message)
dest=224.11.22.33
resource=printer
resource=printer
language=PS
dest=224.11.22.33
224.11.22.33
dest=224.11.22.35
resource=printer
language=plc5
224.11.22.35
224.11.22.34
resource=printer
status=ready
dest=224.11.22.34
maker= HP
age > 3
partition
arbitrary subsets
Multicast vs. Content-Based Pub/Sub
Special
case of content-based pub/sub
– joining multicast group g is equivalent to defining
a receiver predicate that selects messages
addressed to g
Multicast
designed for streaming media
– relatively stable set of groups and membership
– simple channel-based interface
Content-based
pub/sub is intended to
support unpredictable interaction patterns
– sophisticated content-based interface
Some Filter Language Issues
Negation
operator
increased expressiveness
unclear utility
User-defined
set-of(f) ≡ pub \ set-of(f)
operator
increased expressiveness
unpredictable execution md5-hash(signature) = “7dc81ef”
Patterns
increased expressiveness
unclear choice of semantics
unpredictable execution
(f1f2)* (f3|f4)
Example: Siena Filter Pattern
A
pattern correlates messages of interest
f = f1 followed by f2
filter f1
airline = United
price < 900
price > 300
destination any
filter f2
airline = United
price < 1200
price 900
destination any
Subscription Modifications
Incremental
style
– effect of each subscription is “additive”
– new filter represents logical relation among
subscriptions
– service must provide an explicit unsubscribe
command
– client must “remember” subscription history
Subscribe-and-forget
style
– effect of each subscription is complete
– no need for unsubscribe nor history
Incremental Subscriptions
airline = United
price < 400
=
airline = United
price < 400
=
airline = United
price < 400
=
airline = United
price < 900
=
airline = United
price < 900
=
airline = United
destination = MXP
airline = United
destination = MXP
airline = United
destination = MXP
airline = United
destination = MXP
airline = United
destination = MXP
airline = United
price < 900
airline = United
price < 650
airline = United
price < 900
Subscribe and Forget
airline = United
price < 400
=
airline = United
price < 400
=
airline = United
destination = MXP
=
airline = United
price < 900
=
airline = United
price < 650
airline = United
destination = MXP
airline = United
price < 900
airline = United
price < 650
f1
f2
=
f1
f2
Outline
What
is publish/subscribe communication?
Service models
Implementation models
Survey of representative pub/sub systems
Using publish/subscribe communication
Advanced topics
Basic Elements of Implementation Model
Architecture
– centralized
– static routing, federation, replication
– store-and-forward routing
– peer-to-peer versus client/server
Platform
– multicast, TCP overlay, CORBA, active
distributed database, web services
Gateways
General Service Implementation
subscribe
notify
publish
publish/subscribe service
Publications
must meet subscriptions somewhere
Service must decide whether publications match
subscriptions
Service must notify subscribers
Centralized Implementation
subscribe
notify
server/dispatcher/broker
publish/subscribe service
publish
Evaluating Centralized Implementation
Simple
– every (client) application sends subscriptions
and publications to a single server
– the server maintains and evaluates all
subscriptions locally
But not very “scalable”
– one server handles every subscription and every
message of every client
– the server becomes a network bottleneck
– all clients must trust the same server (privacy)
Naïve Extension: Broadcast Replication
replicated servers
subscribe
Publications
notify
publish
are relayed to every server
Subscriptions remain local to their servers
Evaluating Broadcast Replication
Simple
– hopefully making use of network-level broadcast
Reduces computation
– only local subscriptions
– same number of publications
Still not very scalable
– little flexibility
– little privacy
– increased network traffic
Another Simple Extension: Federation
conditional relay
subscribe
notify
publish
2 …
…
1
3
… 4
Import/export
statements
Static, user-defined routes
…
x,y,a,b 1
x,a,~b 3
x,y,z
4
Evaluating Federation
Reduces traffic
– only imported/exported traffic goes through
Improves privacy
Reduces computation
– local subscriptions plus import/export
Still not very scalable
– little flexibility
– suboptimal network usage
– potential errors due to misconfiguration
Advanced: Fully Distributed Architecture
dynamic routing
subscribe
…
…
…
…
…
…
…
…
…
Advanced: Fully Distributed Architecture
dynamic routing
subscribe
notify
…
publish
…
…
…
…
…
…
…
…
Dynamic Routing
Servers
are interconnected through statically
configured links
Servers function as store-and-forward
publication dispatchers
Servers exchange subscription information
according to a routing protocol
Servers forward publications according to
– subscription information
– forwarding protocol
Evaluating Fully Distributed Architecture
Increases reliability
– exploiting multi-connected topologies
Adapts automatically
– to changes in applications (subscriptions)
– to changes in network (topology)
Reduces computation and communication
– using optimized routing and forwarding
Requires complex protocols
– to handle topological routing information
– to handle content-based routing information
Example: Hierarchical Routing
simple extension of centralized server
…A
“master” server
connection
…1
…1
1
3
2
B
A
1
3
C
2
5
4
Example: Hierarchical Routing
simple extension of centralized server
…A
“master” server
connection
…1
…1
1
3
2
B
A
1
3
C
2
5
4
Evaluating Hierarchical Routing
Reduces traffic and computation
– “leaf” nodes process only local traffic and traffic
that matches local subscriptions
» no unnecessary traffic goes down the hierarchy
Still not very scalable
– root server processes every subscription and
publication
Hierarchical Routing Improved
combine and simplify subscriptions
S1 A
B
S1 1
S1
A
S1
1
3
2
Hierarchical Routing Improved
combine and simplify subscriptions
S1 A
S1 covers S2
S1=[airline=“UA”]
S2=[airline=“UA”, dest=“MXP”]
do not propagate S2
B
S1 1
S2 2
1
A
S2
2
3
Hierarchical Routing Improved
combine and simplify subscriptions
S1* A
S1 covers S2
S1=[airline=“UA”]
S2=[airline=“UA”, dest=“MXP”]
do not propagate S2
B
S1 1
S2 2
S3 3
S*
A
S1 ,S2, and S3 are similar
S3
1
3
2
S1=[airline=“UA”]
S2=[airline=“UA”, dest=“MXP”]
S3=[airline=“AZ”]
propagate S*=[airline=any]
Evaluating Improved Hierarchical Routing
Reduce traffic and computation
– only “new” subscriptions are propagated
– servers store and process fewer, more generic
subscriptions
Open to a variety of heuristic optimizations
– e.g., based on actual traffic profiles
Applies to other architectures
– concept of “content-based subnet address”
(see demonstration)
Other Considerations
Reliability
– reliable transfer and storage of subscriptions
– reliable transfer of publications
» assured delivery
» causal ordering
Value-added
services
– support for temporarily disconnected clients
– support for mobile clients
– publication history service
– authentication service
Outline
What
is publish/subscribe communication?
Service models
Implementation models
Survey of representative pub/sub systems
Using publish/subscribe communication
Advanced topics
Survey
Standards
Research
– CORBA Notification
Service
– Java Message Service
Commercial
–
–
–
–
systems
FioranoMQ
IBM WebSphere MQ EB
TIBCO Rendezvous
IBM Gryphon
–
–
–
–
–
–
systems
Le Subscribe
Elvin
Hermes
Steam
JEDI
Siena
Caveat
– not all features of the systems are presented
OMG’s CORBA Notification Service
Data
model: predefined message object
– header contains standard attribute/value pairs
and user-defined attribute/value pairs
– body contains user-defined attribute/value pairs
and user-defined “any” field
Scope/expressiveness
– publishers publish to a topic channel
– content-based filters applied to standard
attribute/value pairs and body’s user-defined
attribute/value pairs
CORBA Notification Service (cont.)
Filter
language
– filters modeled as objects containing constraints
– constraints correspond to a standard grammar
– operators are SQL-like
Sun’s Java Message Service
Data
model: predefined message object
– header contains standard attribute/value pairs
– properties are user-defined attribute/value pairs
– body comes in five standard types
» stream, map, text, object, uninterpreted bytes
Scope/expressiveness
– publishers publish to a topic channel
– content-based filters applied to header attributes
and properties
Filter
language: SQL-like
Fiorano’s FioranoMQ
Data
model
– compliant with JMS 1.1
– also supports XML documents as messages
Scope/expressiveness
– compliant with JMS 1.1
Filter
language
– compliant with JMS 1.1
– also supports XPath queries over XML
messages
Fiorano’s FioranoMQ (cont.)
Implementation
model
– “hub and spoke” (i.e., centralized broker)
– centralized brokers can be federated using
“repeaters”
– a repeater is a JMS client (statically) configured
to bridge between brokers
repeater
IBM’s WebSphere MQ Event Broker
Data
model
– headers and attribute/value pairs
– also supports XML documents in message body
Scope/expressiveness
– topic-based publication and subscription
– “subscription point” property of a publisher
» allows subscribers to identify desired publisher set
– filters applied to topics and content
Filter
language
– SQL and XPath
WebSphere MQ Event Broker (cont.)
Implementation
model
– broker and clients use message queues
– brokers can be federated, with subscription
information shared among federation members
» tree of brokers
» collective of fully connected brokers (i.e., broadcast
replication)
» tree of collectives
WebSphere MQ Event Broker (cont.)
Value-added
services
– compliance with JMS 1.0.2
– publications can be retained for later retrieval
» implies database support
– brokers can be configured to apply application
processing logic to publications
» e.g., converting currency values
– publication ordering
» sequence number or time stamp
TIBCO’s Rendezvous
Data
model
– subject field consisting of a list of strings
– opaque body
Scope/expressiveness
– filters applied to subject field
Filter
language
– indexed
– string equality and limited regular expression
TIBCO’s Rendezvous
Implementation
model
– federated brokers
– statically configured sharing among brokers
IBM’s Gryphon
Data
model
– attribute/value pairs
Scope/expressiveness
– both subject- and content-based filtering
Filter
language
– SQL-like
Implementation
model
– fully connected, replicated brokers
Sampling of Research Systems
Le
Subscribe (INRIA/NYU/Univ. of Toronto)
– high-performance matching algorithm
Elvin
(DSTC, Australia)
– publisher-side filtering (“quenching”)
Hermes
(Cambridge Univ., UK)
– typed data model
– routing based on per-type “rendezvous” points
» message unicast to rendezvous point, disseminated
to tree of subscribers (c.f., IP multicast routing)
Sampling of Research Systems (cont.)
Steam
(Trinity College, Dublin)
– publish/subscribe in ad hoc networks
– “proximity” filters, in addition to subject and
content filters
JEDI
(Politecnico di Milano/CEFRIEL)
– publish/subscribe for mobile clients
– uses explicit “moveOut” and “moveIn” functions
Siena
(Univ. of Colorado, USA)
– scalability through fully distributed architecture
– filter optimization
Outline
What
is publish/subscribe communication?
Service models
Implementation models
Survey of representative pub/sub systems
Using publish/subscribe communication
Advanced topics
Using Publish/Subscribe Systems
Siena
– research prototype
– mature implementation
– focus on distributed architecture
– advanced implementation features
JMS
– industry “standard”
– several implementations
– focus on Java integration and smaller-scale
applications
– rich interface
Siena
Fully
functional publish/subscribe service
– first release: 1998
– available for anonymous download
http://www.cs.colorado.edu/serl/siena/
Content-based
subscription language
– SQL-like data model and operators
Java
and C++ implementations
Basic security through SSL
Integrated with XML
Architected as a distributed service
Sampling of Registered Users
.EDU
– CMU, Columbia, Dartmouth, Indiana Univ., MIT,
Oregon, UCI, UMass, Imperial College, TUVienna, FU-Berlin, Univ. of Toronto, Univ.
College London, Univ. of Bologna, Univ. of Oslo,
Univ. of Manitoba, Univ. de Valladolid
.COM
– Objsys, Tecknowledge, Lockheed Martin,
MITRE Corp., Boeing, Siemens AG Austria, Air
France, Borland, Organix Consulting,
Diverminds, DataVision Consulting Inc.
Hello World!
HelloWorld.java
import siena.*;
public class HelloWorld {
public static void main(String [] args)
throws SienaException {
Siena siena = new ThinClient("tcp:host.domain.net:1234");
Notification n = new Notification();
n.putAttribute("greeting", "Hello World!");
siena.publish(n);
}
}
Compiling and Running
> javac -classpath siena.jar HelloWorld.java
> java -classpath siena.jar
Exception in thread "main" siena.comm.PacketSenderException:
Connection refused
at
siena.comm.TCPPacketSender.send(TCPPacketSender.java:80)
at siena.ThinClient.publish(ThinClient.java:384)
at HelloWorld.main(HelloWorld.java:9)
We need to set up a server to connect to…
Setting up a Siena Network
First we start up a server to…
server address:
“tcp:host1:1234”
on host1
> java -classpath siena.jar \
siena.StartServer -port 1234
1
Then we connect other servers…
on host2
> java -classpath siena.jar \
siena.StartServer -port 2222 \
-master tcp:host1:1234
on host3
> java -classpath siena.jar \
siena.StartServer -port 3333 \
-master tcp:host1:1234
on host4
> java -classpath siena.jar \
siena.StartServer -port 4444 \
-master tcp:host3:3333
2
3
4
Siena Connectors and Addresses
Siena
communications
– one-way, message oriented
– receiver creates a Receiver object
– sender creates a Sender object
» passing the address of the Receiver object to a
SenderFactory
Address
::= connector-type:type-specific-part
– available connector types
» tcp:host:port
» udp:host:port
» ka:host:port
» ssl:host:port
Back to Our Example…
> java -classpath siena.jar:. HelloWorld
Nothing happens: there are no subscribers, so the notification
goes nowhere
We need a subscriber to complete the HelloWorld example
Hello World Subscriber
Subscriber.java
import siena.*;
public class Subscriber implements Notifiable {
public void notify(Notification n) {
System.out.println(e);
}
public static void main(String [] args)
throws SienaException {
Siena siena = new ThinClient(args[0]);
Filter f = new Filter();
f.addConstraint("greeting", Op.PF, "Hello");
siena.subscribe(f, new Subscriber());
}
}
Hello World!
The Siena network is up and running
So, we first run the subscriber…
> java -classpath siena.jar:. Subscriber tcp:localhost:1234
event{
greeting="Hello World!"}
And then run the publisher…
> java -classpath siena.jar:. HelloWorld
>
Synchronous Subscriber
SynchronousSubscriber.java
import siena.*;
public class SynchronousSubscriber {
public static void main(String [] args) throws Exception {
Siena siena = new ThinClient(args[0]);
Filter f = new Filter();
f.addConstraint("greeting", Op.PF, "Hello");
NotificationBuffer buf = new NotificationBuffer();
siena.subscribe(f, buf);
Notification n = buf.getNotification(-1); // wait forever
System.out.println(n);
siena.shutdown();
}
}
HelloWorld in JMS [JMS Documentation]
Get
a ConnectionFactory through JNDI
Get a Destination (i.e., Topic) through JNDI
Get a Connection from the ConnectionFactory
Get a Session from the Connection
Create a MessageProducer from Session and
Destination
Create a Message from the Session
Fill in message data
Send the Message through the MessageProducer
JMS HelloWorld Publisher
JMSHelloWorld.java
import javax.naming.*;
import javax.jms.*;
public class JMSHelloWorld {
public static void main(String [] args) throws Exception {
Context context = new InitialContext();
ConnectionFactory cf;
cf = (ConnectionFactory)context.lookup("ConnectionFactory");
Topic greetings = (Topic)context.lookup("Greetings");
Connection connection = cf.createConnection();
Session session
= connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
MessageProducer sender = session.createProducer(greetings);
TextMessage m = session.createTextMessage();
m.setText("Yo!");
m.setStringProperty("greeting", "Hello World!");
connection.start();
sender.send(m);
}
}
JMS (Synchronous) Subscriber
JMSSubscriber.java
import javax.naming.*;
import javax.jms.*;
public class JMSSubscriber {
public static void main(String [] args) throws Exception {
Context context = new InitialContext();
ConnectionFactory cf;
cf = (ConnectionFactory)context.lookup("ConnectionFactory");
Topic greetings = (Topic)context.lookup("Greetings");
Connection connection = cf.createConnection();
Session session
= connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
MessageConsumer receiver = session.createConsumer(greetings);
connection.start();
TextMessage m = (TextMessage)receiver.receive(5000); // 5 sec
System.out.println(m.getText());
}
}
JMS (Asynchronous) Subscriber
JMSAsyncSubscriber.java
import javax.naming.*;
import javax.jms.*;
class HelloListener implements MessageListener {
public void onMessage(Message message) {
System.out.println(message);
}
}
public class JMSAsyncSubscriber {
public static void main(String [] args) {
//
// ...Initialization...
//
receiver.setMessageListener(new HelloListener());
connection.start();
}
}
Content-Based Subscriptions in JMS
JMSSubscriber.java
import javax.naming.*;
import javax.jms.*;
public class JMSSubscriber {
public static void main(String [] args) throws Exception {
//
// ...Initialization...
//
MessageConsumer receiver;
receiver = session.createConsumer(greetings,
"(greeting = ‘Hello’)");
connection.start();
TextMessage m = (TextMessage)receiver.receive(5000); // 5 sec
System.out.println(m.getText());
}
}
Outline
What
is publish/subscribe communication?
Service models
Implementation models
Survey of representative pub/sub systems
Using publish/subscribe communication
Advanced topics
Advanced Topics
Security
Client
mobility
Benchmarking
Security of Publish/Subscribe Systems
Reliability
Access
control (i.e., policies)
Authentication
Privacy
Reliability
Fault
tolerance
– heart-beat propagation of routing information
– dynamic discovery of (optimal) paths within nconnected network
– generic, robust content-based routing
Fair
resource allocation
– flow control
– accounting
Access Control Policies
Publish/subscribe
firewalls
– filters on outgoing publications
» confidentiality of intra-domain events
» blocking and/or rewriting (anonymization)
– filters on incoming publications
» mandatory restrictions on inter-domain traffic
» additional filtering
– filters on outgoing subscriptions
» confidentiality of subscriptions
» blocking and/or rewriting (over-generalization)
Authentication
Value-added
service
– clients apply and verify MACs
Native
implementation
– “MAC” operator
[airline=“UA”, price<900, has_valid_mac(K)]
Privacy: “Strong” Security
Confidentiality
of subscriptions with an untrusted
infrastructure
– clients want the service to filter publications on their
behalf without “knowing” what it is filtering
» privacy of publications
» privacy of subscriptions
Approximate
–
–
–
–
solutions
encrypted computations
filter obfuscation
anonymization (hiding many subscribers behind a proxy)
over-generality in subscriptions
Mobility Goal
Combine
the benefits of mobile applications
with the communication services offered by
advanced publish/subscribe services
Kinds of Mobility
Host
mobility
– movement of mobile hosts
Code
code
code
code
mobility
– movement of code among hosts
» weak mobility: code fragment is relocated by creating
a fresh copy at the destination point
» strong mobility: movement of code while maintaining
the state of execution
code
code
code
code
code
Mobility Introduces Problems
Client
may lose some messages while
disconnected
Part
of client’s state is maintained by the
service
– subscriptions
– routing information
– messages in transit
Enabler: Message Persistence
m
m
S
S
S
C
C
C
m
m
Persistence and Mobility
code
code
code
code
Message Download Protocol
H
T
1) Save(c,H)
2) Disconnect(c,H)
3) Move(c)
4) Connect(c,T)
C
C
Problem: race conditions
Solutions: scout message, delay
5) Save(c,T)
6) Subscribe(f,c)
7) Download(c,H)
Merge(c)
8) Download(T)
Evaluating Publish/Subscribe Systems
Very
large parameter space
– network topology
– distribution of clients
– rate of publication
– rate of subscription
– publication content
» distribution of attribute names, types, and values
– subscription content
» distribution of constraint names, types, and values
We
need a benchmark
A Publish/Subscribe Benchmark
Requirements
– evaluate support for existing applications
– evaluate performance with existing applications
– evaluate performance for future applications
Benchmark
sections
– interface suitability: capability model
– traces from existing applications
– synthetic benchmark
Outline
What
is publish/subscribe communication?
Service models
Implementation models
Survey of representative pub/sub systems
Using publish/subscribe communication
Advanced topics
Conclusion
Prospects
for publish/subscribe
– could it one day dominate network traffic?
» multiparty versus point-to-point communication
Open
Problems and Future Directions
– seamless integration with other services
» file transfer, remote procedure call, naming, …
– finding an appropriate network foundation
» multicast, content-based networking
– communication ontologies