Помогите мне выбрать платформу веб-сервиса для расширения существующего веб-сервиса python - PullRequest
2 голосов
/ 15 июня 2011

У меня есть простой веб-сервис, который мне нужно значительно увеличить.

Я пытаюсь решить, куда пойти среди различных веб-платформ, балансировщиков нагрузки, серверов приложений (например, Mongrel2, Tornado и nginx)., mod_proxy).

У меня есть существующее приложение Python (в настоящее время предоставляемое через BaseHTTPServer), которое принимает некоторые данные JSON (около 900 КБ на запрос) и возвращает некоторые данные JSON (около 1 КБ).Обработка алгоритмическая и выполняется в смеси Python и некоторого C (через Cython).

Это уже сильно оптимизировано (до 1,1 секунды на задание с> 1 часа).Но я не могу оптимизировать это дальше.Хотя я переписываю что-то более дружественное к потокам, мне нужно горизонтальное масштабирование (возможно, ec2).

Нет сессии или состояния, но время запуска приложения довольно медленное (даже стравление и обналичивание).Загрузка всех исходных данных занимает около 3 секунд.После запуска требуется около 1,1 секунды на запрос.Я

Может быть, я мог бы раскрутить несколько копий, а затем реверсировать их через прокси?Может быть, я мог бы создать какой-нибудь классный рабочий пул в одной из этих платформ?Но я все еще в неизвестных неизвестных здесь.

1 Ответ

1 голос
/ 15 июня 2011

Во-первых, вы должны отделить свой слой веб-сервиса от сжатия чисел. Используйте внешнюю очередь заданий (например, http://celeryproject.org/), для разгрузки веб-интерфейса. Затем можно масштабировать каждую часть независимо друг от друга.

Вам следует искать облачных провайдеров IaaS-типа (EC2, Rackspace, Linode, Softlayer и т. Д.), Где вы должны иметь возможность автоматически добавлять узлы (предпочтительным способом было бы раскрутить предварительно настроенное изображение, чтобы минимизировать время настройки узла).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...