[zeromq-dev] which pattern to use

Charles Remes lists at chuckremes.com
Mon Nov 5 16:47:01 CET 2012


The first graphic is correct.

You need to run the code and dive into it a bit more to understand it. You are trying to do something that isn't very complicated, but your lack of experience and comfort with the library is making it seem harder than it should. Experiment a bit. There's no substitute. Once you grok it better, my last answer will make more sense.

cr

On Nov 5, 2012, at 9:35 AM, Michal Singer <michal at leadspace.com> wrote:

> Do you mean that I should change in the broker code (mdbroker- in java implementation) the wait to send a response from worker (method processWorker handle of MDP.W_REPLY)
> to dispatch to one of the clients like as defined for the workers?
>  
> Does it mean that I should use the same pattern:
> <image001.png>
>  
>  
> Theoretically I would prefer to use a dealer as the broker in between since I don't need the ROUTER's knowledge of who to response to. But according to the man, a DEALER can only talk to a ROUTER,REQ, REP.
> Is this correct? Should I use dealer to router to dealer in this case? Or is this legal?
> <image002.png>
>  
>  
> Thanks,
> From: zeromq-dev-bounces at lists.zeromq.org [mailto:zeromq-dev-bounces at lists.zeromq.org] On Behalf Of Charles Remes
> Sent: Monday, November 05, 2012 4:05 PM
> To: ZeroMQ development list
> Subject: Re: [zeromq-dev] which pattern to use
>  
> Read this wiki page about DEALER and ROUTER sockets:  http://www.zeromq.org/tutorials:dealer-and-router
>  
> That page should help clarify how you can modify the Majordomo pattern to accomplish your task. The broker in the middle could easily round-robin (or whatever scheme you choose) the replies back to the request group.
>  
> Right now the majordomo broker assumes a single request will be mapped to a group of workers. You want the request to also come from a group. In the current broker examples, the original requestor is looked up so the reply can be sent back. You would modify that to lookup the group that the request came from and pick the next available worker to send the reply back to.
>  
> Does that make sense?
>  
> cr
>  
>  
> On Nov 5, 2012, at 7:48 AM, Michal Singer <michal at leadspace.com> wrote:
> 
> 
> Can I do the Majordomo pattern with two sockets, one in each direction to get the feature of "return to different clients with the answer" ? Or is it better to use the push-pull?
> The push-pull is not explained a lot in the guide so I am not sure how to implement:
> 1.       LRU
> 2.       Service discovery
> 3.       Reliability
> Whereas the Majordomo is explained a lot with all the examples.
>  
> Thanks.
>  
>  
>  
> From: Michal Singer [mailto:Michal at leadspace.com] 
> Sent: Monday, November 05, 2012 1:58 PM
> To: 'ZeroMQ development list'
> Subject: RE: [zeromq-dev] which pattern to use
>  
> Thanks for the fast replyJ
> The problem with this that it uses ROUTER as broker as this is a request-reply pattern and I don't want the reply to necessarily return to the sender but instead to anyone which is listening in the same group of senders.
>  
> From: zeromq-dev-bounces at lists.zeromq.org [mailto:zeromq-dev-bounces at lists.zeromq.org] On Behalf Of Pieter Hintjens
> Sent: Monday, November 05, 2012 12:14 PM
> To: ZeroMQ development list
> Subject: Re: [zeromq-dev] which pattern to use
>  
> You can probably base this off the Majordomo pattern.
>  
> 
> On Mon, Nov 5, 2012 at 10:48 AM, Michal Singer <michal at leadspace.com> wrote:
> Hi.
> I am new with ZMQ. I am checking it out to use for a distributed system. I am reading the guide but I can't find an exactly suited pattern for our needs.
> I need a pattern for:
> ·         a services oriented system: one which consists of groups of service, let's say group A (A1, A2, A3,…), group B (B1,B2,B3,..), group C(C1,C2,C3,…)
> ·         These services are like 'workers'
> ·         Each service from each group can send a request to one service from each of the other groups
> ·         The reply from the destination service can go to any of the other services from the sending group
>  
> Something like this:
>  
> A1 (send request to)->B2 (send reply to)->A2 (send request to )->C1 (send reply to )->A1
>  
>  
> It is some sort of a push-pull where any service should have a 'PUSH' and 'PULL' socket.
> It is also some kind of a dealer to dealer type of a pattern, though it is important that the reply can return to any of the sending group.
>  
> I got to chapter 6 and couldn't find any good examples of the PUSH-PULL pattern and it seems like I need one to fully cover all scenarios of reliability and so on.
>  
> What should I do?
>  
> Thanks in advance, Michal
>  
> 
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> 
>  
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>  
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20121105/7c55524a/attachment.htm>


More information about the zeromq-dev mailing list