Boost logo

Boost Users :

Subject: Re: [Boost-users] Asio and ZeroMQ
From: Matthias Vallentin (vallentin_at_[hidden])
Date: 2012-02-08 01:28:00


> But does your library provide what you say? I mean does it really use
> ZeroMQ on edges and use ASIO on a binary component level for
> distributed systems?

I'm sorry if I was not clear enough. At this point, the library (bmq) is
really thin and basic. It is a proof-of-principle that you can use
ZeroMQ and Asio together; bmq does not provide a lot abstractions beyond
what ZeroMQ already offers. That is, it associates sockets with what I
call components, i.e., logical units of structuring your applications.
(If it helps, think of components as SEDA stages [1].) It also takes
these ZeroMQ sockets and hands them to the asynchronous io_service
proactor.

I will use library in my own projects, so it will probably change quite
a bit once I figure out what the right level of abstraction are.
In the long run, I would like to have message-passing that allows me to
create component-based software which I can easily distribute over
multiple machines, where bottlneck components can be executed on
separate nodes, or replicated to reduce the load on the edges. Hopefully
this helps to better understand what I am after.

Another aspect concern parallelism, both multi-core and across several
machines. Regarding the former, Both Asio and ZeroMQ use threads
(io_service/context). If messages cannot be sent fast enough, maybe it
makes sense to add more threads to the ZeroMQ context. If messages
cannot be consumed fast enough, it may make sense to launch more threads
on io_service::run(). Perhaps one can create a monitoring mechanism that
finds out these things automatically. Again, all this is just a vision.

    Matthias

[1] http://matt-welsh.blogspot.com/2010/07/retrospective-on-seda.html


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net