SPDY - 下一代端到端传输协议解决方案

10年前

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)相比,描述式查询在很多方面都具备明显的优势,我们不应该继续忽略