2016-01-30 3 views
0

Мне было интересно об этом навсегда. Скажем, у меня есть вызов API, с которым я могу получить доступ через www.example.com/api?call & param = value, и это что-то делает на моем сервере, который написан на PHP как мой язык выбора.PHP: Непрерывное развертывание кода на сервере

Теперь, если я хочу обновить файл, который работает непосредственно с этой конечной точкой API, мне нужно загрузить его на сервер и эффективно заменить старую версию документа.

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

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

Итак, мой простой вопрос: как мне обойти эту проблему с развертыванием нового кода? Как это делают компании с массовым пользовательским трафиком? Можете ли вы предоставить мне больше ссылок, чтобы прочитать об этом причуде? Или, по крайней мере, сказать мне жаргон для этого события?

спасибо.

ответ

1

Или, по крайней мере, сказать мне жаргон для этого события?

Трудно сказать, что именно выдаст вам опыт, но это выглядит, как вы говорите о «обновлении сервера без простоев». Вот как я хотел бы на это ссылаться. Вероятно, для этого используются другие термины.

Так что мой простой вопрос, как я могу обойти эту проблему с развертыванием нового кода?

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

Как делают компании с массовым пользовательским трафиком?

стратегия «обновления опрокидывания» обычно используется в распределенных средах обработки массовых движений. Идея основана на обновлении нескольких хостов один за другим. В то время как во время обновления один хост отключен, трафик перенаправляется другим живым. Когда хост снова встает, другой хост снимается. Так, пока все хосты не будут обновлены.

«Переключение» - это частичный случай обновления «опрокидывания», когда имеется только один хост, т. Е. Не распространяется.Идея проста, новый код развертывается в новую точку обслуживания (обычно это новый хост, особенно если обновление происходит на уровне системы). Новый сервис работает параллельно со службой старой версии. Когда новая служба запущена и запущена, вы переключаете трафик с старого на новый (обновление записей DNS, правил маршрутизации http-сервера или другого в зависимости от уровня, на котором вы переключаете). Когда все подключения/клиенты будут перенаправлены на новую услугу, старая служба будет удалена.

Можете ли вы предоставить мне больше ссылок, чтобы прочитать об этом причуда?

Вот пример того, как переход может быть реализован для PHP приложение: https://webmasters.stackexchange.com/questions/22165/updating-a-web-app-without-any-downtime Я не уверен, если он реализует «без простоев» стратегии или просто «минимальное время простоя» стратегии.

+0

Спасибо Эндрю! У меня есть чтение! – lmenus

Смежные вопросы