экономичный способ масштабирования сайта php + mysql - PullRequest
3 голосов
/ 12 декабря 2011

Мой партнер и я пытаемся запустить веб-сайт, размещенный в облаке.Он имеет довольно большой трафик ajax, а бэкэнд обрабатывает денежные транзакции, поэтому нам нужен ACID в некоторых таблицах БД.

В настоящее время все работает на одном сервере.Часть трафика AJAX кэшируется в текстовых файлах.

Вопрос:

  1. Каков наилучший способ масштабирования сервера базы данных?Я думал о перемещении mysql в отдельные экземпляры и выполняю дублирование master-master.Однако это кажется сложным, и я слышал, что может потерять свойства ACID даже с InnoDB?Является ли Amazon RDS хорошим решением?

  2. Веб-сервер не содержит состояний, за исключением некоторых пользовательских файлов журнала и файлов кэша ajax.Какой хороший способ масштабирования до нескольких веб-серверов?Я предполагаю, что пользовательские файлы журналов могут быть перемещены в надежную общую файловую систему или БД, но я не уверен, что делать с согласованностью файлов кэша AJAX на нескольких серверах.(Я не забочусь о потере / var / log / *, если веб-сервер умрет)избыточность так интересно, как лучше сделать это дешево.

спасибо

Ответы [ 2 ]

1 голос
/ 12 декабря 2011

взгляните на этот пост.в сети множество презентаций о масштабируемости.Несколько вещей, которые я предлагаю иметь в виду:

  • планируйте раннее разделение данных [даже если вы не собираетесь делать это немедленно]
  • попробуйте использовать механизмы вроде memcached для ограничения числазапросов, отправляемых в базу данных
  • , готовятся к обслуживанию статического контента из другого домена, в более долгосрочной перспективе - с сервера ngin-x-alike и более поздних CDN

избыточность - зависит от вашегонеобходимо.для вашего сайта приемлем режим «только для чтения»?если это так - используйте репликацию mysql + rsync статических файлов, и в случае сбоя ваш сайт будет работать в этом режиме, пока вы не восстановите главный узел.если вам нужна высокая доступность - посмотрите либо на репликацию drbd [по крайней мере для mysql], либо на настройку с автоматическим продвижением подчиненного сервера, чтобы он стал главным узлом.

Вы можете найти следующие интересные:

0 голосов
/ 11 февраля 2012

Другой вариант - использование масштабируемой платформы, такой как Amazon Web Services.Вы можете начать с микроэкземпляра и настроить балансировку нагрузки, чтобы при необходимости запускать больше экземпляров.

Как только вы определите средние требования к ресурсам, вы сможете изменить размер своего изображения к большему или меньшему в зависимости от ваших потребностей.

http://aws.amazon.com http://tuts.pinehead.tv/2011/06/26/creating-an-amazon-ec2-instance-with-linux-lamp-stack/ http://tuts.pinehead.tv/2011/09/11/how-to-use-amazon-rds-relation-database-service-to-host-mysql/

Amazon позволяет вам либо балансировать нагрузку, либо изменять размер экземпляра в зависимости от спроса.

...