数据技术都能四世同堂,凭什么开发 30 岁就要被干掉?
NGINX向云原生演进,All in
OpenNJet
OpenNJet
HTTP 是互联网的重要骨干,通俗点说,就是它让用户能够加载网站。经过多年的发展,HTTP 已经从 HTTP/1.0 发展到 HTTP/1.1,HTTP/2,再到如今的HTTP/3,每一次的迭代,都会添加新功能满足当代的需求,比如安全、会话处理、应用程序层的要求。
从 HTTP/1.0 到 HTTP/2 ,HTTP 协议已经做了三次升级,但是流水的 HTTP,铁打的 TCP,因为TCP协议更加可靠,然而 HTTP/2 刚刚推出没多久,就已经有公司开始大力研发HTTP / 3 。随着互联网流量的不断增长,应用需求的不断增加,HTTP/2的缺点也越来越明显。
首先,HTTP/2 的最终版本并没有包含许多人们希望在 HTTP/1.1 基础上进行的改进。为了保持与 HTTP/1.1 的向后兼容,协议必须保留相同的
POST
请求 GET
、状态代码(200、301、404 和 500)等。
此外,一些已实现的功能还引入了安全问题。除了遗留的缺乏强制加密之外,还包括容易受到攻击的压缩页面标头和 cookie。
HTTP/3 的目标则是通过解决 HTTP/2 的传输相关问题,在所有形式的设备上提供快速、可靠且安全的 Web 连接。为此,它使用了一种名为 QUIC 的新传输层网络协议,该协议在用户数据报协议 (UDP) 上运行,而不是以前版本的 HTTP 使用的 TCP。
为什么HTTP/3很重要?
HTTP/3 功能的优势来自于底层的 QUIC 协议。QUIC(快速UDP互联网连接)是一种新的传输方式,与TCP相比,它减少了延迟。从表面上看,QUIC与UDP上实现的TCP + TLS+ HTTP / 2非常相似。由于TCP是在操作系统内核和中间设备固件中实现的,因此几乎不可能对TCP进行重大更改。但是,由于QUIC建立在UDP之上,因此它没有这样的限制。
QUIC相对于现有TCP + TLS + HTTP2的主要功能改进包括
-
采用TLSv1.3,显著缩短连接建立时间
-
改进拥塞控制
-
多路复用,解决队头阻塞
-
前向纠错
-
连接迁移
TCP必然是存在局限性的:
-
可能会间歇性地挂起您的数据传输;
-
不支持流级多路复用;
-
导致冗余通信;
QUIC 协议通过在底层传输机制中引入一些更改来解决这些 TCP 限制。
TCP已被证明是支持互联网流量增长的非常强大的传输协议。但是,根据设计,TCP从来不适合处理有损无线介质上的数据传输。在互联网的早期,有线连接是唯一存在的连接,连接每台联网的计算机,所以这从来都不是问题。
现在,智能手机和便携式设备比台式机和笔记本电脑更多,超过50%的互联网流量是通过无线传输的。随着这种增长,随着响应时间的增加,整体 Web 浏览体验已经恶化。有几个因素导致了这种情况,其中最重要的是无线覆盖不足时的队头阻塞。
谷歌将QUIC作为一些流行的Google服务的底层传输协议大大提高了响应速度和用户体验。通过将QUIC部署为流媒体YouTube视频的底层传输协议,谷歌报告称重新缓冲率下降了30%,这对视频观看体验产生了直接影响。
HTTP/3 的最佳用例
HTTP/3的目的是改善整体网络体验,特别是在高速无线互联网接入仍然不可用的地区。尽管 HTTP/2 非常适合其中一些应用程序,但 HTTP/3 在以下场景中增加了价值。
物联网 (IoT)
HTTP可能不是物联网的首选协议,但有些应用程序非常适合基于HTTP的通信。例如,HTTP/3 可以解决从连接的传感器收集数据的移动设备的有损无线连接问题。这也适用于安装在车辆或可移动资产上的独立物联网设备。由于HTTP / 3具有强大的传输层,因此通过HTTP访问此类设备更可靠。
实时广告竞价
当广告投放到网络浏览器时,系统会实时出价。 页面和用户信息被发送到广告交易平台,然后由广告交易平台将其拍卖给出价最高的广告客户。 所有可以向消费者投放广告的公司都出价成为给人留下这种印象的公司。 这是对广告服务网络提供的空间的算法竞争。
拥有只需要一次确认(一次握手)的连接可以极大地提高出价的性能,并允许出价加载得更快,确保页面加载不会因这一系列竞争而延迟,更快的广告加载需要更快的页面加载。
微服务
在微服务网格中,为了获取数据,会浪费大量时间浏览所有微服务。 HTTP 始终是最慢的跃点。 因此,在每个系统之间发出每个请求的速度越快(以千分之一秒而不是百分之一秒为单位),数据隔离效果就越好,网络上的复制数据数量就越少。
QUIC协议的优势是握手次数相对较少,因此你可以在个位数毫秒内就把这些请求传递出去,并且你的微服务可以更纯粹,从而实现真正的单一责任。这里使用HTTP/3的好处更多是来自于快速完成每个微交互 ,少量来自于访问大数据时的高吞吐量。
如何基于 OpenNJet 搭建 HTTP/3 Web 服务
来测试您网站的速度以及互联网连接的速度
在CentOS 7下的 HTTP/3 测试工具可从
Gitee 下载
Gitee 下载
具体操作流程参照
https://njet.org.cn/cases/http3_support/说明文章
https://njet.org.cn/cases/http3_support/说明文章
使用第三方工具
目前最新版本的Firefox和Chrome浏览器都已经支持QUIC协议,可参考对应的文档开启QUIC协议支持。在测试时,首次连接时,使用的协议可能会是HTTP1或HTTP2,这时可以多刷新几次,就会看到网页传输是使用HTTP3协议完成的。此外也可以利用
https://http3check.net/ 来测试你的实现。
https://http3check.net/ 来测试你的实现。
HTTP/3 为 Web 应用程序提供了比 HTTP/2 更多的好处,特别是在性能、安全性和兼容性方面。目前谷歌、Meta、微软、Akamai、Cloudflare、Fastly、NGINX 和爱立信等大型科技公司已经在大量使用它。
HTTP/3 真的来了!
OpenNJet 最早是基于 NGINX1.19 基础 fork 并独立演进,OpenNJet 具有高性能、稳定、易扩展的特点,同时也解决了 NGINX 长期存在的难于动态配置、管理功能影响业务等问题。作为底层引擎,OpenNJet 利用动态加载机制可以实现不同的产品形态,如 API 网关、消息代理、出入向代理,负载均衡,WAF 等等。在云原生架构中,OpenNJet 除了提供南北向通信网关的功能以外,还提供了服务网格中东西向通信、透明流量劫持、熔断、遥测与故障注入等新功能特性。
Gitee 邮件组
邀您开源共建:https://njet.org.cn/