Масштабируемость 101: Как я могу разработать масштабируемое веб-приложение с помощью PHP?

Я создаю веб-приложение и у меня есть пара быстрых вопросов. Из того, что я узнал, не следует беспокоиться о масштабируемости при первоначальной сборке приложения, а беспокоиться следует только при увеличении трафика. Однако, поскольку это мое первое веб-приложение, я не совсем уверен, следует ли мне применять подход, при котором я разрабатываю вещи специальным образом, а затем «исправляю» их. Я читал истории о том, как люди начинают работу с приложением, которое привлекает миллионы пользователей за неделю или две. Не то чтобы я столкнулся с такой же ситуацией, но я не могу не задаться вопросом, как эти люди это делают?

В настоящее время я купил учетную запись общего хостинга на Lunarpages, и это помогло мне начать сборку и тестирование приложения. Однако мне интересно узнать, как создать такое же приложение с возможностью масштабирования с использованием облака, например Amazon EC2. Насколько я понимаю, я вижу несколько компонентов:

  • Существует балансировщик нагрузки, который сначала получает запросы, а затем решает, куда направить каждый запрос.
  • Этот запрос затем обрабатывается репликой сервера, которая затем обрабатывает запрос и обновляет (при необходимости) базу данных и отправляет ответ клиенту
  • . Если поступает аналогичный запрос, затем механизм кеширования, такой как memcached, включается в картинку и возвращает объекты из кеша
  • Черный ящик, который обрабатывает репликацию базы данных

В частности, я пытаюсь сделать следующее:

  • Настройка балансировщика нагрузки (моя домашняя работа показала, что HAProxy - один из таких балансировщиков нагрузки)
  • Настройка репликации для синхронизации баз данных
  • Использование memcached
  • Настройка Apache для работы с несколькими веб-серверами
  • Приложение для разделения на разделы для использования Amazon EC2 и Amazon S3 (мое приложение это то, что потребует много места для хранения)
  • Наконец, как я могу избежать ожогов при использовании сервисов Amazon? Поскольку это всего лишь этап обучения, я, вероятно, смогу использовать 2-3 сервера с простым балансировщиком нагрузки и репликацией, но до тех пор, пока я не хочу случайно не платить огромные деньги.

Я могу найти ресурсы по отдельным темам, но не могу найти что-то, что начиналось бы с общей картины. Может кто-нибудь помочь мне начать работу?

12
задан Legend 20 February 2011 в 07:19
поделиться