как обрабатывать большие показы страниц в memcache перед сбросом в mysql - PullRequest
3 голосов
/ 09 июня 2011

Я пишу аналитический инструмент, который будет регистрировать каждый раз при попадании на страницу. У меня проблема в том, что количество показов может стать очень высоким, и мне, возможно, потребуется обрабатывать миллионы в день или, по крайней мере, ~ 300 в секунду (у меня есть мнение, что они могут достигать 10k в секунду). Моя текущая настройка - регистрация php каждый раз, когда к странице обращаются как к вставке непосредственно в таблицу innodb MySQL, это становится медленным, и сервер иногда пропускает попадание, что не так уж плохо для аналитики, но не идеально. Моя идея состоит в том, чтобы поместить memcache впереди и сначала записать в него все показы, а затем запустить запланированный пакетный процесс, который берет показания из memcache и затем помещает их в базу данных в тихом периоде, например. 3 утра. Итак, мой вопрос

1) Это правильный способ сделать это? В идеале я не хочу внедрять какие-либо новые технологии или реализовывать базы данных NoSQL, такие как mongo или couch.

2) Как бы я сделал это в memcache? Поскольку невозможно найти все ключи, находящиеся в данный момент в кеше, я думал об установке счетчика, который увеличивается с каждым показом, а затем ключа со счетчиком в качестве идентификатора, содержащего данные, пакетный процесс зацикливался бы от своей последней позиции. к счетчику и обработать эти записи, а затем установить его последнюю позицию на текущий счетчик ..

Любая помощь приветствуется

Приветствия

1 Ответ

0 голосов
/ 09 июня 2011

Я бы не создавал отдельную партию, а вместо этого интегрировал ее в свой код

Обратите внимание, что здесь нет проверки / проверки / блокировки. Какой-то псевдокод:

$mViews = $oMemcache->get('views');
if ($mViews > 1000) {
    $oDatabase->update($mViews);
    $oMemcached->replace('views', 1);
}
else {
    $oMemcached->increment('views');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...