java http2协议,「是时候升级java11了」HTTP/2.0 协议_刘一含的博客-程序员宅基地

技术标签: java http2协议  

专栏目录

前言

看过前面几篇文章的同学是否也在尝试将Jdk升级到Java11呢?今天笔者要讲解的是微服务内部升级到 HTTP/2.0 协议。 http2优势想必大家都知晓,在这不做过多的介绍。说起 HTTP/2.0 大家所熟知的应该是 Over TLS 版,现有支持HTTP/2.0的浏览器都是实现的 Over 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 的压力(加解密非常费 CPU),而且微服务内部 tls 也增加了证书的维护成本。

升级 h2c

Spring boot 容器笔者使用的是 Undertow,网关使用的 Spring cloud gateway,今天我们主要讲解这2个组件的升级到 h2c。

Undertow 升级到 h2c 打开 Undertow 官网:undertow.io,我们可以看到首页上有这也一个说明:

5f334cb15d3e1573ed06c9bb4503d9ac.png

google 翻译一下:支持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;

}

}

复制代码

spring cloud gateway 升级到 h2c spring cloud gateway server 也是支持 h2c 的配置比较容易,只需开启配置即可,具体逻辑可以查看下图源码。

a73812c01c62de44e8cca6d3e58889b4.png

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 response = client.send(request, HttpResponse.BodyHandlers.ofString());

System.out.println(response.version()); // HTTP_2

System.out.println(response.body()); // test

}

复制代码

后言

看到这里大家是不是跃跃欲试。当然,很多事情也不是那么一帆风顺。后面的一篇文章将会继续帮助大家趟坑。 等等好像有什么不对,我们的专栏不是 java11 么?怎么变成了 h2c? 别着急后面一篇文章将为大家解密,喜欢我们的文章的朋友记得关注我们。

声明

本系列文章由微服务核心组件mica作者如梦技术整理撰写, 如有参考或者转载,请保留原作者和注明出处。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_28913137/article/details/115778171

智能推荐

python draw颜色_从Python中的颜色字典绘制不同颜色的线_weixin_39568926的博客-程序员宅基地

我试图用15种不同的颜色在地图上标出15种不同风暴的路径。路径的颜色应取决于风暴的名称。例如,如果风暴的名字是奥黛丽,那么在地图上风暴路径的颜色应该是红色。有人能帮我指个方向吗?下面是我的代码:import numpy as npfrom mpl_toolkits.basemap import Basemapimport matplotlib.pyplot as pltimport csv, os...

外媒:英国越迟“脱欧” 经济代价越高昂_weixin_34268753的博客-程序员宅基地

中新网1月25日电 据新加坡《联合早报》25日报道,英国可能推迟“脱欧”的消息带动英镑汇率上涨,但对英国经济来说,延迟“脱欧”的后果将比议会接受现有“脱欧”协议更糟糕。报道称,英国原定3月29日“脱欧”,推迟这一期限虽能消除因“无协议脱欧”而引发混乱的风险,但摩根大通资产管理公司指出,这么做也会延长英国所面对的不确定性,而且也无法帮助政府取得更好的“脱欧”结果。英国前景的不明朗已重创英国商业投资,...

torch.max讲解-- 指定维度下,数值最大位置设为1其他为0_计算机视觉-Archer的博客-程序员宅基地_torch最大值的位置

x是输入张量dim指定维度max表示取最大值import torchif __name__ == '__main__': x = torch.randn([1, 3, 4, 4]).cuda() mask = (x == x.max(dim=1, keepdim=True)[0]).to(dtype=torch.int32) result = torch.mul(mask, x) print(x) print(mask) pri

java笔试题库数据库,实战篇_普通网友的博客-程序员宅基地

part 1Java基础核心技术总结万事都离不开根基,Java基础对于一些老鸟来说可能已经很熟悉了,但是对于很多开发5年以下的朋友掌握的或许不是很牢固,因此这份笔记更适合温故而知新。Part 2并发编程(架构师筑基必备)并发编程都掌握不好,你凭什么写出优质的代码?大厂必问并发编程技术栈,都在这张图上了:Part 3JVM(架构师筑基必备)JVM和并发编程都是Java语言中非常重要的技术点,同时也是带有一定难度的基础内容,在面试过程中JVM也是常问的面试内容。P8大佬自编笔记—

[译] 第三十天:Play Framework - Java开发者梦寐以求的框架_weixin_30597269的博客-程序员宅基地

前言30天挑战的最后一天,我决定学习Play Framework.我本来想写Sacla,但是研究几个小时后,我发现没法在一天内公正评价Scala,下个月花些时间来了解并分享经验。本文我们先来看看Play框架基础,再开发个程序。什么是Play框架?Play是一个开源的现代web框架,用Java和Scala写可扩展的web程序。它能自动加载更新使得极大提高生产率。Play设计了无状态...

注册表详细设置二_jscdc_toya的博客-程序员宅基地

《每个资源管理器窗口使用单独进程》 [HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Advanced] "SeparateProcess"=dword:00000001《每个IE窗口使用单独进程》 [HKEY_CURRENT_USER/Software/Microsoft/Windows/Current

随便推点

Python for-else 用法_程序媛三妹的博客-程序员宅基地_pythonfor和else

在 Python 中,else 不仅可以与 if 搭配使用,还可以与 for 结合。但 else 里面的语句不一定执行,取决于 for 循环能否正常执行完毕,如果 for 循环中有 break 字段等导致 for 循环没有正常执行完毕,那么 else 中的内容也不会执行。示例如下:...

查看文件编码格式_ptzrbin的博客-程序员宅基地

Demo:http://download.csdn.net/detail/ptzrbin/5426887 package com.test;import info.monitorenter.cpdetector.io.CodepageDetectorProxy;import info.monitorenter.cpdetector.io.JChardetFacade;imp

artoolkit video 数据转换到 IplImage*_weixin_30342209的博客-程序员宅基地

代码 //************************************// Method: Fill_CV_IplImage// FullName: Fill_CV_IplImage// Access: public // Returns: bool// Qualifier:// Parameter: int width// Parameter: int ...

计算机组成原理测试题——第5章 输入输出系统(下)_影龙武的博客-程序员宅基地

计算机组成原理测试题——第5章 输入输出系统(下)1单选下图可以表示哪种控制方式的CPU工作效率?(A)A. DMA方式B.程序中断方式C.无正确答案D.程序查询方式2单选下列功能不能由中断技术实现的是(B)A.在突然掉电的瞬间立刻启动备份电源,并做一些必要处理B.主存和设备交换信息时不通过CPUC.使CPU可以即时相应外部信号D.解决I/O设备工作速度较低,无法与CPU速度匹配的问题3单选下图表示的I/O设备与主机信息传送的控制方式为(D)A.程序查询B.无正确答

springboot+springsecurity+jwt进行系统权限开发_真实可见的博客-程序员宅基地

说明:由于涉及的东西较多,只是初略的写了一下,思路有点断层或跳跃,敬请谅解!1、通过idea创建一个springboot项目,然后引入spring-security与jwt的jar包依赖;<!-- 安全框架 Spring Security --><dependency> <groupId>org.springframework.boot<...

前赤壁赋--苏轼_"小夜猫&小懒虫&小财迷"的男人的博客-程序员宅基地

原文:壬戌之秋,七月既望,苏子与客泛舟游于赤壁之下。清风徐来,水波不兴。举酒属客,诵明月之诗,歌窈窕之章。少焉,月出于东山之上,徘徊于斗牛之间。白露横江,水光接天。纵一苇之所如,凌万顷之茫然。浩浩乎如冯虚御风,而不知其所止;飘飘乎如遗世独立,羽化而登仙。于是饮酒乐甚,扣舷而歌之。歌曰:“桂棹兮兰桨,击空明兮溯流光。渺渺兮予怀,望美人兮天一方。”客有吹洞箫者,倚歌而和之。其声呜呜然,如怨...

推荐文章

热门文章

相关标签