У нас есть несколько стратегий развертывания (существует больше, но я укажу на наиболее распространенное).
1) Прокручивающееся Обновление - Нам нужно только одно развертывание. Это добавит переходные приставки с новым содержанием к текущему развертыванию и завершению старых переходных приставок версии в то же время. Некоторое время развертывание будет содержать соединение старой и новой версии.
2) Сине-зеленое Развертывание - Это - самая безопасная стратегия, и это рекомендуется для производственных рабочих нагрузок. У нас должно быть два сосуществования развертывания т.е. v1 и v2. Я - большинство случаев, которые старое развертывание истощает (закройте все соединения/сессии со старым развертыванием), и перенаправил все новые сессии/соединения к новому развертыванию. Usualy оба развертывания являются keept некоторое время как Производством и Этапом.
3) канарское Развертывание - самое твердое. Здесь Вам также нужно по крайней мере два развертывания, работающее одновременно. Некоторые пользователи будут подключены к старому приложению, другие будут перенаправлены к новому. Это может быть достигнуто через загрузку balancig/proxy конфигурация слоя. В этом случае HPA не позволяется, потому что мы используем два развертывания одновременно, и каждое развертывание будет иметь собственный независимый автосчетчик.
Как @Mamuz, на который указывают в комментарии Сине-зеленая Стратегия без, включают звуки уровня обслуживания намного лучше в этом случае, чем обновление прокрутки.
Другая опция, которая могла бы быть полезной в этом сценарии, Сине-зеленое Развертывание с ISTIO использование Трафика, Смещающегося . В этой опции Вы могли разделить трафик как запрос т.е. от 100-0, 80-20, 60-40, 20-80 к 0-100%
Используя ISTIO, и HPA шаг за шагом описан в этот статья.
можно читать об управлении трафиком здесь .
Пример Istio и K8s здесь .
sizeof ("f")
должен возвращать 2, один для 'f' и один для завершающего '\ 0'. sizeof (foo)
возвращает 4 на 32-битной машине и 8 на 64-битной машине, потому что foo является указателем. sizeof (bar)
возвращает 2, потому что bar - это массив из двух символов: 'b' и завершающего ' \ 0 '. Строковый литерал имеет тип «массив размера N из const char
», где N включает конечный ноль.
Помните, что массивы не распадаются на указатели при передаче в sizeof
.
sizeof
возвращает размер в байтах своего операнда. Это должно ответить на вопрос номер 1.;) Кроме того, строковый литерал имеет тип «array to n const char» при передаче в sizeof
.
Ваши тестовые примеры, один за другим:
» f "
- строковый литерал, состоящий из
два символа, символ f
и завершающий
NUL. foo
- это указатель (редактировать: независимо от квалификаторов), а длина указателей в вашей системе составляет 4 байта .. bar
регистр такой же, как и "f"
. Надеюсь, что это поможет.