移动开发网络性能优化实践

网络服务流程

  • DNS Lookup
  • TCP Hankshake
  • TLS Hankshake
  • TCP/HTTP Request/Response

常见网络性能问题

  1. DNS
  • DNS劫持或者失效
  • DNS解析慢或者失效
  1. TCP Connection
  • 端口被封,常见于一些小的电信运营商
  • 如何设置连接超时时长
  1. Write/Read
  • 如何设置读写超时时长
  • Proxy端口拦截:写Request成功,读Response失败。某些路由器检测非Http请求走了Http端口会拦截Response
  1. 传输Payload过大
  • 如何优化减少
  1. 复杂的国内外网络状况
  • 国内运营商互联
  • 海外带宽低、传输慢

最终目标

  • 连得上
  • 连得快
  • 传输时间短

优化实践

  1. 优化DNS解析和缓存
  • 内置server ip列表。分别放联通、移动、电信的出口,但是不应该根据当前的网络选取对应的ip,因为如果某个出口ip不可用,那么对应的网络将都不可用,使用动态平衡的权重
  • 并行DNS解析
  • Server IP列表权重机制
  1. 网络质量检测(根据网络质量来改变策略)
  • TCP连接超时时长,根据不同的网络类型设置不同的网络超时参数。Facebook的做法是在http的response里面带上rtt,根据rtt动态调整策略
  • TCP读操作超时时长
  • 网络服务并发数量
  1. 提供网络优先级和依赖机制
  • 高优先级服务优先使用长连接
  • 根据依赖关系自动发起或取消网络服务
  1. 提供网络服务重发机制
  • 连接失败端口轮询重试
  • 写失败、读失败时重发服务。connection migration连接迁移,在移动端出现的可能性会比较大,因为网络发生变化,IP也会变化。socket四元组:客户端IP,客户端端口,服务器IP,服务器端口。
  • 长连接失败事短连接补偿
  • 重发服务开关
  1. 减少数据传输量
  • 优化数据算法(自定义格式->Protocol Buffer)
  • 优化数据序列化和反序列化
  • 优化图片格式
  1. 优化海外网络性能
  • CDN加速
  • 提高带宽
  • 动静分离

网络服务新技术方向

  1. SPDY&HTTP/2.0协议
  • 多路复用
  • 请求优先级
  • 支持服务端推送
  • 压缩Http header
  • 对服务端程序透明
  • Twitter测试结果:网络延迟降低30%
  1. QUIC协议
  • TCP+TSL+SPDY on UDP
  • 大幅减少连接时间
  • 避免TCP Head-of-Line Blocking
  • 优化拥塞控制
  • 优化连接迁移Connection Migration

你可能感兴趣的:(移动开发网络性能优化实践)