@Tim Cash:
Now I have not made any test to compare redis pubsub and zmq. But with our
business we intend to use redis pubsub as ultimate choice, and maybe we'll
ignore zmq.

On Mon, Jul 30, 2012 at 2:32 AM, Tim Cash <[email protected]> wrote:

> @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 <[email protected]>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 <[email protected]>
>>> 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 <[email protected]> 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<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 [email protected]
>>> >> > To unsubscribe from this group, send email to
>>> >> > nodejs+unsubscribe@**googlegroups.com<nodejs%[email protected]>
>>> >> > For more options, visit this group at
>>> >> > http://groups.google.com/**group/nodejs?hl=en?hl=en<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<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 [email protected]
>>> >> To unsubscribe from this group, send email to
>>> >> nodejs+unsubscribe@**googlegroups.com<nodejs%[email protected]>
>>> >> For more options, visit this group at
>>> >> http://groups.google.com/**group/nodejs?hl=en?hl=en<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<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 [email protected]
>>> > To unsubscribe from this group, send email to
>>> > nodejs+unsubscribe@**googlegroups.com<nodejs%[email protected]>
>>> > For more options, visit this group at
>>> > http://groups.google.com/**group/nodejs?hl=en?hl=en<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<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 [email protected]
>>> To unsubscribe from this group, send email to
>>> nodejs+unsubscribe@**googlegroups.com<nodejs%[email protected]>
>>> For more options, visit this group at
>>> http://groups.google.com/**group/nodejs?hl=en?hl=en<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 [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> 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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to