Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe...
-
Upload
gertrude-richardson -
Category
Documents
-
view
214 -
download
0
Transcript of Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe...
![Page 1: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/1.jpg)
CMSG – A PUBLISH/SUBSCRIBE
INTERPROCESS COMMUNICATION PACKAGE
Elliott Wolin
PCaPAC 2008
Ljubljana, Slovenia
![Page 2: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/2.jpg)
Outline
1. Introduction
2. What is Publish/Subscribe Messaging
3. What is cMsga) Client view
b) Developer view
c) Performance
4. Conclusions
![Page 3: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/3.jpg)
Jefferson Lab: Newport News, Virginia6 GeV Continuous Electron Beam Accelerator Facility
Superconducting RFQ’s
Three existing experimental halls
Approved 12 GeV upgrade and new hall $310M
GlueX experiment:
200 kHz trigger
3 GB/s off detector
300 MB/s to tape
![Page 4: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/4.jpg)
GlueX Experiment
Search for mesons with gluonic excitations
200 kHz trigger rate Deadtimeless readout 15 kB event size 3 GB/sec to L3 farm Factor 10 L3 rejection 300 MB/s to tape
![Page 5: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/5.jpg)
2. What is Publish/Subscribe Messaging
Asynchronous, distributed, location transparency Distinct from client/server – no notion of “service” or “service provider”
Producers: publish or send messages to “subjects” “launch-and-forget” mode many producers can publish to the same subject
Consumers: subscribe to subjects and supply callbacks “subscribe-and-forget” mode many consumers can subscribe to the same subject
A process can be both a consumer and producer a process can even receive messages it produces!
→ Deceptively simple, but very powerful! ←
See Wikipedia article under “Publish/Subscribe”
![Page 6: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/6.jpg)
producer publish
consumer
consumer
consumer
subscribecMsg system
subscribe
subscribe
![Page 7: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/7.jpg)
producerpublish
subject “x”
consumer
consumer
consumer
subscribecMsg system
subscribe
subscribe
subscribe
subject “x”
producersu
bject “x”
producer
subject “x”
subject
“x”
subject “x”
producer/consumer
![Page 8: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/8.jpg)
3. What is cMsg – client view
A complete publish/subscribe messaging systemVery simple API (unlike CORBA and others)C/C++, JavaMany Unix flavors, VxWorksHas some synchronous capabilitiesHighly customizable and extendable
Can satisfy all your messaging needs!
![Page 9: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/9.jpg)
#include <cMsg.hxx>
// connect to system via Universal Domain Locator cMsg c(UDL, “myName”, “My description”); c.connect();
// create and fill message cMsgMessage msg; msg.setSubject(“mySubject”); msg.setType(“myType”); msg.setText(“This is my text”);
// send message c.send(msg);
To send a cMsg message
![Page 10: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/10.jpg)
#include <cMsg.hxx>
// connect to cMsg system cMsg c(UDL, “myName”, “My description”); c.connect();
// subscribe to subject/type combination and start receiving c.subscribe(“mySubject”, “myType”, new myCallback(), NULL); c.start(); // do something else…
To receive a cMsg message
![Page 11: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/11.jpg)
class myCallback : public cMsgCallback {
void callback(cMsgMessage *msg, void* userArg) { cout << “Message subject is: " << msg->getSubject() << endl; }
};
Where callback is:
![Page 12: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/12.jpg)
3. What is cMsg – developer view Framework for deploying multiple underlying
IPC packages plug in “domain” handlers at client level
Proxy server facilityPlug in “subdomain” handlers at server levelServer written in Java
UDL specifies domain, server, and subdomain
![Page 13: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/13.jpg)
DomainsImplemented in clientJava, C/C++
File domain – write to a fileCA domain – Channel Access (get/put/monitorOn/Off)
cMsg domain – connect to proxy server○ Here message is transported to server and handed off to
subdomain handler within server
Others, easy to write new ones
![Page 14: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/14.jpg)
SubdomainsImplemented in cMsg domain serverJava only
LogFile – many processes write to common fileCA – Channel Access (get/put/monitorOn/Off)Database – execute database commandsQueue – read/write to database-based queue
cMsg – full pub/sub + synchronous IPC○ UDL: cMsg://host:port/cMsg/namespace
Others, easy to write new ones
![Page 15: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/15.jpg)
CADomain
DBDomain
cMsgDomain
User Code
Database
EPICSCA
Client cMsg Server
cMsgSubdomain
CASubdomain
QueueSubdomain
AnotherClient
AnotherClient
Queue system
CA
Client
Client
![Page 16: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/16.jpg)
![Page 17: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/17.jpg)
![Page 18: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/18.jpg)
IV. Conclusions
cMsg Includes a complete publish/subscribe package Simple C/C++ and Java API’s Highly customizable and extensible Framework for deploying IPC systems Powerful proxy server Very good performance Free
Download from: ftp://ftp.jlab.org/pub/coda/cMsg
![Page 19: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/19.jpg)
Backup Slides
![Page 20: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/20.jpg)
Universal Domain Locators
UDL specifies your messaging “world”
In general (in analogy to URL):
domainName://domainString?p1=v1&p2=v2&…
Examples:
FILE://myfile.txt // file domainCA://channelName?addr_list=list // channel access domain
Note: UDL is specified at runtime
![Page 21: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/21.jpg)
cMsg
Single Board Computer
FASTBUS VME CAMAC
ROC rcServer
EB
ROC
Network: Ethernet FDDI ATM
UNIX/LINUX
DISK/ TAPEET
User Proc.
RunControl GUI
ER
cdev
dp_tcl
mSQL Database
msqld cmlogServer
cmlog Database
IPC and Controls problem: too many protocols!
SmartSocketsprivate
privateprivate
ET
ET
![Page 22: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/22.jpg)
cMsgMessage response = c.sendAndGet(msg, myTimeout);
// timeout exception thrown if no message arrives within timeout
Synchronous features:
![Page 23: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/23.jpg)
Utilities – all are short programscMsgLogger – subscribe, write msg to
database/file/screencMsgQueue – subscribe, read/write to database
or file systemcMsgGateway – subscribe to two domains and
cross-postcMsgCommand – read command-line
parameters, send messageOthers…
![Page 24: Elliott Wolin PCaPAC 2008 Ljubljana, Slovenia. Outline 1. Introduction 2. What is Publish/Subscribe Messaging 3. What is cMsg a) Client view b) Developer.](https://reader035.fdocuments.us/reader035/viewer/2022070323/56649d9c5503460f94a848e9/html5/thumbnails/24.jpg)