<code id="lcjj3"></code><mark id="lcjj3"></mark>

          <output id="lcjj3"></output>
          首页 | 社区 | 博客 | 招聘 | 文章 | 新闻 | 下载 | 读书 | 代码
          亲,您未登录哦! 登录 | 注册
           您所在的位置:编程爱好者网站新闻 - 正文
           
           

          Facebook开源Proxygen——一款支持SPDY 3.1的HTTP框架

          12332 次阅读 | 发布时间:2014-11-07 | 向本站投递新闻
          打印文章

          来自:infoq

          近日,Facebook开源了其Proxygen。这是一款开源的HTTP框架。其目的不是替换Apache,而是有能力创建一个专用的高?#38405;躓eb服务器,使其可以嵌入到Facebook提供Web服务的现有应用中。Facebook从2011年开始构建一款代理服务器(Proxygen这个名字也是由此而来),在该项目演进并在生产环境中测试了数年之后,Facebook将其代码开源了。 

          为什么没有从Apache、nginx或者其他的服务器入手呢?Facebook列出了很多原因

              ?    能够与他们现有的基础设施和工具集成(ThriftODS

              ?    创建一个可以供不同的内部项目(HaystackHHVM和负载均衡器等)使用的?#24405;?#39537;动库

              ?    据Facebook介绍,他们之前的HTTP基础设施在伸缩性方面遇到了一些限制,需要大量的变通方案,所以希望根据需要内部自行开发

              ?    那时,既有的HTTP服务器还缺少很多特性,如:SPDY、WebSockets、HTTP/1.1 (keep-alive)、TLS false start和特定的负载调度算法

          Proxygen用到了下列概念:transaction(事务)、session(会话)、codec(编解码器)和handler(处理器)。事务表示的是在客户端和服务器之间?#25442;?#30340;请求-响应对。这类相关的事务所组成的序列就是一个会话。编解码器负责将来自线路上的字节解析为对象,并将其与事务关联起来。消息最终传递给处理器进行真正地处理。尽管通过底层的编解码器和事务来与该框架?#25442;?#20063;是可能的,但还是建议开发者借助API使用更高层次的抽象。 

          Proxygen依赖?#30446;?#26550;有: 

              ?    Folly——Facebook内部使用的一个开源的C++11组件库,其中包括代码基准测试框架、大小端转换原语、优化的字符串和vector、JSON序列化器等组件。

              ?    FBThrift——Apache Trift的一个分支。

          Proxygen支持SPDY 3.1,目前正在添加对HTTP/2的支持。 Facebook内部做的基准测试表明,在一个Proxygen echo服务器(搭载了一个包含32个逻辑核的Xeon CPU E5-2670 @ 2.60GHz和16 GB主存)?#24076;?#27599;秒可以支撑多达304 197?#20301;?#20110;SPDY 3.1的内存GET请求。

          在GitHub上发布的源代码已经在Ubuntu 14.04上测试过,尽管没有特别指出,但是Facebook认为该框架在其他系?#25104;?#36816;行也是安全的。

           

          查?#20174;?#25991;原文:Facebook Open Sources Proxygen, an HTTP Framework Supporting SPDY 3.1

           
           
           
           
          时时彩软件下载
          <code id="lcjj3"></code><mark id="lcjj3"></mark>

                  <output id="lcjj3"></output>
                  <code id="lcjj3"></code><mark id="lcjj3"></mark>

                          <output id="lcjj3"></output>