vromanov wrote:
> Лишние накладные расходы. Я бы хотел обновлять информацию сразу всю. В случае массива это просто, а вот поместить 500 тысяч элементов в memcache не так и быстро.
>
поместить 500000 элементов куда угодно не так и быстро. но главное, что
не масштабируется.
обновлять данные по всем имеющимся пользователям - отвратительная идея.
сегодня из 500к, завтра 5000к и процесс обновления чего угодно будет
тормозить, локинг и прочая, и прочая. не говоря уж о том, чтов сё это
должно помещаться в одну машину.
нет. текущий баланс (по легенде) нужно знать тем, кто сейчас залогинен.
и баланс должен быть не минутной давности,
а именно что текущий. потратили денежку, или (особенно) получили - на
следующей перезагрузке страницы
цифры уже должны быть правильные. это ОЧЕНЬ важно, иначе юзеры будут
нервничать.
(например вася с петей чатится, говорит - я деньги перевёл, ты получил?
петя нажимает рефреш и видит старые цифры.
нет, говорит, не получил. петя начинает нервничать, подозревать васю.
вася нажимает у себя и видит старые цифры баланса - как будто деньги не
сняли. начинает нервничать. в итоге нервничают оба, пока у вас не
проснётся крон-скрипт и не обновит кеш. нехорошо.)
короче, первое: nginx смотрит в мемкеш, если там *нет* значения - идёт в
бэкенд. бэкенд по запросу кладёт в мемкеш.
второе: при изменении баланса бэкенд смотрит в мемкеш, если там *есть*
значение - обновляет его.
это потенциально созаёт проблему: если на каком-то аккаунте транзакции
будут идти чаще, чем время жизни в кеше, то они всегда там будут 9точнее
- до рестарта мемкеша), даже если их не запрашивает юзер. насколько это
серьёзная проблема - судить вам. я предполагаю что, при описанном
юзкейсе и небольгом e.t., не очень серьёзная - много ли будет таких
активных аккаунтов? думаю что нет, а с небольшим числом это не будет
проблемой.
при желании её можно решить каким-нибудь неспешным фоновым сканом,
выгребающим разлогиненых юзеров из кеша баланса.
> Posted at Nginx Forum: http://forum.nginx.org/read.php?21,18812,18819#msg-18819
>
>
>
--
Deomid "rojer" Ryabkov
myself@rojer.pp.ru
rojer@sysadmins.ru
ICQ: 8025844