Просто интересно, как вы это сделаете. Будет ли у вас какой-то процесс, который сканирует все действия, которые произошли за последние X минут? Вы будете запускать проверку обновления значка каждый раз, когда будут предприняты какие-либо действия (голосование, пониженное голосование, тег и т.д.)? Похоже, это будет относительно дорогой процесс так или иначе.
Как бы вы реализовали систему значков, такую как StackOverflow?
Ответ 1
Может быть, и то и другое. Вероятно, я бы поставил в очередь проверку каждый раз, когда произошло действие, и процесс, который сходит с очереди, и определяет, был ли получен значок для каждой проверки. Таким образом, это полу-реальное время, не заставляя страницы загружать больше времени. Фактически, здесь, в StackOverflow, я заметил задержку между тем, когда заработал значок и когда система его реализует, поэтому этот сайт, вероятно, использует тот же подход.
Ответ 2
Я бы не запускал обновление каждый раз, когда кто-то выполнял действие; вместо этого я бы сделал пакетный процесс, который просматривает все действия, выполненные в последнюю минуту, суммирует все с "минутой назад" каждого пользователя и выдает на нем новые значки.
Ответ 3
Используйте базу данных с помощью "hooks/triggers". Затем вы можете инициировать событие при определенных изменениях состояния, например, например, у вас есть таблица, в которой каждый конкретный ответ записывается каждый раз.
Вы знаете, что Answer > 10 Upvotes == "Хороший ответ", поэтому вы просто поместите триггер, который возникает, когда LAST_STATE = 9 и NEXT_STATE = 10 и ENTRY_AWARDED_GOODANSWER = false.
Postgresql - это одна такая база данных, которая поддерживает такие триггеры.
Подробнее здесь: http://www.postgresql.org/docs/8.1/static/triggers.html
Ответ 4
Я бы использовал службу Service Broker Queue в SQL Server для отправки действий в очередь, и процедура активации собирает кучу действий за раз и запускает ее против процедуры проверки значка. Например, механизм правил значков.
Ответ 5
У меня было бы личное задание cron или подобное, которое обрабатывало бы их на регулярной основе. Вероятно, в системе потоков "поддельный cron", где у меня будет невидимый вызов изображения и пройдите через внутренний "стек cron", чтобы увидеть, что нужно сделать.
Однако многие значки не должны так много делать с ними... они должны быть выполнены с хорошо обработанным запросом
Ответ 6
Академия "Хан" прилагает большие усилия для награждения значков в режиме реального времени. Они утверждают, что это важно для игрового чувства веб-сайта. У них также есть пакетное задание, которое периодически переоценивает данные и награждает пропущенные значки.
Ben Kamens, Badges on App Engine: Реализация реального времени.... Блог был опубликован в январе 2011 года, так что все изменилось с тех пор.