Если у меня есть приложение, оно выглядит следующим образом:
Клиент <--> ELB <--> EC2
Может ли задержка E2E быть ниже, если я настрою ELB как режим сквозной передачи TCP, чем я сделаю его как прослушиватель HTTP?
Причина, по которой я предполагаю, что режим сквозной передачи TCP может улучшить мою задержку E2E (ниже), заключается в том, что ELB в этом сценарии почти не вызывает дополнительных затрат на переход, чем в следующем сценарии:
Клиент <--> EC2
Я правильно понимаю? Пожалуйста, проведите меня, если нет.
Ваше понимание не совсем правильное, потому что сквозной TCP действительно полезная нагрузка пройти через. Балансировщик принимает соединение, затем создает новое соединение с экземпляром, а затем передает полезные данные туда и обратно по соединению. Трафик по-прежнему проходит через дополнительное устройство - балансировщик.
Вряд ли это существенно повлияет на задержку, потому что после того, как запрос перерезан в режиме HTTP, поведение будет аналогичным: байты копируются из одного соединения в другое.
В недостаток режима TCP заключается в том, что вы теряете то, что может сделать классический ELB в режиме HTTP: повторно использовать одни и те же соединения с экземплярами для обработки последовательных запросов для нескольких клиентов - он удерживает незанятые соединения, открытые для экземпляров, ожидая дополнительных клиентских запросов к прибыть, что означает меньшее количество инициируемых подключений к экземплярам и множество запросов, потенциально использующих уже установленные подключения.
В зависимости от приложения ALB - балансировщик нагрузки приложения - предлагает дополнительное преимущество, не только повторно используя соединения экземпляров, но и поддерживает HTTP / 2 на стороне браузера, позволяя браузеру отправлять параллельные запросы, которые распределяются между экземплярами. как параллельные запросы HTTP / 1.1.
Или, если вам действительно нужен сценарий сквозной передачи TCP, вы, вероятно, захотите NLB - балансировщик сетевой нагрузки. В отличие от двух других типов балансировщиков, NLB фактически изменяет поведение сети для создания динамических преобразований NAT в экземпляры - отдельной системы, обрабатывающей трафик, нет, поскольку NLB являются виртуальными объектами. Балансировщики Classic и Application фактически (насколько можно судить) реализованы на «скрытых» экземплярах EC2.