Подтвердить что ты не робот

Как бы вы реализовали систему значков, такую ​​как StackOverflow?

Просто интересно, как вы это сделаете. Будет ли у вас какой-то процесс, который сканирует все действия, которые произошли за последние X минут? Вы будете запускать проверку обновления значка каждый раз, когда будут предприняты какие-либо действия (голосование, пониженное голосование, тег и т.д.)? Похоже, это будет относительно дорогой процесс так или иначе.

4b9b3361

Ответ 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 года, так что все изменилось с тех пор.