The Dynamic Discovery Problem
One of the problems you will hit as you design larger distributed architectures is discovery. That is, how do pieces know about each other? Itâs especially difficult if pieces come and go; thus, we can call this the âdynamic discovery problem.â
There are several solutions to dynamic discovery. The simplest is to entirely avoid it by hard-coding (or configuring) the network architecture so discovery is done by hand. That is, when you add a new piece, you reconfigure the network to know about it.
In practice, this leads to increasingly fragile and unwieldy architectures. Letâs say you have one publisher and a hundred subscribers. You connect each subscriber to the publisher by configuring a publisher endpoint in each subscriber. Thatâs easy (Figure 2-4). Subscribers are dynamic; the publisher is static. Now say you add more publishers. Suddenly, itâs not so easy any more. If you continue to connect each subscriber to each publisher, the cost of avoiding dynamic discovery gets higher and higher.
Figure 2-4. Small-scale pub-sub network
There are quite a few solutions to this problem, but the very simplest is to add an intermediary; that is, a static point in the network to which all other nodes connect. In classic messaging, this is the job of the message broker. ÃMQ doesnât come with a message broker as such, but it lets us build intermediaries ...
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.