rda3 transport
DESCRIPTION
RDA3 Transport. Joel Lauener on behalf of the CMW team 26th June , 2013 [email protected]. Outline. Introduction Architecture Connection management Messaging Conclusions. 1. Introduction. Introduction. Provide connection management and asynchronous bi-directional communication - PowerPoint PPT PresentationTRANSCRIPT
![Page 2: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/2.jpg)
• Introduction• Architecture• Connection management• Messaging• Conclusions
Outline
1
![Page 3: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/3.jpg)
Introduction
• Provide connection management and asynchronous bi-directional communication
• Keep it simple & stupid!• Abstraction of the underlying communication
library• Independent from other librairies
2
Introduction
![Page 4: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/4.jpg)
Public API
3
Architecture
![Page 5: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/5.jpg)
Dispatcher
• Push sockets from high level to transport• Callback from transport to high level
4
Architecture
![Page 6: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/6.jpg)
Channels
• Admin socket:– Management– Small message size– Small message count
• Data socket:– Application data– Might block/overflow
5
Architecture
![Page 7: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/7.jpg)
Frames
0x20 CLIENT_CONNECT0x21 CLIENT_REQ0x22 CLIENT_HB
0x01 SERVER_CONNECT_ACK0x02 SERVER_REP0x03 SERVER_HB
6
Architecture
![Page 8: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/8.jpg)
Message
• Used to pass data between high layer and transport layer
• Wrapper around ZMQ message with custom free function
0 copy
7
Architecture
![Page 9: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/9.jpg)
Connect (success)
8
Connection Management
![Page 10: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/10.jpg)
Heartbeating
9
Connection Management
![Page 11: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/11.jpg)
Connect (fail)
10
Connection Management
![Page 12: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/12.jpg)
Client reconnect
11
Connection Management
![Page 13: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/13.jpg)
Server disconnect
12
Connection Management
![Page 14: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/14.jpg)
Client close
13
Connection Management
![Page 15: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/15.jpg)
Connection states
14
Connection Management
![Page 16: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/16.jpg)
Request
15
Messaging
![Page 17: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/17.jpg)
Replies
16
Messaging
![Page 18: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/18.jpg)
• Each data point can be multiplexed• Authorization layer (RBAC)• Cannot send first updates through the same
channelWe do not use pub/sub for notifications
• But we have 2 use cases for a pub/sub based transport: Timing and Orbit Feedback
What about pub/sub?
17
Messaging
![Page 19: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/19.jpg)
• Powerful, easy to use, well documented• However…– In terms of error handling ROUTER is inconsistent
compared to DEALER, REQ and REP– ZMQ doesn’t give means to inspect/modify the
content of queues
ZeroMQ
18
Conclusions
![Page 20: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/20.jpg)
Future plans
• Improve disconnection detection on the server side (ZMQ monitor or async HB)
• Implement graceful close• Investigate pub/sub• Think about replies priority• Performance testing and profiling• Should be ready by September ’13
19
Conclusions
![Page 21: RDA3 Transport](https://reader035.vdocuments.net/reader035/viewer/2022070405/56814000550346895dab3511/html5/thumbnails/21.jpg)
• Transport is almost implemented– Working version in C++ and Java– 90% done, 90% of work left ;)– Some work left on error detection
• Pub/sub is not used for sending notifications• No showstoppers on the ZeroMQ side• Preliminary scalability tests are promising
Summary
20
Conclusions