SPDY - 下一代端到端傳輸協議解決方案
SPDY 是下一代的端到端傳輸解決方案,是為了解決當前復雜的網絡環境和多變的應用需求而設計的傳輸協議及實現。
注:這里的 SPDY 與 Google 的 Spdy 協議是包含關系,即 SPDY 解決方案中,使用 Spdy(Http 2.0)協議是方案的一個環節和手段,除此之外,方案還包括其它更多的步驟。后續將 Spdy 協議統一使用 Http 2.0 稱呼。
主要設計目標:
為移動網絡優化:為當前移動網絡復雜而又低效的現狀做優化,如速度非常慢的 2G 網絡,cnnet/cnwap問題,聯通電信3G無信號時降級到2G問題等,利用 Http 2.0 單鏈接復用,異步并發多請求,壓縮header等特性進行優化
為 web 2.0 優化:使用 Http 2.0 解決當前 WebIM、未讀數等多個業務用輪詢實現的實時通知需求
解決 App 多次請求 OpenAPI 問題:使用 WQL (類似 SQL)的描述語言替代當前的命令式 Http Rest 接口調用,如:Select * from friend_timeline where uid=? , Server 端解析后根據要求拼裝所有需要的資源數據字段,一次性返回給 App
解決復雜項目內部解耦和需要RPC調用框架問題:復用 Http 協議,使用 RPC Over Http 方案,在性能和復雜度之間取得一個很好的平衡,適宜當前微博主站、無線、平臺多方合作模式
主要優勢
保持簡單,避免引入額外的概念和復雜度:
公網所有請求都走 Http 2.0 with TLS,一方面提升了性能,另一方面又能提升用戶體驗和安全性。劣勢為消耗更多的服務器資源WQL 也使用 Http 協議進行傳輸,只需要開發一套 WQL 描述語言規范及解析程序內網RPC也使用 Http 協議傳輸,以極小的性能損失(與二進制TCP協議相比)獲得極大的易用性提升和各語言客戶端支持,以及降低學習成本,避免誤用
高性能
2G 慢網絡情況下,Http 2.0 協議與當前的 Http 1.1 協議相比,提升 30% (TODO 數據來源說明,自己的測試數據?)內網 RPC Over Http 方案與平臺當前的 Motan TCP 方案對比:初步對比,模擬正常業務場景(業務處理耗時 3-10 ms),RPC Over Http 方案與 Motan 方案 qps 相當,都在 2w 左右,平均響應時間 Http 方案稍微查一點,大約為 7ms,Motan 為 3ms (還有優化空間)。
方案說明
性能很重要,但性能不是方案選擇的唯一考量因素
在一個復雜業務系統,復雜團隊配合的場景下,溝通成本,學習成本,出錯概率,誤用概率等都需要計算到方案的成本收益中去,綜合比較
Http 是當前最通用的協議,選用它不需要理由,不用它才需要理由
Http 協議優化空間很大,而且還有 Http 2.0 即將成為 rfc 標準
命令式 Rest Api 與描述式查詢語言(類似 SQL)相比,描述式查詢在很多方面都具備明顯的優勢,我們不應該繼續忽略