2013-03-12 6 views
0

Я пишу приложение «Самый быстрый палец первым» Node.JS, используя смартфоны в качестве зуммера. Я намерен использовать Socket.IO для обработки ответов, поступающих в приложение, но не знаю, что является лучшим способом хранения данных для сравнения в конце раунда.Самая быстрая архитектура первого аппликатора - Redis?

Моя первоначальная мысль заключается в том, чтобы вставлять ответы на каждое событие сокета, в Redis, поскольку оно основано на RAM, и мое предположение заключается в том, что он будет быстрым. Однако было бы лучше попытаться последовательно вставить каждый ответ в массив? Будет ли это сохраняться во время входящих событий сокета?

Надеюсь, это звучит кратким!

ответ

3

Вы правы, что массив будет быстрее. Это зависит от того, сколько пользователей вы планируете поддерживать и как планируете масштабирование. Если вы пытаетесь создать «сервис», который любой может создать «игру», и вы планируете поддерживать сотни тысяч «игр» на своей платформе, пойдите с Redis, потому что вам может понадобиться масштабировать ваш веб-уровень и гудеть один веб-сервер не будет отображаться на другом веб-сервере.

Если вы делаете это как одноразовая вещь, поддерживая одну игру за раз, возможно, даже от друзей, подключающихся к вашему ноутбуку через Wi-Fi (хотя небольшой сервер Heroku через Интернет будет работать отлично), то я бы пошел с массивом. Общение с внешним БД (даже одним быстрым, как Redis) добавляет сложности. Node.js является событием и однопоточным означает, что вам не нужно беспокоиться о состоянии гонки. Вы можете написать

var firstPresser; 
socket.on('press', function (presser) { 
    if (!firstPresser) { 
     firstPresser = presser; 
     // return "You pressed first" 
    } else { 
     // return "You didn't press first" 
    } 
}); 

Прости мой псевдокод, я не знаком с socket.io конкретно, но я думаю, вы получите точку.

+1

Я на самом деле просто реализовал подход массива, и он отлично работает! Большое спасибо за ваш ответ - я думаю, что вначале я поеду с массивом, а затем, возможно, разработаю масштабируемую версию, когда мой опыт Node увеличивается! – HankHendrix

+0

Удивительный. Удачи! – Max

 Смежные вопросы

  • Нет связанных вопросов^_^