Page 227 - Web性能权威指南
P. 227

大多数支持 HTTP 2.0 的 Web 服务器默认都提供 2.0 到 1.x 的转换机制:
                            2.0 会话终止于服务器(Apache 或 Nginx),如果服务器被配置为反向代
                            理,那么分派给具体应用服务器的就是 1.x 请求。

                 然而,2.0 到 1.x 的这种简单策略并非长久之计。从很多方面来说,这种工作流实
                 际是一种倒退。真正正确的做法,不是把优化的、可复用的会话转换成一系列 1.x
                 请求,因基础设施而废优化,而是相反:把接收到的 1.x 客户端请求转换成 2.0 流,
                 并把我们的基础设施标准化,使其在任何时候都处理 2.0 会话。

                 为获得最佳性能,同时实现低延迟和实时的 Web 应用,应该要求我们的内部基础设
                 施达到如下标准:

                 •   负载均衡器和代理与应用的连接应该持久化;
                 •   请求和响应流及多路复用应该是默认配置;
                 •   与应用服务器的通信应该基于消息;
                 •   客户端与应用服务器的通信应该是双向的。

                 端到端的 HTTP  2.0 会话符合上述所有条件,能实现对客户端以及数据中心内部的
                 低延迟交付:无需定制的 RPC 层及相应机制,就能实现内部服务之间的通信,并
                 获得理想的性能。简言之,不要把 2.0 降级到 1.x,这不是长久之计。长久之计是把
                 1.x 升级到 2.0,这样才能求得最佳性能。

                 13.3.4 评估服务器质量与性能

                 HTTP  2.0 服务器实现的质量对客户端性能影响很大。HTTP 服务器的配置当然是一
                 个重要因素,但服务器实现逻辑的质量同样与优先级、服务器推送、多路复用等性
                 能机制的发挥紧密相关。

                 •   HTTP 2.0 服务器必须理解流优先级;
                 •   HTTP 2.0 服务器必须根据优先级处理响应和交付资源;
                 •   HTTP 2.0 服务器必须支持服务器推送;
                 •   HTTP 2.0 服务器应该提供不同推送策略的实现。


                 HTTP  2.0 服务器的初级实现也能支持某些功能,但不能明确支持请求的优先级和服
                 务器推送,可能导致次优性能。比如,发送大型、静态图片导致带宽饱和,而客户
                 端又因为其他重要资源(如 CSS 或 JavaScript)被阻塞。

                            为尽可能获得最佳性能,HTTP  2.0 客户端必须是个“乐观主义者”:尽可
                            能早地发送所有请求,然后完全听凭服务器的优化。事实上,HTTP  2.0 客
                            户端对服务器的依赖程度较之以前更甚。

                                                                       优化应用的交付   |   213
   222   223   224   225   226   227   228   229   230   231   232