http2.0 有什么优势性能与架构(杜亦舒) · 2015-10-31 08:19 现在我们使用的是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 是全世界最大的自助建站云平台,可以让每一个人通过拖拽等简单的方式轻松的创建一个漂亮的网站这个平台 关系数据库有一套标准的SQL语句来操作数据库,MongoDB是文档型数据库,概念与操作方式与SQL都不相同, Fabric 是什么Fabric 是对服务器进行系统管理、应用部署的自动化脚本工具,特点是可以便捷的支持多台 Airbnb 是一个大型住宿资源共享网站,服务已经覆盖190个国家,超过34000个城市,目前估值达到250 前阶段写了一篇文章 "WEB开发将不再重度依赖JS",介绍了 WASM(WebAssembly),因为有了最 随着数据规模、并发量越来越大,非关系型数据库NoSQL(Not Only SQL)越来越受到重用NoSQL带 Node.js 6.0 发布了,带来了性能的大幅提升、更好的测试、更完善的文档、更好的安全性,并广泛支持了E 内存基础概念先执行一下 top 命令,看结果中关于内存的相关部分# top 其中的 VIRT、RES、SWA CPU性能指标可以从两方面来看:静态、动态静态指标主要包括:CPU的型号、主频、核数、cache等动态指标主 在Redis的配置文件中有这么两项配置:hash-max-ziplist-entries 512hash-m 今天我在一台测试服务器上分别对Redis与SSDB做了性能测试结果是SSDB比Redis差了很多,与SSDB 今天看了Stack Overflow 开发者调查统计结果,有几个数据感到意外,没有想到1. JS已经火到不行 分布式一致性算法最著名的应该是 Paxos,1990年提出,google的Chubby Lock服务就是使用 当Redis的最大可用内存空间都占满时,Redis会如何处理呢?Redis给出了6个选项,让我们自行选择vo Bitcask是一个key-value存储模型,基于hash表结构,并且有个特点,是日志型的数据文件设计思路 场景任务是 当 redis set 中有新元素时及时处理需要在set有新元素后自动得到通知,省得使用轮询的方 Kafka是一个分布式的消息队列系统,消息存储在集群服务器的硬盘Kafka中可以创建多个消息队列,称为top Kafka是一个高吞吐量的、分布式的消息系统,由Linkedin开发,开发语言为scala具有高吞吐、可扩展 表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为空白当执行插入操作时,MySQL会尝试使用空白空间 ZooKeeper是个集群,内部有多个server,每个server都可以连接多个client,每个clie Nginx是著名的反向代理服务器,也被广泛的作为负载均衡服务器ZooKeeper是分布式协调服务框架,有时也 大数据处理框架Hadoop、Redis分布式服务Codis、淘宝的分布式消息中间件MetaMQ ……他们都使 MySQL的主从复制,实际上就是Master记录自己的执行日志binlog,然后发送给Slave,Slave 分布式队列简单理解就是:帮助我们实现跨进程、跨主机、跨网络的数据共享和数据传递(之前文章 "分布式消息队列" 场景产品中有一张图片表,数据量将近100万条,有一条相关的查询语句,由于执行频次较高,想针对此语句进行优化表 ‘分布式消息队列’包含两个概念一是‘消息队列’,二是‘分布式’那么就先看下消息队列的概念,和为什么需要分布式 在分布式系统中,如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往 配置管理是系统中的基础服务,例如java的web系统中,常把数据库的配置信息放到jdbc.propertie 之前介绍了redis的monitor,今天有朋友问monitor是否能长时间开启,我知道monitor会有较 Redis支持使用Lua脚步来进行功能扩展,这个能力给Redis带来了更多的应用场景,你可以编写若干命令组合 单线程的问题javascript是单线程执行的,在处理运算过程中,浏览器不能执行其它javascript脚本 KEEP IT SIMPLE , STUPID !"保持简单和笨拙" -- 尽量用简单的方法解决问题,是Un lsof 简介lsof(list open files)是一个列出当前系统中所有打开文件的工具Linux中一 统计活跃用户这个案例非常经典,也是我当时学习redis时,接触到的第一个让我眼睛一亮的使用方式场景用户登录后 2016年了,很多大牛开始预测技术趋势,其中一个普遍的观点我也很认同:Docker会更加流行,会改变程序世界 微服务产生的背景在网站初期,网站的架构比较简单,通常把所有代码统一打包部署的服务器上以java项目为例,例如 HDFS(Hadoop Distribute File System)是一个分布式文件系统文件系统是操作系统 内容整理自记者郭蕾对小咖秀CTO汤力嘉的访谈1视频类应用的基本架构怎么样的?上传流程:应用端生成视频,经过特 内容整理自京东技术交流活动1V1.0版本2010年京东开放平台(POP)成立,当时的要求是满足商家的入驻京东 对于web服务器来说,并发连接数是一个比较重要的参数,通过下面的命令就可以直接查看# netstat -na 前几天看了一篇介绍1号店架构演进的文章,其中给我印象最深的是他们的日志系统,非常完善,我之前所在的大公司,和 通常使用一个list来实现队列操作,这样有一个小限制,所以的任务统一都是先进先出,如果想优先处理某个任务就不 Redis的列表数据结构可以让我们方便的实现消息队列例如用 LPUSH(BLPUSH)把消息入队,用 RPO 消息队列的一个典型应用就是通过异步处理方式,来解决某些场景下的高并发问题例如日志的收集,特点是数据量大,并发 什么是 Shadow DOM?Shadow DOM 是一个革命性的新技术,先来看下他是什么样子的以<>< p=""><> 上传文件功能的安全风险很高,为了防范攻击,最基本的安全工作就是验证文件类型是否为系统允许的简单的通过文件后缀 什么是 Shadow DOM?Shadow DOM 是一个革命性的新技术,先来看下他是什么样子的以<>< p=""><> 消息队列的一个典型应用就是通过异步处理方式,来解决某些场景下的高并发问题例如日志的收集,特点是数据量大,并发 通常使用一个list来实现队列操作,这样有一个小限制,所以的任务统一都是先进先出,如果想优先处理某个任务就不 Redis的列表数据结构可以让我们方便的实现消息队列例如用 LPUSH(BLPUSH)把消息入队,用 RPO
|