Model Two: Brutal Shotgun Massacre
Letâs switch our client to using a DEALER socket. Our goal here is to make sure we get a reply back within the shortest possible time, no matter whether a particular server is up or down. Our client takes this approach:
We set things up, connecting to all servers.
When we have a request, we blast it out as many times as we have servers.
We wait for the first reply, and take that.
We ignore any other replies.
What will happen in practice is that when all servers are running, ÃMQ will distribute the requests so that each server gets one request and sends one reply. When any server is offline and disconnected, ÃMQ will distribute the requests to the remaining servers. So, in some cases a server may get the same request more than once.
Whatâs more annoying for the client is that weâll get multiple replies back, but thereâs no guarantee weâll get a precise number of replies. Requests and replies can get lost (e.g., if the server crashes while processing a request).
So, we have to number requests and ignore any replies that donât match the request number. Our Model One server will work because itâs an echo server, but coincidence is not a great basis for understanding, so weâll make a Model Two server here that chews up the message and returns a correctly numbered reply with the content âOK.â Weâll use messages consisting of two parts: a sequence number and a body.
Weâll begin by starting one or more servers, specifying a bind endpoint ...
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.