@hd nguyen

I am also interested in comparing the performance of redis pubsub v zeromq. 
If you run any kind of bench-marking let us know about your results. I have 
found https://github.com/JustinTulloss/zeromq.node to be 
somewhat disappointing when working with PUSH PULL and PUB SUB. I think 
this may be due to the way node works. With LUAJIT I can PUB SUB millions 
of messages per second so Node and Redis is off by two orders of magnitude. 
So node+redis pubsub is similar to node+zeromq in my testing so far. I 
think there must be something going on with the node zeromq library though.

One option could be to batch up all the messages on the same channel for 10 
- 20 milliseconds and send them as one.

On Friday, 13 July 2012 01:05:38 UTC-7, hd nguyen wrote:
>
> Do we have any tool to measure/simulate a large number of channels publish 
> message simultaneously?
>
> And what do you think about redis pubsub performance in comparing to 
> ZeroMQ pubsub mechanism?
>
> Thanks.
>
> On Fri, Jul 13, 2012 at 12:52 PM, Thomas Blobaum <tblob...@gmail.com>wrote:
>
>> In your case if you are just publishing strings/numbers, creating some
>> network of channels by name could be useful. If you are publishing a
>> stringified json object, its probably not necessary to also use
>> different subscription channels because that data can be part of what
>> you send but you could still make use of them.
>>
>>
>> Thomas Blobaum
>> https://github.com/tblobaum
>>
>>
>> On Fri, Jul 13, 2012 at 12:29 AM, hd nguyen <nguyenhd2...@gmail.com> 
>> wrote:
>> > Thanks Tim for your suggestion about subscriber part.
>> >
>> > Any suggestions for publisher part(one publisher for each ACTION or one
>> > publisher for ALL ACTION)? I want to hear about it.
>> >
>> > Thanks.
>> >
>> >
>> > On Fri, Jul 13, 2012 at 12:07 PM, Tim Smart <t...@fostle.com> wrote:
>> >>
>> >> Hello,
>> >>
>> >> I would definitely recommend just adding one listener and doing all 
>> your
>> >> routing
>> >> from there. Something like:
>> >>
>> >>     redis.subscribe('channel1')
>> >>     redis.subscribe('channel2')
>> >>
>> >>     redis.on('message', function (channel, message) {
>> >>       // emitter.emit(channel, message)
>> >>       //
>> >>       // -or
>> >>       //
>> >>       // if (methods[channel]) methods[channel](message)
>> >>       //
>> >>       // -or
>> >>       //
>> >>       // switch (channel) {
>> >>       // case 'channel1':
>> >>       //   break
>> >>       // case 'channel2':
>> >>       //   break
>> >>       // }
>> >>     })
>> >>
>> >> The main reason being no matter how many clients you have, they will 
>> all
>> >> receive the same messages as each other; which means your clients will 
>> be
>> >> doubling up on emit operations.
>> >>
>> >> Tim
>> >>
>> >> On Fri, Jul 13, 2012 at 11:43:25AM +0700, hd nguyen wrote:
>> >> > Hi all,
>> >> >
>> >> > I have a concern when using pubsub mechanism of redis in my real
>> >> > application.
>> >> >
>> >> > I built a MMO game with 5 servers (NodeJs) and use pubsub of Redis to
>> >> > broadcast game state between servers.
>> >> >
>> >> > But I concern which is the best practice to utilize this mechanism
>> >> > efficiently with a lot of users connect and interact simultaneously?
>> >> >
>> >> > I would love to hear your ideas about following problems:
>> >> >
>> >> > 1/ Should I create NEW channel for each action or just ONE channel 
>> for
>> >> > ALL
>> >> > actions?
>> >> > Ex: user1 connect to server1, user2-server2,...userN-serverN
>> >> > When user1 move/fight and lost his health, those action should be
>> >> > broadcast
>> >> > to other servers, so each time want to broadcast I should use:
>> >> > pub1.publish("pub1", "action data sent from pub1"); //just one 
>> channel
>> >> > for
>> >> > ALL actions
>> >> > OR
>> >> > pub1.publish("pub1_actionID", "action data sent from pub1"); // each
>> >> > channel for EACH action
>> >> >
>> >> > 2/ And in each servers we create a client to listen:
>> >> > //subscribe ALL channels from ALL OTHER servers
>> >> >  client = redis.createClient(port, host);
>> >> > client.subscribe("pub1");
>> >> > client.subscribe("pub2");
>> >> > ....
>> >> > client.subscribe("pubN");
>> >> >
>> >> > client.on("message", function(channel, message){
>> >> >   console.log(host + ":" + channel + ": " + message);
>> >> > });
>> >> >
>> >> > As above snippet code, each server should be a client to listen ALL
>> >> > CHANNELS published by ALL other servers.
>> >> >
>> >> > But I concern whether I should use just ONE client to listen ALL
>> >> > channels
>> >> > or ONE client for EACH channel?
>> >> > //each subscribe for each channel
>> >> > client1 = redis.createClient(port, host);
>> >> > client2 = redis.createClient(port, host);
>> >> > client1.subscribe("pub1");
>> >> > client2.subscribe("pub2");
>> >> > ....
>> >> > client1.on("message", function(channel, message){
>> >> >   console.log(host + ":" + channel + ": " + message);
>> >> > });
>> >> > client2.on("message", function(channel, message){
>> >> >   console.log(host + ":" + channel + ": " + message);
>> >> > });
>> >> > ...
>> >> > 3/ Could you tell me how many connections redis can handle maximum 
>> in a
>> >> > second? (each time we createClient() we should create a connection to
>> >> > Redis
>> >> > server, right? Does it take a lot of time and overhead?)
>> >> >
>> >> > 4/ Any tool to evaluate performance of pubsub mechanism for a MMO 
>> game
>> >> > with
>> >> > multiple requests at the same time?
>> >> >
>> >> > Thanks for your time.
>> >> >
>> >> > --
>> >> > Nguyen Hai Duy
>> >> > Mobile : 0914 72 1900
>> >> > Yahoo: nguyenhd_lucky
>> >> >
>> >> > --
>> >> > Job Board: http://jobs.nodejs.org/
>> >> > Posting guidelines:
>> >> > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> >> > You received this message because you are subscribed to the Google
>> >> > Groups "nodejs" group.
>> >> > To post to this group, send email to nodejs@googlegroups.com
>> >> > To unsubscribe from this group, send email to
>> >> > nodejs+unsubscr...@googlegroups.com
>> >> > For more options, visit this group at
>> >> > http://groups.google.com/group/nodejs?hl=en?hl=en
>> >>
>> >> --
>> >> Job Board: http://jobs.nodejs.org/
>> >> Posting guidelines:
>> >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> >> You received this message because you are subscribed to the Google
>> >> Groups "nodejs" group.
>> >> To post to this group, send email to nodejs@googlegroups.com
>> >> To unsubscribe from this group, send email to
>> >> nodejs+unsubscr...@googlegroups.com
>> >> For more options, visit this group at
>> >> http://groups.google.com/group/nodejs?hl=en?hl=en
>> >
>> >
>> >
>> >
>> > --
>> > Nguyen Hai Duy
>> > Mobile : 0914 72 1900
>> > Yahoo: nguyenhd_lucky
>> >
>> > --
>> > Job Board: http://jobs.nodejs.org/
>> > Posting guidelines:
>> > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> > You received this message because you are subscribed to the Google
>> > Groups "nodejs" group.
>> > To post to this group, send email to nodejs@googlegroups.com
>> > To unsubscribe from this group, send email to
>> > nodejs+unsubscr...@googlegroups.com
>> > For more options, visit this group at
>> > http://groups.google.com/group/nodejs?hl=en?hl=en
>>
>> --
>> Job Board: http://jobs.nodejs.org/
>> Posting guidelines: 
>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> You received this message because you are subscribed to the Google
>> Groups "nodejs" group.
>> To post to this group, send email to nodejs@googlegroups.com
>> To unsubscribe from this group, send email to
>> nodejs+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/nodejs?hl=en?hl=en
>>
>
>
>
> -- 
> Nguyen Hai Duy
> Mobile : 0914 72 1900
> Yahoo: nguyenhd_lucky
>  

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to