«Пришло время обновить протокол java11» HTTP/2.0

Java

Каталог столбцов

  1. Пришло время обновить преимущества java11-01-jdk11 и опции jdk
  2. Пора обновить java11-02-Upgrade jdk11 и шагнуть на яму
  3. Пришло время обновить настройки параметров JVM виртуальной машины java11-03
  4. Пришло время обновить java11-04 http2 Clear Text (h2c) для связи http2 в микросервисах.
  5. Пришло время обновить java11 - 05 Препятствие и решение проблем связи h2c внутри микросервисов

предисловие

Студенты, прочитавшие предыдущие статьи, тоже пытаются обновить Jdk до Java11? Сегодня я хочу объяснить внутреннее обновление микросервисов до протокола HTTP/2.0. Преимущества http2 должны быть известны всем, поэтому я не буду здесь слишком много рассказывать. Говоря о HTTP/2.0, все должны быть знакомы сOver TLSВерсия, реализованы все существующие браузеры, поддерживающие HTTP/2.0Over TLSВерсия, Сегодня я покажу вам другую версию HTTP/2.0.HTTP/2.0 Clear Text.

HTTP/2.0 Clear Text

HTTP/2.0 Cleartext, именуемыйh2c(Эта аббревиатура будет использоваться позже). Используйте 101, чтобы изменить обновление согласования протокола наHTTP2соглашение, используяhttp2Нет шифрования, очень подходит微服务内部запрос. наслаждатьсяhttp2мультиплексирования, сокращенияtlsна серверcpuдавление (шифрование и дешифрование очень сильно загружают ЦП), а внутренние микросервисыtlsЭто также увеличивает стоимость обслуживания сертификата.

Обновитьh2c

Я использую загрузочный контейнер SpringUndertow, используемый шлюзомSpring cloud gateway, сегодня мы в основном объясняем обновление этих двух компонентов доh2c.

  1. Подводное обновление доh2cОткройте официальный сайт Undertow:undertow.io, мы видим, что на главной странице также есть описание:

Google Translate: поддержка обновлений HTTP, позволяющая мультиплексировать несколько протоколов через HTTP-порты.

/**
 * Undertow http2 h2c 配置
 *
 * @author L.cm
 */
@Configuration
@ConditionalOnClass(Undertow.class)
@AutoConfigureBefore(ServletWebServerFactoryAutoConfiguration.class)
public class UndertowHttp2Configuration {

	@Bean
	public ServletWebServerFactory servletWebServerFactory() {
		UndertowServletWebServerFactory factory = new UndertowServletWebServerFactory();
		// 开启 undertow http2
		factory.addBuilderCustomizers(builder -> builder.setServerOption(ENABLE_HTTP2, true));
		return factory;
	}

}
  1. обновление весеннего облачного шлюза доh2c spring cloud gatewayсервер также поддерживаетh2cКонфигурация относительно проста, просто откройте конфигурацию, и конкретную логику можно просмотреть в исходном коде ниже.
server:
  ssl:
    enabled: false
  http2:
    enabled: true

контрольная работаh2c

Выше описано, как запустить серверh2c, но успешно ли он включается можно узнать только после тестирования. Самый простой способ основан наjava11изHttpClientПриходите проверить это.

public static void main(String[] args) throws IOException, InterruptedException {
	HttpClient client = HttpClient.newBuilder().build();
	HttpRequest request = HttpRequest.newBuilder()
		.uri(URI.create("http://localhost:8081"))
		.build();
	HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
	System.out.println(response.version()); // HTTP_2
	System.out.println(response.body()); // test
}

послесловие

Посмотрите, все ли здесь хотят попробовать это. Конечно, многое не так гладко. Следующая статья продолжит помогать вам идти в яму. Подождите, кажется, что-то не так, наша колонка неjava11Какие? как это сталоh2c? Не волнуйтесь, следующая статья будет расшифрована для вас Друзья, которым нравятся наши статьи, не забудьте подписаться на нас.

утверждение

Эта серия статей подготовленаСлюда основного компонента микросервисаавтортехнология мечтыорганизовать письмо, Если есть какая-либо ссылка или перепечатка, пожалуйста, сохраните оригинального автора и укажите источник.