首頁 | 社區 | 博客 | 招聘 | 文章 | 新聞 | 下載 | 讀書 | 代碼
親,您未登錄哦! 登錄 | 注冊
 您所在的位置:編程愛好者網站新聞 - 正文
 
 

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

18410 次閱讀 | 發布時間: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

 
 
 
 
北京快三开奖结果走势图一定牛