Форум сайта python.su
Да, еще. У нас практически все компоненты запускаются во множественном числе. Чатов, к примеру, может быть много — и пока они разделяют один redis, работающий на этом же сервере — они дешевые.
Процессов, обслуживающих общие данные о пользователе (с ними общаются другие компоненты, тот же чат) — больше. На один сервер они не помещаются. Поэтому такие процессы шардятся. В одном узле шарда (физическом сервере) крутятся сразу несколько процессов, работающих на единый редис — опять все быстро.
Не хватает — меняем правила распределения для шарда (тут нужна процедура миграции шарда со старой на новую схему, ее запускать приходится крайне редко) — и опять можем наращивать производительность «на лету».
Отваливаются отдельные процессы в шарде — но их соседи на том же узле временно берут на себя дополнительную нагрузку, пока монитор перезапускает уронившийся процесс.
При такой схеме асинхронность совсем не нужна. Её можно использовать, да только выгоды никакой нет.
Офлайн
poltergeistНу, вообще то не совсем так.
В Mongrel2 это вообще должно быть просто, т.к. никто обработчиками не управляет, они сами встают в строй и если помрут - этого никто не заметит.
Андрей СветловАндрей, здесь и дальше по тексту, это вы о Монгреле2?
Если монолит в 500 обработчиков на гринлетах занимает 100% CPU и при этом кушает память как не в себя — трудно найти конкретного виновника.
Андрей СветловВ Брубеке обработчики (воркеры) независимы и могут быть написаны на любом из поддерживаемых Монгрелом языках.
Обработчик имеет верхнеуровневый класс компонента. В классе создаются объекты сокетов, редиса и т.д. Всё, естественно, обёртки над низкоуровневыми I/O.
Андрей СветловНу, в Брубеке асинхронность тоже заканчивается на воркерах. Т.е. она используется только там, где от нее есть польза - на этапе приема и маршрутизации запросов клиентов.
При такой схеме асинхронность совсем не нужна. Её можно использовать, да только выгоды никакой нет.
Отредактировано (Июль 19, 2011 19:35:59)
Офлайн
Как по мне, асинхронность должна заканчиваться на самом Mongrel2. То, что разработчик цепляет на обратную сторону ZeroMQ сокетов, вполне может быть синхронным.
Про SSL ничего не знаю. Нам не нужно пока.
Офлайн