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

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

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

来自:infoq

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

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

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

    •    创建一个可以供不同的内部项目(HaystackHHVM和负载均衡器等)使用的事件驱动库

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

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

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

Proxygen依赖的框架有: 

    •    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主存)上,每秒可以支撑多达304 197次基于SPDY 3.1的内存GET请求。

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

 

查看英文原文:Facebook Open Sources Proxygen, an HTTP Framework Supporting SPDY 3.1