微信付款码是如何完成付款的( 二 )
<=0.6秒(1RTT能完成支付则为0.6秒)TLS握手长连接1.消除TLS握手的耗时 2.安全:业界标准机具需要增加长连接处理逻辑降低耗时1.2秒(2RTT)自主加密协议消除TLS握手的耗时1.需要一套完整安全方案:加密和认证 , 密钥安全等 2.机具程序和后台程序改动量大降低耗时1.2秒(2RTT)业务数据传输精减业务数据改动量小业务协议变化降低耗时和精减字节数有关,1秒/KB( GPRS Wiki )使用二进制协议能最大程度精减机具程序和后台程序改动量大降低耗时和精减字节数有关,1秒/KB后台访问微信支付长连接消除DNS查询+TCP握手+TLS握手的耗时增加长连接维护逻辑降低耗时0.51秒(后台内部建立TLS连接耗时约0.17秒 , 一共建立3次)签名本地化签名无网络交互业务层面可能不支持降低耗时0.6秒(一次签名 , 一次验签)
4.4 方案选择方案选择的考虑点:
- 支付安全性
- 支付耗时减少程度
- 改动成本
文章插图
方案优化耗时项选择原因预期收益 机具使用HTTPS长连接访问收单平台DNS解析 TCP握手 TLS握手1.安全性无变化 2.预期耗时优化收益高 3.改动成本小1.支付耗时0.6秒:扫码完成时 , TLS还未建立完成 , 5秒中有0.6秒是建立TLS连接的耗时 2.可保证稳定可控的支付耗时预期(不受扫码快慢影响)后台使用HTTPS访问微信支付后台访问微信支付1.安全性无变化 2.预期耗时优化收益高 3.改动成本小 4.业务层面签名无法本地化1.支付耗时减少0.51秒:建立TLS连接耗时0.17秒 , 需要建立3次精减业务数据包业务数据传输1.业务数据占HTTP包的80%以上,预期耗时优化收益高 2.改动成本小1.支付耗时减少0.48秒:请求数据包精减470B , 上行约1KB/s;应答精减100B , 下行约10KB/s
4.5 机具HTTPS长连接4.5.1 如何选择心跳时间间隔机具在2G网络环境中的网络拓扑:
文章插图
一般情况下 , 机具引起空闲连接失效的外部因素有2个:
- 移动网络出口NAT空闲连接超时
- 支付后台http服务器的keepalive超时
4.5.2 如何选择心跳包内容主要考虑三方面:
- 触发HTTP服务器的空闲连接计时器重新计时 , 因此需要一个完整HTTP请求
- 2G网络带宽小 , 流量资费比较贵 , 因此应该尽量发送小数据包
- 最好不要触发后台业务逻辑
4.6 精减业务数据包精减前:
文章插图
三个精减手段:
- 去除可选字段
- 多层嵌套改为平铺
- 字段名精减
文章插图
精减效果:
- 请求包精减470B , 预期减少耗时 = 0.47KB / 1KB/s = 0.47s
- 应答包精减100B , 预期减少耗时 = 0.1KB / 10KB/s = 0.01s
文章插图
优化项预期减少耗时(秒)耗时计算说明 机具使用HTTPS长连接0.65秒中有0.6秒是用于TLS握手后台使用HTTPS访问微信支付0.51建立1次TLS连接耗时0.17秒 , 一共建立3次精减业务数据包0.48上行减少0.47秒 , 下行减少0.01秒合计1.59
推荐阅读
- 大一非计算机专业的学生,如何利用寒假自学C语言
- 央行的“硬钱包”来势汹汹,支付不再需要手机?支付宝、微信慌了
- 微信还能这么用?让你大开眼界的微信隐藏操作
- 短短几个月,安装包从200M涨到354M,微信越来越臃肿了?
- 国家发布“铁令”,微信、支付宝始料未及,必须作出整改
- 红米K40渲染图曝光:居中挖孔+后置四摄,这外观你觉得如何?
- iOS版微信又双更新了,AirPods Pro推出牛年限定款
- 飞书文档微信小程序审核被卡?字节跳动副总裁谢欣:希望腾讯停止无理由封杀
- 这次玩儿得有点大!美宣布决定!微信、苹果二选一事件“重现”?
- 拜拜扫描仪!微信打开这个功能,文档表格扫一扫秒变电子档