[zeromq-dev] Any way to get info on subscribers?
Serge Aleynikov
serge at aleynikov.org
Sat Jul 24 20:48:33 CEST 2010
Thanks to Chris the ZeroMQ Erlang bindings have been updated to 2.0.7.
The repository also moved from saleyn.github.com to
zeromq.github.com/erlzmq. All documentation references have been updated.
Serge
On 7/24/2010 12:43 PM, Brian Granger wrote:
>
>
> On Sat, Jul 24, 2010 at 9:01 AM, Martin Sustrik <sustrik at 250bpm.com
> <mailto:sustrik at 250bpm.com>> wrote:
>
> Brian,
>
>
> I really like the idea of sticking to the connectionless model
> of 0MQ.
> It takes a while to get used to, but we are finding that when
> we are
> forced to design without connection information, we write better
> apps.
>
>
> Yes. That's the idea in the background: Enforcing scalable messaging
> patterns.
>
> Adding functionality like "get number of subscribers" breaks the
> scalability. You can use it as far as you need no devices in the
> middle. Once your business grows and you add devices to scale your
> application up the code using this feature would silently break.
>
> The real problem here is that people have their applications written
> in non-scalable way and at the same time want to use 0MQ to replace
> their existing messaging infrastructure. The options are:
>
> 1. Forget about 0MQ, use BSD sockets (or something else) instead.
> 2. Refactor your app in a scalable way.
> 3. Add non-scalable features to 0MQ.
>
> As 1 or 2 is often not an option, the idea proposed by Pieter
> (splitting 0MQ into two pieces -- lower layer with no guaranteed
> scalability, but some useful features such as transport abstraction
> etc. and upper layer allowing only for scalable messaging patterns)
> makes sense.
>
>
> I think there is a 4th option that I tend to prefer:
>
> 4. Implement the needed features (such as connection focused API and
> presence features) on top of the scalable 0MQ core. Here are some ideas...
>
> We are finding that one of the keys to using 0MQ effectively is to stop
> trying to replace each single TCP connection with a single 0MQ socket.
> Instead, the following mapping is much more useful:
>
> 1 connection oriented TPC socket ==> multiple 0MQ sockets bundled together
>
> Here is a diagram of a system that we are using this approach for:
>
> http://github.com/ipython/ipython/commit/e21b32e89a634cb1393fd54c1a5657f63f40b1ff
>
> We used to be using a single TCP socket for this.
>
>
> But, we do end up creating applications that use other 0MQ
> sockets to
> communicate presence information. To handle the case described here
> (knowing what SUBs are connected to a PUB), we would probably do:
>
> * Have the publisher also have an XREQ socket that the SUBS and
> use an
> XREP to notify the publisher of its presence.
> * For high availability/fault tolerance, give each subscriber a
> heartbeat and have the publisher monitor those to detect subscriber
> failures.
>
> While it take a bit to write this type of code, we find it works
> extremely well and honestly easier than handling connection logic in
> traditional TCP sockets.
>
>
> I think the main use case here is that people often want two
> distinct functionalities:
>
> 1. "production subsystem" that handles the real work
> 2. "administrative subsystem" that keeps track of different components
>
> (see attached diagram)
>
>
> One thing that we did recently was to implement a 3 socket device that
> is basically a queue device with an additional monitoring socket that
> allows an administrator to monitor the device.
>
> Cheers,
>
> Brian
>
> These two, IMO, should be clearly separated. However, with most
> legacy apps this is not the case.
>
> Martin
>
>
>
>
> --
> Brian E. Granger, Ph.D.
> Assistant Professor of Physics
> Cal Poly State University, San Luis Obispo
> bgranger at calpoly.edu <mailto:bgranger at calpoly.edu>
> ellisonbg at gmail.com <mailto:ellisonbg at gmail.com>
>
>
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
More information about the zeromq-dev
mailing list