Basics
BSD socket API
message oriented
various connection patterns
small (20k SLOC of C++)
fast
LGPLv2+
Slide 5
Slide 5 text
various transports: tcp, ipc, inproc, pgm
multithreaded friendly
zero-copy for messages
auto-reconnect
Native Patterns
Slide 6
Slide 6 text
Request-Reply
Publish-Subscribe
Slide 7
Slide 7 text
Pipeline
various high-level patterns
Lazy/Simple/Paranoid pirate
majordomo
all described in the zguide !
Slide 8
Slide 8 text
Various routing patterns
round-robin (REQ, PUSH, DEALER)
multicast (PUB)
fair queueing (REP, SUB, PULL, DEALER)
explicit routing (ROUTER)
point to point (PAIR)
Concurrency ?
Slide 9
Slide 9 text
Today ?
data-centric model
one datum, many executors
you must control data accesses
Consequences
complexity
race conditions
heisenbugs
Slide 10
Slide 10 text
How ?
adopt message-driven design !
design independant tasks (threads, processes)
use inproc:// (threads), ipc:// (processes), tcp:// (network)
In practice ...
use actor model
formalized by Carl Hewitt in 1973
Popularized by Erlang
Slide 11
Slide 11 text
Benefits
lock-free
no active wait !
rapid prototyping
e = mc²