К сожалению, я недавно подключился к этому проекту, а с прошлым программистом связь утеряна.
Задача следующая: Обрабатывать каждый запрос отдельным потоком на нескольких серверах с общей базой. Приложение высоконагружаемое, потому в данный момент применяется memcache и shared memory.
Сейчас смотрю в сторону gaerman и redis. Мне не удалось найти отзывов по работе этих систем. Если кто то имел опыт работы с одним из этих продуктов, прокомментируйте пожалуйста. Интересуют недостатки и преимущества.
К сожалению, форки в PHP ведут себя нестабильно, приходится использовать exec для запуска процессов, может есть другие методы?
Спустя 3 минуты, 46 секунд (16.07.2011 - 19:03) Nikitian написал(а):
Почему решили memcache на redis?
Запросы настолько нагруженные, что каждый надо обрабатывать на нескольких серверах или всё же идёт распределение нагрузки балансером?
Запросы настолько нагруженные, что каждый надо обрабатывать на нескольких серверах или всё же идёт распределение нагрузки балансером?
Спустя 5 минут, 25 секунд (16.07.2011 - 19:09) ADiel написал(а):
Это сокет серверы со своим протоколом, нужна быстрая обработка больших очередей. Масштабируемость больше для распределения нагрузки. Думаю, что можно реплицировать как master-master так и master-slave
В memcache нет мьютексов, но он масштабируемый. По сути можно сделать свои мьютексы, но это костыль. Должны же быть средства.
В memcache нет мьютексов, но он масштабируемый. По сути можно сделать свои мьютексы, но это костыль. Должны же быть средства.
Спустя 4 минуты, 17 секунд (16.07.2011 - 19:13) ADiel написал(а):
Насчет балансера.. Он будет работать в случае отсутствия ответа одного из серверов. На каждом сервере будет своя рабочая база, но должна быть возможность обмена частью информации. Тут до конца еще не продумано.
В данный момент нужно одно. Семафоры в мемкеше
Допустим, есть мемкеш сервер и два воркера. Клиенты, подключены к разным воркерам. На мемкеш сервере появляется запись и передается на воркеры, воркеры, в свою очередь, посылают сообщение клиентам о новой записи. КЛиенты должны записать туда какую то информацию. Записать может только один. Допустим, что это и есть мемкеш. Оба клиента одновременно пытаются послать запрос на запись, так совпало, что оба воркера так же в одно и то же время начали писать. Получим коллизию. Представьте, что клиентских запросов на запись 5000 одновременно
В данный момент нужно одно. Семафоры в мемкеше
Допустим, есть мемкеш сервер и два воркера. Клиенты, подключены к разным воркерам. На мемкеш сервере появляется запись и передается на воркеры, воркеры, в свою очередь, посылают сообщение клиентам о новой записи. КЛиенты должны записать туда какую то информацию. Записать может только один. Допустим, что это и есть мемкеш. Оба клиента одновременно пытаются послать запрос на запись, так совпало, что оба воркера так же в одно и то же время начали писать. Получим коллизию. Представьте, что клиентских запросов на запись 5000 одновременно
Спустя 14 часов, 22 минуты, 32 секунды (17.07.2011 - 09:36) ADiel написал(а):
Жаль, что никто не в курсе. Я ожидал горячих споров =)
Может тему не там создал?
Может тему не там создал?
Спустя 19 минут, 3 секунды (17.07.2011 - 09:55) Nikitian написал(а):
Хм... Ни разу не случалось использовать более одного воркера мемкеша.
Сейчас выходные, вот и неактивно отвечают.
Сейчас выходные, вот и неактивно отвечают.
Спустя 5 дней, 4 часа, 42 минуты, 4 секунды (22.07.2011 - 14:37) ADiel написал(а):
Выходные прошли, а мы уже выбрали Redis
Спустя 3 минуты, 13 секунд (22.07.2011 - 14:40) waldicom написал(а):
Gearman не выбрали по какой причине? Не подходит, redis в данном случае лучше? Было бы интересно почитать.
Спустя 2 часа, 38 минут, 7 секунд (22.07.2011 - 17:18) ADiel написал(а):
Я не до конца понимал ситуацию. Gearman немного не тот продукт, что нам был нужен. Он хорош как средство управления задачами или тасками, Redis же - key=>value хранилище. Т.е. Абсолютно разные продукты. Возможно, будем использовать их вместе, время покажет =)
Если называть вещи своими именами, то gaerman с легкостью может контролировать множество демонов с разных серверов, котовые используют достаточно быструю key\value базу, репелицирующуюсякакой ужас на несколько серверов. Т.е. в итоге, имея шаблон серера, можем ставить их N - количество, не задумываясь. Нагрузка будет распределяться равномерно.
UPD: Позже, как опробую все это на практике, напишу пост в блоге. Жаль, на хабре меня нет =)
Если называть вещи своими именами, то gaerman с легкостью может контролировать множество демонов с разных серверов, котовые используют достаточно быструю key\value базу, репелицирующуюся
UPD: Позже, как опробую все это на практике, напишу пост в блоге. Жаль, на хабре меня нет =)
_____________
Ищи меня тут (ilyaplot)