BT

你的观点很重要! 快来参与InfoQ调研吧!

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

| 作者 Abel Avram 关注 4 他的粉丝 ,译者 臧秀涛 关注 0 他的粉丝 发布于 2014年11月7日. 估计阅读时间: 3 分钟 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

近日,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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT