Извините, я новичок в этой концепции. В принципе, у меня есть сайт Django. Одно из представлений выполняет много работы и приводит к зависанию сервера из-за нехватки памяти. Я хочу воспользоваться функциональностью этого представления и заставить его работать на другом сервере (Сервер B) и заставить главный сервер (Сервер A) взаимодействовать с ним, как если бы они оба работали на одном сервере. Мое первое предположение: мне нужно заставить сервер B прослушивать порт, с которым сервер A может разговаривать, и наоборот.
Я не прошу однозначного ответа, так как этот вопрос сам по себе может быть расплывчатым. Возможно, я смогу добиться этого лучше с помощью балансировки нагрузки и т. Д., Я не уверен. Любые ссылки, указывающие на информацию о том, как я могу достичь того, чего хочу, очень ценятся. Спасибо
Я бы посоветовал изучить общие способы использования Apache mod_proxy.
Кроме того, по тому же пути вы можете заинтересоваться чем-то вроде Varnish для кеширования.
Хорошо подумайте о том, как разбить приложение на функциональные блоки, если вы еще этого не сделали, и сократить общий объем проделанной работы. Можно кешировать? Если вы можете, сделай это. :)
Я бы, вероятно, обратился к какой-то инфраструктуре обмена сообщениями, чтобы решить эту проблему. Сервер A может обрабатывать запросы внешнего интерфейса, а сервер B может генерировать данные.
Сервер A «слушает» очередь данных, сгенерированных сервером B. Вам также следует попытаться кэшировать запросы и сгенерированные данные, чтобы вы не восстанавливали одни и те же данные для нескольких похожих запросов.
Сервер B прослушивает запросы, пересылаемые из представления на сервере A, обрабатывает данные и возвращает сгенерированные данные через очередь ответов.
Хм. Что почитать ..
http://blogs.digitar.com/jjww/2009/01/rabbits-and-warrens/ <- Отличная статья о RabbitMQ и python.
http://docs.djangoproject.com/en/1.2/topics/cache/ <- Кеширование представлений Django. Это поможет значительно снизить вашу нагрузку (особенно если вы используете memcached вместо кэширования на диске, тогда вы также получите распределенный кеш.)
http://oreilly.com/catalog/9780596102357 <- «Создание масштабируемых веб-сайтов» даст вам хорошее представление о некоторых других способах сделать ваше веб-приложение масштабируемым.