Минимизация прерываний работы клиентов во время развертывания - PullRequest
0 голосов
/ 09 апреля 2011

Как вы внедряете новый код в производство, чтобы клиентский опыт не прерывался?

Давайте предположим, что веб-сайт электронной коммерции находится в среде с балансировкой нагрузки, где ни одно состояние сеанса не является общим.Tomcat - это сервер приложений.

Единственные идеи, которые я могу придумать, - это (1) использовать JavaRebel, но у меня нет опыта в этом, и я не знаю, что может пойти не такпример, если вы удаляете участника из класса) (2) в режиме реального времени отслеживает, где ваши пользователи находятся в процессе совершения покупок, и предотвращает добавление новых товаров в корзину;ждать, пока все существующие покупатели не завершат свой заказ или не истек;затем выключите сервер и разверните новый код.

Есть идеи?Или это ситуация, когда важно обмениваться данными сеанса между веб-серверами с чем-то вроде терракоты?Опять же, как вы развертываете новый код на веб-серверах, где элемент объекта сеанса был удален или добавлен?

Ответы [ 2 ]

2 голосов
/ 09 апреля 2011

Общие подходы, которые я видел:

  • если не так много состояний, то сохраните его на стороне клиента в файле cookie - это также имеет то преимущество, что не требует соответствия IP, поэтому запросы могут быть распределеныболее равномерное
  • общее хранилище (БД, терракота и т. д.) - очевидно, это может стать узким местом
  • развертывание в спокойное время и надеется, что никто не заметит
  • удаление сервера из пуладля новых сеансов, затем следите за журналами и ждите, пока запросы не прекратятся
1 голос
/ 09 апреля 2011

Общий подход состоит в том, чтобы вынимать один сервер за раз из пула балансировки нагрузки, развертывать в нем новый код и затем возвращать его в пул.

...