Comments 4
Какая интересная статья.
1. Судя по схемам, вы уперлись в СУБД, и к самой рыбе особых требований по скорости рассасывания очереди не предъявляется. Можно было оставить хранилище на мемкеше, и рыба работала бы просто как контроллер мемкеш-очередь-субд?
2. Опять же если рыбу можно было бы рассматривать просто как контроллер, можно было бы реализовать на php ее? То есть приложение смотрит в memcache, если не находит там ничего, добавляет запись в очередь и отдает пустой ответ. А работающая рыба на фоне просто бы разруливала эту очередь. Была бы стандартная схема.
3. Опять же, может имело смысл расширить функционал memcache? По сути вам надо было его научить ходить в БД, добавлять очередь.
1. Судя по схемам, вы уперлись в СУБД, и к самой рыбе особых требований по скорости рассасывания очереди не предъявляется. Можно было оставить хранилище на мемкеше, и рыба работала бы просто как контроллер мемкеш-очередь-субд?
2. Опять же если рыбу можно было бы рассматривать просто как контроллер, можно было бы реализовать на php ее? То есть приложение смотрит в memcache, если не находит там ничего, добавляет запись в очередь и отдает пустой ответ. А работающая рыба на фоне просто бы разруливала эту очередь. Была бы стандартная схема.
3. Опять же, может имело смысл расширить функционал memcache? По сути вам надо было его научить ходить в БД, добавлять очередь.
Интересная статья, но, кажется, можно было сделать проще. Дополнительно к мемкешу поднимается демон очереди, после чего пишется такая логика:
* Если попали — ОК
* Если промах — добавляем запрос в очередь
* На другом конце очереди крутятся воркеры на Perl/Python/ваш_любимый_язык, которые ходят с запросами в базу и кладут их в мемкэш.
Такое решение не рассматривалось?
* Если попали — ОК
* Если промах — добавляем запрос в очередь
* На другом конце очереди крутятся воркеры на Perl/Python/ваш_любимый_язык, которые ходят с запросами в базу и кладут их в мемкэш.
Такое решение не рассматривалось?
Мы думали об этом, более того, хотели именно так и реализовать. А потом придумали альтернативу. Мотивация была следующая:
* Один коннект и 1 запрос к хранилищу — это всегда лучше, чем два коннекта и два запроса (к хранилищу и диспетчеру очередей). Сеть тоже надо беречь.
* В нашем случае в приложении не пришлось ничего править.
*Это прикольно.
В качестве побочный продукта мы получили хранилище нужной нам структуры: у нас k=>v — это многие к одному, что в нашем случае очень хорошо.
* Один коннект и 1 запрос к хранилищу — это всегда лучше, чем два коннекта и два запроса (к хранилищу и диспетчеру очередей). Сеть тоже надо беречь.
* В нашем случае в приложении не пришлось ничего править.
*
В качестве побочный продукта мы получили хранилище нужной нам структуры: у нас k=>v — это многие к одному, что в нашем случае очень хорошо.
Sign up to leave a comment.
Что такое — выглядит как мемкеш, ведет себя как мемкеш, но не мемкеш?