Design for the Real World
Whether weâre connecting a roomful of mobile devices over WiFi or a cluster of virtual boxes over simulated Ethernet, we will hit the same kinds of problems. These are:
- Discovery
How do we learn about other nodes on the network? Do we use a discovery service, centralized mediation, or some kind of broadcast beacon?
- Presence
How do we track when other nodes come and go? Do we use some kind of central registration service, or heartbeating or beacons?
- Connectivity
How do we actually connect one node to another? Do we use local networking, wide-area networking, or do we use a central message broker to do the forwarding?
- Point-to-point messaging
How do we send a message from one node to another? Do we send this to the nodeâs network address, or do we use some indirect addressing via a centralized message broker?
- Group messaging
How do we send a message from one node to a group of others? Do we work via a centralized message broker, or do we use a publish-subscribe model like ÃMQ?
- Testing and simulation
How do we simulate large numbers of nodes so we can test performance properly? Do we have to buy two dozen Android tablets, or can we use pure software simulation?
- Distributed logging
How do we track what this cloud of nodes is doing so we can detect performance problems and failures? Do we create a main logging service, or do we allow every device to log the world around it?
- Content distribution
How do we send content from one node to another? Do we use server-centric protocols ...
Get ZeroMQ now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.