FinOps有望降低企业50%+的云成本! 了解详情
写点什么

Ed Burns 谈 HTTP/2 和 Java EE Servlet 4 规范

  • 2015-04-01
  • 本文字数:1548 字

    阅读完需:约 5 分钟

在 2015 年 JavaLand 大会上, Ed Burns 展示了 Java EE Servlet 4.0 规范(JSR 369)的概要,演讲的重点在于 Java EE 平台对 HTTP/2 的支持。 HTTP/2 旨在解决现存 HTTP 规范中的问题,并引入新的功能,包括 request/response 多路复用、二进制帧传输(binary framing)、数据流优先级、服务器推送和头信息压缩。

Burns 是 Oracle 公司的技术顾问之一,他从由于 HTTP/1.1 中固有的缺陷,导致当前典型网站的 30 多种资源传输到浏览器端很慢这一现象谈起。首要的问题是‘对头阻塞(head-of-line,HOL)’引起的,原因是被请求的资源必须排队依次传输。为此,现代浏览器会尝试使用打开多个socket 连接、域名碎片和文件串联等技术,作为临时解决方案。

Burns 表示,HTTP/2 本质上是基于 HTTP/1.1 的新的传输层,是 OSI 模型应用层的实现。该协议定义了同样的request/response 模型,并没有引入新的方法或者头信息、应用层上的新的使用模式,也没有新的URL 用法以及底层规范。

HTTP/1.1 几乎没有涉及如何使用 TCP 套接字,TCP 包可以视为丢弃的资源。相反,新的 HTTP/2 规范建议把 Socket 视为稀缺资源,每台服务器只开放一条 TCP 连接。 HTTP/2 的‘流’本质上是一条 TCP 连接的通道(channel),消息在通道中进行传送。帧(frame)是 HTTP/2 通信的最小单位。

HTTP/2 规范还包括:

  • request/response 多路复用——每个 TCP 连接都是全双工的。
  • 二进制帧传输——HTTP/2 是一种二进制协议,更容易传输帧。帧的开始和结束完全由基于文本的协议(比如 HTTP/1.1)决定。二进制帧传输还将解决 HOL 阻塞问题。
  • 数据流优先级——每个流都有优先级,用于决定哪些流是最重要的。
  • 服务器端推送——这使得服务器端可以在浏览器请求资源之前,预先填充浏览器端的缓存。
  • 头信息压缩 (以 HPACK 闻名)——展示头信息域的一种高性能压缩格式。
  • HTTP/2 对 HTTP/1.1 的升级——包括非安全 (使用 80 端口并且 HTTP 状态码为 101 的‘切换协议’) 和安全(使用NPN 或者 ALPN ) 传输层升级协议的定义。

Burns 讨论了已有的对 HTTP/2 的批评,包括 HOL 阻塞可能发生在头信息帧中,Firefox 和 Chrome 不支持非安全传输层协议升级、由于 HPACK 编码 / 解码过程导致碳足迹(carbon footprint)的增加、由于必须写入 HTTP/2 规范实现中的新软件的表面面积巨大,导致潜在增加 DoS 攻击源,以及 HTTP/2 实际上与 WebSocket 是正交等方面内容。

演讲最后讨论了 Java EE Servlet API 可能包含的对 HTTP/2 规范的支持。可能支持的功能包括:request/response 多路复用、数据流优先级、服务器端推送,以及对 HTTP1.1 的升级。

数据流优先级会通过新的 Priority 类实现,并且现有的 HttpServletRequest 和 HttpServletResponse 类会增加访问和修改数据流优先级的方法。Burns 还指出,服务器端推送对如 JSF 这样的框架会非常有用,它还能够实现通过给定的 URL 和头信息,将资源推送到客户端的能力。

Servlet 4.0规范会把HTTP/2 引入 Java EE,并100% 兼容实现HTTP/2 规范。这将由2014 年9 月制定的JSR 369 来支持,JSR369 暂定于2015 年第四季度确定最终草案,预计2016 年第三季度最终发布。

Burns 鼓励所有感兴趣的人通过 Adopt-a-JSR 计划参与 Servlet4.0 的创建、通过访问 Java EE 参考实现应用服务器 GlassFish 的网页,体验 Aquarium blog 。JSR369 规范的更多相关信息详见 Java Community Process(JCP) 网站。JavaLand 是在德国布吕尔召开的年度 Java 大会,详情参见 JavaLand 事件网站

查看英文原文: Ed Burns Discusses HTTP/2 and the Java EE Servlet 4 Specification


感谢邵思华对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流。

2015-04-01 08:276314

评论

发布
暂无评论
发现更多内容

中国将启动国家区块链平台

CECBC

区块链

第三周作业 利益相关方排序

Eva

Alibaba内部晋升手册面试题集 ,Java岗位

Java架构之路

Java 程序员 架构 面试 编程语言

喜报丨京东科技主导的开源项目ShardingSphere荣登报告榜单国人主导开源项目中活跃度第五名!

京东科技开发者

分布式数据库 京东 ShardingSphere

席卷图文学习前端Flex布局

我是哪吒

html 面试 大前端 html/css Flex

Mybatis系列全解(六):Mybatis最硬核的API你知道几个?

潘大壮

Java 后端 mybatis mybatis源码

2021 年产品训练营 - 第二周作业

Meng

MapReduce练习案例2 - 自定义排序

小马哥

大数据 hadoop mapreduce 七日更

滴普技术荟-云原生基座OpenKube开放容器实践(三):理解linux虚拟网络设备bridge

MapReduce练习案例3 - 自定义分区

小马哥

大数据 hadoop mapreduce 七日更

张红珊—第二章作业

zzz

Mybatis系列全解(七):全息视角看Dao层两种实现方式之传统方式与代理方式

潘大壮

Java 后端 mybatis mybatis源码

MapReduce博文体系

小马哥

大数据 mapreduce 知识体系 架构师 七日更

产品经理训练营 Week02

柚子君~

极客大学产品经理训练营

产品经理训练营-作业二

胡小湖

云原生基座OpenKube日志系统介绍

作业

Eva

滴普技术荟-云原生基座OpenKube开放容器实践(四):linux模拟pod并配置上外网

产品经理训练营-第二周作业

懒杨杨

香喷喷!2021最新出炉Java程序员面试全方位贴身指南

比伯

Java 编程 程序员 架构 面试

第二次作业&第三次作业

yoki

“区块链+政务”深度融合 开启智慧城市政务新时代

CECBC

大数据

第三期(2020-2021)传统行业云原生技术落地调研

York

灵雀云 云原生

惊艳全网!阿里人开源了K8s进阶宝典笔记,从理论到实践!

996小迁

Java 编程 架构 面试 k8s

太牛了!这是什么神仙级的面试pdf(含答案),跳槽大厂不是问题

Java架构之路

Java 程序员 架构 面试 编程语言

Hadoop之HDFS 内部机制知多少?

hanke

大数据 hadoop hdfs 开源 数据存储

奥里给,通过这几份PDF,终于拿到了阿里,腾讯等一线大厂的offer

Java架构之路

Java 程序员 架构 面试 编程语言

作业二、作业三

清醒梦境

区块链技术发展现状

CECBC

区块链

第二周作业

大熊猫

混合云管平台openkube日志系统介绍

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
Ed Burns谈HTTP/2和Java EE Servlet 4规范_Java_Daniel Bryant_InfoQ精选文章