Строковый литерал Sizeof

У нас есть несколько стратегий развертывания (существует больше, но я укажу на наиболее распространенное).

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 здесь .

46
задан CsTamas 8 September 2009 в 05:47
поделиться

2 ответа

  1. sizeof ("f") должен возвращать 2, один для 'f' и один для завершающего '\ 0'.
  2. sizeof (foo) возвращает 4 на 32-битной машине и 8 на 64-битной машине, потому что foo является указателем.
  3. sizeof (bar) возвращает 2, потому что bar - это массив из двух символов: 'b' и завершающего ' \ 0 '.

Строковый литерал имеет тип «массив размера N из const char », где N включает конечный ноль.

Помните, что массивы не распадаются на указатели при передаче в sizeof .

110
ответ дан 26 November 2019 в 20:11
поделиться

sizeof возвращает размер в байтах своего операнда. Это должно ответить на вопрос номер 1.;) Кроме того, строковый литерал имеет тип «array to n const char» при передаче в sizeof .

Ваши тестовые примеры, один за другим:

  • » f " - строковый литерал, состоящий из два символа, символ f и завершающий NUL.
  • foo - это указатель (редактировать: независимо от квалификаторов), а длина указателей в вашей системе составляет 4 байта ..
  • Для bar регистр такой же, как и "f" .

Надеюсь, что это поможет.

13
ответ дан 26 November 2019 в 20:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: