微信收款机具在慢速网络中快速收款的技术揭秘

2024-03-23 20:58

本文主要是介绍微信收款机具在慢速网络中快速收款的技术揭秘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:suchengliu,腾讯 TEG 后台开发工程师

小绿盒在2G网络环境下收款速度较慢,影响商户体验,我们通过网络连接优化、数据传输优化和后台逻辑优化等一系列措施,将收款耗时降低近一半,达到了业界领先水平,改善了商户体验。

1. 背景说明

1.1 产品简介

微信收款商业版为了覆盖更多收款场景,推出小绿盒收款机具。

1.2 我们(收单平台)做了什么

  • 发挥收单平台专业聚合收单能力,为小绿盒提供丰富稳定的收单功能。

  • 提供专业的机具接入方案(支付SDK等),确保机具厂商高效高质量完成接入。

2.问题

小绿盒在2G网络下收款速度较慢(因为小绿盒收款是窄带场景,且4G模块成本是2G的2倍以上,所以小绿盒没有用4G)。

实验室情况:在2G实验室网络环境下,小绿盒收款一笔平均耗时需要5秒,而市场主流的解决方案只需3秒。

真实商家反馈:小绿盒收款一笔耗时基本在5秒以上,有时达10秒。收款速度慢,影响商户使用。

3.目标

  • 2G实验室网络环境下,收款一笔耗时不能超过3秒。

  • 实际商家收款耗时表现达到业界领先水平。

4.优化方案

4.1 产品交互说明

收款一笔的交互过程分4步:

步骤1:在键盘上输入收款金额。

步骤2:按下确认键后进入扫码状态,在此过程中机具开始预建立网络连接(竞品做法一致),涉及DNS查询,TCP握手和TLS握手。

步骤3:扫码成功,等连接建立完成后再向支付后台发起支付请求,等待支付应答(小绿盒耗时5秒,竞品耗时3秒)。

步骤4:收到后台返回的支付应答,展示支付结果。

关键点总结:

  • 扫码状态(步骤2)期间的预建网络连接,是收款机具业界普遍做法。

  • 支付耗时是指:扫码成功到收到支付应答之间的耗时(步骤3),受扫码快慢的影响,中间可能包括建立连接的部分耗时。

4.2 现状态分析

4.2.1 收款网络交互时序

由图可知,整个网络交互过程都是基于HTTPS短连接。收款一笔的耗时项包括:DNS解析、TCP握手、TLS握手、业务数据传输和后台处理(微信支付+其它后台逻辑)。

可能耗时项:由4.1章节的说明可知,DNS解析、TCP握手和TLS握手三项是否影响收款速度,受扫码操作(即步骤2)的快慢以及网络速度影响,扫码越慢,网络越快,建立网络连接(包括DNS查询,TCP握手和TLS握手)有可能在步骤2中就全部完成了。

固定耗时项:业务数据传输和后台处理两项为固定耗时项。

4.2.2 耗时分布情况
4.2.3 和市场主流解决方案对比

注:单位为秒

4.3 可能的方案


4.4 方案选择

方案选择的考虑点:

  • 支付安全性

  • 支付耗时减少程度

  • 改动成本

综合考虑后选择了3个具体方案:

4.5 机具HTTPS长连接

4.5.1 如何选择心跳时间间隔

机具在2G网络环境中的网络拓扑:

一般情况下,机具引起空闲连接失效的外部因素有2个:

  • 移动网络出口NAT空闲连接超时

  • 支付后台http服务器的keepalive超时

实际测试得知,移动2G网络出口NAT超时时间为5分钟(Android微信智能心跳方案中也有相关说明一文也有说明),支付后台http服务的keepalive_timeout配置也为5分钟,因此空闲连接保活时间间隔小于5分钟即可。

4.5.2 如何选择心跳包内容

主要考虑三方面:

  • 触发HTTP服务器的空闲连接计时器重新计时,因此需要一个完整HTTP请求

  • 2G网络带宽小,流量资费比较贵,因此应该尽量发送小数据包

  • 最好不要触发后台业务逻辑

综合来看,发送一个HTTP HEAD请求是一个很好的选择。

4.6 精减业务数据包

精减前:

三个精减手段:

  • 去除可选字段

  • 多层嵌套改为平铺

  • 字段名精减

精减后:

精减效果:

  • 请求包精减470B,预期减少耗时 = 0.47KB / 1KB/s = 0.47s

  • 应答包精减100B,预期减少耗时 = 0.1KB / 10KB/s = 0.01s

4.7 优化预期效果

优化后预计支付总耗时=5秒-1.59秒=3.41秒。未能达成收款耗时不超过3秒的目标,还需要增加另外优化措施。

4.8 实验数据分析

在2G网络环境下,每间隔0.5秒进行一次完整的支付交互(请求BODY为300字节),发送请求与收到后台ACK的耗时在0.6秒左右:

如果间隔时间1秒以上,发送请求与收到后台ACK的耗时在1.1秒左右:

网络交互时序:

在BODY为300节字情况下,分别对不同时间间隔做了相同实验,结合实验数据分析得知,如果bc之间的时间间隔为0.5秒,则cd之间的耗时为0.6秒左右;如果bc之间的时间间隔超过0.5秒,则cd之间的耗时为1.1秒左右。

简化后的实验模型:

分别实验了不同BODY大小情况下的耗时情况,均有同样的耗时差别现象。

现象总结:cd之间的耗时受ac之间的时间间隔影响,ac间隔不大于0.5秒,比ac间隔大于0.5秒,cd耗时要少0.5秒左右。

4.9 GPRS上行预热

综合上述实验结果并参考业界技术方案(用于上行连接TBF的提早建立的方法)可知,GPRS链路如果超过0.5秒没有上行数据,信道将被基站回收,而基站重新分配信道需要耗时0.5秒左右。

4.9.1 如何应用这个实验结果

机具扫码状态时(即4.2章节交互流程中的步骤2),以0.5秒间隔不断发送上行数据包,进行GPRS链路的预建立与保持(预热),机具扫码完成后停止发送预连接数据包,接下来的支付请求传输则可预期减少0.5秒的网络耗时。

4.9.2 如何选择预热上行数据包内容

主要考虑两方面:

  • 流量消耗少

  • 不触发后台处理逻辑

根据HTTP 1.1标准可知,客户端发送CRLF给服务端,服务端会忽略收到的CRLF,完全符合要求。

4.9.3 服务端主动断开连接

HTTP服务器收到第一个CRLF后,在client_header_timeout(默认配置为60秒)时间内未收到完整HTTP请求,会主动断开连接。因此,第一个CRLF发送一段时间后(如50秒),需要发送一次完整的HTTP请求,从第4.5章节可知,发送一个HTTP HEAD请求是一个最好的选择。

5. 优化结果

5.1 优化后收款网络交互时序

对比优化前的时序图,这个时序图中的变化有3点:

  • 小绿盒收款时不需要重新建立TLS连接。

  • 小绿盒在等待扫码时需要不断发送上行预热数据包。

  • 收单后台使用HTTPS长连接访问第三方支付平台。

5.2 优化前后耗时分布对比

5.3 优化方案收益说明

5.4 优化后和市场主流解决方案对比

注:单位为秒

表格内容说明:

  • 已达成不超过3秒的目标。

  • 由于不需要重新建立连接,支付耗时相比竞品更稳定。

6.总结

  • 2G实验室环境达平均耗时不超过3秒,达成目标。

  • 收款耗时不受扫码快慢影响,可保证稳定可控的支付耗时预期。

  • 正式商家使用平均耗时4秒以内,整体表现达到业界领先水平,符合商家要求。

参考文章

  • GPRS Wiki

  • Android微信智能心跳方案

  • 用于上行链路TBF的提早建立的方法

这篇关于微信收款机具在慢速网络中快速收款的技术揭秘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/839505

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

揭秘世界上那些同时横跨两大洲的国家

我们在《世界人口过亿的一级行政区分布》盘点全球是那些人口过亿的一级行政区。 现在我们介绍五个横跨两州的国家,并整理七大洲和这些国家的KML矢量数据分析分享给大家,如果你需要这些数据,请在文末查看领取方式。 世界上横跨两大洲的国家 地球被分为七个大洲分别是亚洲、欧洲、北美洲、南美洲、非洲、大洋洲和南极洲。 七大洲示意图 其中,南极洲是无人居住的大陆,而其他六个大洲则孕育了众多国家和

三国地理揭秘:为何北伐之路如此艰难,为何诸葛亮无法攻克陇右小城?

俗话说:天时不如地利,不是随便说说,诸葛亮六出祁山,连关中陇右的几座小城都攻不下来,行军山高路险,无法携带和建造攻城器械,是最难的,所以在汉中,无论从哪一方进攻,防守方都是一夫当关,万夫莫开;再加上千里运粮,根本不需要打,司马懿只需要坚守城池拼消耗就能不战而屈人之兵。 另一边,洛阳的虎牢关,一旦突破,洛阳就无险可守,这样的进军路线,才是顺势而为的用兵之道。 读历史的时候我们常常看到某一方势

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

无线领夹麦克风什么牌子好用?揭秘领夹麦克风哪个牌子音质好!

随着短视频行业的星期,围绕着直播和视频拍摄的电子数码类产品也迎来了热销不减的高增长,其中除了数码相机外,最为重要的麦克风也得到了日益增长的高需求,尤其是无线领夹麦克风,近几年可谓是异常火爆。别看小小的一对无线麦克风,它对于视频拍摄的音质起到了极为关键的作用。 不过目前市面上的麦克风品牌种类多到让人眼花缭乱,盲目挑选的话容易踩雷,那么无线领夹麦克风什么牌子好用?今天就给大家推荐几款音质好的