[zeromq-dev] Reundance/Failover Capabilites?
Martin Sustrik
sustrik at fastmq.com
Tue Oct 14 09:04:59 CEST 2008
Evan,
>> I assume you are speaking about applications reconnecting after
>> network/application failure rather than about guaranteed delivery.
>>
>> Currently, when peer disconnects, you are notified about the event via
>> callback function and you can reestablish the connection if needed.
>
> The question that I intended to ask is what happens when the machine hosting
> `zmq_server' server process goes down. It wasn't clear to me whether or not you
> were answering this question, or whether you were asking the question about
> nodes connected via this zmq_server process becoming unavailable.
>
> The specific application that I'm thinking of is this. Many clients on a
> cluster need to log messages. These log messages need to be aggregated onto a
> single machine, in more-or-less real time. The conventional solution for this
> is a syslog service (syslog-ng, rsyslog, etc.) but they don't work well for
> this application (for example, among many issues, they don't deal well with
> binary log formats).
>
> If the clients are all connected via a single instance of zmq_server than the
> machine hosting the zmq_server process is a single point of failure, which is
> unacceptable in this scenario. What I'm wondering is, is there a way to get
> around this? Clearly I could log to multiple hosts using zmq_server and then
> have some sort of log reconciliation service running after the fact, but I'm
> interested to find out if this capability is built into 0MQ (or whether or not
> it is planned).
Ok, I think you've misunderstood what zmq_server is actually doing.
Although it looks like standard messaging broker found in other
messaging products, it is actually only a directory service that keeps
info about machines, IP addresses and ports of running 0MQ client
applications. Messages on the other hand are passed directly from one
app to another, circumventing the broker. It's called broker-less
architecture. So, in your specific scenario clients would send log
messages directly to the sys-log service.
Consequently, there will be no single point of failure (unless sys-log
service fails). Moreover, you'll experience 1/2 of bandwidth usage and
1/2 latencies (there's single network hop for each message rather than
two of them).
HTH
Martin
More information about the zeromq-dev
mailing list