分享

http2.0 有什么优势

 心然之月 2016-05-24

http2.0 有什么优势

性能与架构(杜亦舒) · 2015-10-31 08:19

http2.0 有什么优势

现在我们使用的是Http1.1,互联网发展迅速,http这个基础协议也要升级了,http2.0就要来了

http2.0 的核心优势

(1)采用二进制格式传输数据,而非 http1.1 的文本格式,二进制格式在协议的解析和优化扩展上带来更多的优势和可能

(2)对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络的流量,而 http1.1 每次请求,都会携带大量冗余头信息,浪费了很多带宽资源,头压缩能够很好的解决该问题

(3)多路复用,就是多个请求都是通过一个 TCP 连接并发完成,http1.1 虽然通过pipeline也能并发请求,但是多个请求之间的响应会被阻塞的,所以 pipeline 至今也没有被普及应用,而 http2.0做到了真正的并发请求,同时,流还支持优先级和流量控制

(4)Server Push,服务端能够更快的把资源推送给客户端,例如服务端可以主动把 JS 和 CSS 文件推送给客户端,而不需要客户端解析 HTML 再发送这些请求,当客户端需要的时候,它已经在客户端了

http2.0 的基础

http2.0 有一个根本性的改动,就是不使用文本格式了,采用了二进制格式

二进制更易于frame(帧 数据包)的实现

frame 就是 http2.0 的基础,可以把它理解为TCP的数据包一样,http2.0 之所以能够有如此多的新特性,正是因为底层数据格式的改变

http2.0 中 每次传输的数据视为数据流,整个数据被拆分放入多个 frame 中,每个 frame 中记录了此帧的数据长度、类型、所属数据流的ID

多路复用

http2.0 能对网络效率有较大提升,其中一个主要原因就是使用了‘多路复用’机制

先看下http1.1中多请求的处理方式



可以看到,要么是串行,一个请求完成后再发另一个请求,要么是可以并发,但请求结果的返回过程必须是顺序的,第一个响应完成后,才能响应第二个,即使第二个先处理完成,也要等待第一个,就产生了阻塞

http2.0 的处理方式



只要有了请求结果数据,可以立即返回,不关心顺序问题,因为数据都被组装成了一个个的frame帧,frame中记录了自己所属数据流的ID,客户端把frame都接收到以后,根据数据流ID再进行组装即可

性能与架构(gh_d4deec8a1c26)

 查看原文  分享到微信  文章为作者独立观点,不代表微头条立场
性能与架构的最新文章
美国建站平台 Wix 的架构变迁

背景Wix 是全世界最大的自助建站云平台,可以让每一个人通过拖拽等简单的方式轻松的创建一个漂亮的网站这个平台

性能与架构·05月17日 17:27

SQL与MongoDB的对应关系图表

关系数据库有一套标准的SQL语句来操作数据库,MongoDB是文档型数据库,概念与操作方式与SQL都不相同,

性能与架构·05月10日 07:56

大规模服务器管理利器 Fabric

Fabric 是什么Fabric 是对服务器进行系统管理、应用部署的自动化脚本工具,特点是可以便捷的支持多台

性能与架构·05月08日 16:34

Airbnb 的技术栈

Airbnb 是一个大型住宿资源共享网站,服务已经覆盖190个国家,超过34000个城市,目前估值达到250

性能与架构·05月06日 08:19

WEB开发将不再重度依赖JS【二】

前阶段写了一篇文章 "WEB开发将不再重度依赖JS",介绍了 WASM(WebAssembly),因为有了最

性能与架构·05月02日 08:49

为什么海量数据场景中NoSQL越来越重要?

随着数据规模、并发量越来越大,非关系型数据库NoSQL(Not Only SQL)越来越受到重用NoSQL带

性能与架构·04月30日 19:17

Node.js 6.0 已经支持 93% 的ES6

Node.js 6.0 发布了,带来了性能的大幅提升、更好的测试、更完善的文档、更好的安全性,并广泛支持了E

性能与架构·04月28日 20:38

Linux 内存性能指标

内存基础概念先执行一下 top 命令,看结果中关于内存的相关部分# top 其中的 VIRT、RES、SWA

性能与架构·04月14日 19:43

Linux CPU 性能指标

CPU性能指标可以从两方面来看:静态、动态静态指标主要包括:CPU的型号、主频、核数、cache等动态指标主

性能与架构·04月12日 08:16

Redis 内存优化案例

在Redis的配置文件中有这么两项配置:hash-max-ziplist-entries 512hash-m

性能与架构·04月01日 17:02

Redis与SSDB的性能测试对比

今天我在一台测试服务器上分别对Redis与SSDB做了性能测试结果是SSDB比Redis差了很多,与SSDB

性能与架构·03月28日 16:33

Stack Overflow 开发者调查报告

今天看了Stack Overflow 开发者调查统计结果,有几个数据感到意外,没有想到1. JS已经火到不行

性能与架构·03月19日 07:08

分布式一致性算法 Raft

分布式一致性算法最著名的应该是 Paxos,1990年提出,google的Chubby Lock服务就是使用

性能与架构·03月22日 08:38

Redis 达到maxmemory时如何抉择?

当Redis的最大可用内存空间都占满时,Redis会如何处理呢?Redis给出了6个选项,让我们自行选择vo

性能与架构·03月09日 07:15

日志型key/value存储模型 Bitcask

Bitcask是一个key-value存储模型,基于hash表结构,并且有个特点,是日志型的数据文件设计思路

性能与架构·03月08日 07:14

Redis案例 - 事件提醒

场景任务是 当 redis set 中有新元素时及时处理需要在set有新元素后自动得到通知,省得使用轮询的方

性能与架构·03月07日 07:32

Kafka 消息存储及检索

Kafka是一个分布式的消息队列系统,消息存储在集群服务器的硬盘Kafka中可以创建多个消息队列,称为top

性能与架构·02月29日 20:03

分布式消息队列 Kafka

Kafka是一个高吞吐量的、分布式的消息系统,由Linkedin开发,开发语言为scala具有高吞吐、可扩展

性能与架构·02月25日 20:13

MySQL 清除表空间碎片

表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为空白当执行插入操作时,MySQL会尝试使用空白空间

性能与架构·02月23日 07:25

ZooKeeper是如何保证数据一致性的?

ZooKeeper是个集群,内部有多个server,每个server都可以连接多个client,每个clie

性能与架构·02月22日 07:33

Nginx/ZooKeeper 负载均衡的差异

Nginx是著名的反向代理服务器,也被广泛的作为负载均衡服务器ZooKeeper是分布式协调服务框架,有时也

性能与架构·02月20日 10:19

分布式协调服务ZooKeeper工作原理

大数据处理框架Hadoop、Redis分布式服务Codis、淘宝的分布式消息中间件MetaMQ ……他们都使

性能与架构·02月19日 08:17

如何提高Mysql主从复制的效率?

MySQL的主从复制,实际上就是Master记录自己的执行日志binlog,然后发送给Slave,Slave

性能与架构·02月21日 10:34

分布式队列实现思路

分布式队列简单理解就是:帮助我们实现跨进程、跨主机、跨网络的数据共享和数据传递(之前文章 "分布式消息队列"

性能与架构·02月16日 07:02

Mysql性能优化案例 - 覆盖索引

场景产品中有一张图片表,数据量将近100万条,有一条相关的查询语句,由于执行频次较高,想针对此语句进行优化表

性能与架构·02月15日 08:01

分布式消息队列

‘分布式消息队列’包含两个概念一是‘消息队列’,二是‘分布式’那么就先看下消息队列的概念,和为什么需要分布式

性能与架构·02月14日 09:30

分布式锁的实现思路

在分布式系统中,如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往

性能与架构·02月13日 10:33

分布式配置管理

配置管理是系统中的基础服务,例如java的web系统中,常把数据库的配置信息放到jdbc.propertie

性能与架构·02月12日 08:08

Redis 开启monitor监视器的性能消耗

之前介绍了redis的monitor,今天有朋友问monitor是否能长时间开启,我知道monitor会有较

性能与架构·02月10日 07:22

Redis的Lua的功能扩展

Redis支持使用Lua脚步来进行功能扩展,这个能力给Redis带来了更多的应用场景,你可以编写若干命令组合

性能与架构·02月07日 16:48

JS如何实现多线程?

单线程的问题javascript是单线程执行的,在处理运算过程中,浏览器不能执行其它javascript脚本

性能与架构·02月06日 17:14

UNIX哲学及其实现

KEEP IT SIMPLE , STUPID !"保持简单和笨拙" -- 尽量用简单的方法解决问题,是Un

性能与架构·02月03日 06:59

Linux lsof 命令的实用案例

lsof 简介lsof(list open files)是一个列出当前系统中所有打开文件的工具Linux中一

性能与架构·01月22日 07:04

使用Redis统计活跃用户

统计活跃用户这个案例非常经典,也是我当时学习redis时,接触到的第一个让我眼睛一亮的使用方式场景用户登录后

性能与架构·01月18日 09:18

Docker容器是否可以改变世界?

2016年了,很多大牛开始预测技术趋势,其中一个普遍的观点我也很认同:Docker会更加流行,会改变程序世界

性能与架构·01月15日 07:25

微服务架构

微服务产生的背景在网站初期,网站的架构比较简单,通常把所有代码统一打包部署的服务器上以java项目为例,例如

性能与架构·01月14日 07:14

HDFS 核心原理

HDFS(Hadoop Distribute File System)是一个分布式文件系统文件系统是操作系统

性能与架构·01月11日 14:20

小咖秀CTO谈架构

内容整理自记者郭蕾对小咖秀CTO汤力嘉的访谈1视频类应用的基本架构怎么样的?上传流程:应用端生成视频,经过特

性能与架构·01月08日 07:30

京东开放平台的三次架构演进

内容整理自京东技术交流活动1V1.0版本2010年京东开放平台(POP)成立,当时的要求是满足商家的入驻京东

性能与架构·01月09日 08:03

查看当前web服务器的并发连接数

对于web服务器来说,并发连接数是一个比较重要的参数,通过下面的命令就可以直接查看# netstat -na

性能与架构·2015-12-30 06:55

1号店架构演进读后感

前几天看了一篇介绍1号店架构演进的文章,其中给我印象最深的是他们的日志系统,非常完善,我之前所在的大公司,和

性能与架构·2015-11-28 07:34

Redis 实现队列优先级

通常使用一个list来实现队列操作,这样有一个小限制,所以的任务统一都是先进先出,如果想优先处理某个任务就不

性能与架构·2015-12-25 06:38

Redis 实现安全队列

Redis的列表数据结构可以让我们方便的实现消息队列例如用 LPUSH(BLPUSH)把消息入队,用 RPO

性能与架构·2015-12-24 07:17

Redis队列缓存应用示例

消息队列的一个典型应用就是通过异步处理方式,来解决某些场景下的高并发问题例如日志的收集,特点是数据量大,并发

性能与架构·2015-12-26 08:43

影子(Shadow) DOM

什么是 Shadow DOM?Shadow DOM 是一个革命性的新技术,先来看下他是什么样子的以<>< p=""><>

性能与架构·2015-12-27 09:14

用魔数防范文件上传攻击

上传文件功能的安全风险很高,为了防范攻击,最基本的安全工作就是验证文件类型是否为系统允许的简单的通过文件后缀

性能与架构·2015-12-28 07:35

影子(Shadow) DOM

什么是 Shadow DOM?Shadow DOM 是一个革命性的新技术,先来看下他是什么样子的以<>< p=""><>

性能与架构·2015-12-27 09:14

Redis队列缓存应用示例

消息队列的一个典型应用就是通过异步处理方式,来解决某些场景下的高并发问题例如日志的收集,特点是数据量大,并发

性能与架构·2015-12-26 08:43

Redis 实现队列优先级

通常使用一个list来实现队列操作,这样有一个小限制,所以的任务统一都是先进先出,如果想优先处理某个任务就不

性能与架构·2015-12-25 06:38

Redis 实现安全队列

Redis的列表数据结构可以让我们方便的实现消息队列例如用 LPUSH(BLPUSH)把消息入队,用 RPO

性能与架构·2015-12-24 07:17

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多