We're using the multiple-socket model in our work. We've abstracted out
several
of the major "topologies" that ZeroMQ supports into a higher level
application
library. Each of these topologies essentially supports one-way,
asynchronous
transmissions. Round trip request/response messaging is accomplished
using transactionIDs
that are part of the message payload. Clients transmit message payloads
on one socket
topology and eventually receive a response to that message on another
socket topology.
The transactionID helps to correlate the original request with the
proper response. We've
also extended the payload model to include the concept of routing
documents. This allows
for a single request to be routed through multiple service
implementations before the final
result is returned to the original caller. This allows for excellent
separation of concerns
across components.
The reason we went this route is because of the complexities of two-way
communications
using a single socket and all of the synchronization headaches that go
along with it.
--Corey
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Staffan Gimåker
Sent: Tuesday, February 07, 2012 5:15 AM
To: ZeroMQ development list
Subject: Re: [zeromq-dev] Will socket multiplexing improve throughput?
On Tue, 2012-02-07 at 10:01 +0800, Qing Yan wrote:
> Hi,
> I have a general question about zmq. Say my goal is to gain max
> throughtput between two nodes. Is there advantge to establish multiple
> sockets between them, or one pair is enough and ZMQ will take care of
> the optimization?
> Assuming the data source is multithreaded
> 1) create one socket pair + synchronized access
> 2) one pair for each thread w/o synchronization How much better will
> 2) compare to 1)?Is it worth the complexity?
If ZeroMQ is the bottleneck, i.e. not the data source itself, then 2) will fare
better, for two reasons:
* No synchronization.
* Each zmq socket is limited to one io thread (correct me if I'm wrong).
If you use multiple sockets you can utilize multiple io threads, which should
give you better throughput.
How much better it will be (it depends) or whether or not it's worth the effort
(can't see why it should be much more effort) I will refrain from speculating
about.
/S
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev