2016-12-09 14 views
0

Я использую кеш-память Couchbase. Существует один сервер couchbase. У меня есть несколько серверов для размещения приложения и следуйте небольшим изменениям стратегии развертывания синего зеленого цвета для развертывания приложения на всех серверах.
Стратегия развертывания. Рассмотрим первые 50% серверов как A и остальное как B.
1. Отсоедините A от ELB, B все еще обслуживает запросы.
2. Разверните приложение на A.
3. Подключите A к ELB.
4. Отсоедините B от ELB, но у B есть несколько запросов на обработку.
5. Недействительный кэш.
6. Новые запросы идут в A, а B завершает запросы, которые он ожидал.
7. Сообщение о завершении ожидающих запросов, начните развертывание по B.
8. После развертывания на B, повторно подключите B к ELB.Недействительный и обновляющий кэш при развертывании на несколько серверов

Проблема возникает с кешем на сервере Couchbase. В то время как B имеет ожидающие запросы, которые выполняются на старом коде, A настроен на обработку новых запросов, запущенных на новом коде. Кэш-сервер не содержит кэшированных данных после шага 5.
Но на шаге 6 B будет загружать данные в кеш в соответствии со старым кодом. Если A использует этот кеш, приложение будет разбиваться на A.
Если на шаге 6 A загружает данные в кеш, а B использует данные кэширования, приложение снова разрывается на B.
Как решить эту проблему с ключевым разделением где оба A и B одновременно обслуживают запросы? Любые изменения в стратегии развертывания также приветствуются.

+1

Добавление тега релиза в кэш-ключ (например, управление версиями), вероятно, является наиболее распространенным решением. Это позволяет избежать необходимости сине-зеленого уровня кэша. –

+0

@BenManes Вы можете переместить его, чтобы ответить, и это решает мою проблему. – rohanagarwal

ответ

0

Добавление тега выпуска к ключу кеша (например, управление версиями), вероятно, является наиболее распространенным решением. Тег release различает данные, кэшированные различными версиями API. Но нужно помнить о потребности в памяти, поскольку использование памяти будет удвоено. Кроме того, не забудьте удалить кеш для более старых версий API, если они больше не принимают запросы.