Я создаю асинхронный веб-сервис RESTful и пытаюсь выяснить, какое решение является наиболее масштабируемым и высокопроизводительным.Первоначально я планировал использовать конфигурацию FriendFeed, используя одну машину с nginx для размещения статического контента, выступать в качестве балансировщика нагрузки и выступать в качестве обратного прокси-сервера для четырех машин, на которых работает веб-сервер Tornado для динамического контента.Рекомендуется запускать nginx на четырехъядерном компьютере и каждый сервер Tornado на одноядерном компьютере.Amazon Web Services (AWS), по-видимому, является наиболее экономичным и гибким провайдером хостинга, поэтому вот мои вопросы:
1a.) В AWS я могу найти только c1.medium (двухъядерный процессор и 1,7 ГБ памяти).) типы экземпляров.Значит ли это, что у меня должен быть один экземпляр nginx, работающий на c1.medium, и два сервера Tornado на экземплярах m1.small (одноядерный ЦП и память объемом 1,7 ГБ)?
1b.) Если мне нужно увеличить масштаб,Как бы я связал эти три экземпляра с другими тремя экземплярами в той же конфигурации?
2a.) Более логично размещать статический контент в корзине S3.Будет ли nginx по-прежнему размещать эти файлы?
2b.) Если нет, то производительность будет страдать из-за того, что nginx не будет их размещать?
2c.) Если nginx не будет размещать статический контент,это действительно только действует как балансировщик нагрузки.Есть отличная статья здесь , которая сравнивает производительность различных облачных конфигураций и говорит о балансировщиках нагрузки: «Как HaProxy, так и Nginx перенаправляют трафик на уровне 7, поэтому они менее масштабируемы из-за завершения SSL и повторного согласования SSLДля сравнения: Rock перенаправляет трафик на уровень 4 без затрат на обработку SSL. "Вы бы порекомендовали заменить nginx в качестве балансировщика нагрузки на тот, который работает на уровне 4, или у Amazon Elastic Load Balancer достаточно высокая производительность?