第413章 800毫秒!(1/2)
请关闭浏览器的阅读/畅读/小说模式并且关闭广告屏蔽过滤功能,避免出现内容无法显示或者段落错乱。
十二月了。
老周的第二版方案在十一月最后一天跑通了。
方远用了一周时间重写了余额镜像模块的核心逻辑,把镜像同步的频率从每笔交易实时同步改成了批量异步同步,每500毫秒同步一次。
这样做减少了单笔交易的等待时间,把延迟从最初的800多毫秒压到了一个相对稳定的区间。
相对稳定的区间是多少呢。
老周在邮件里附了一张测试报告。
单笔交易延迟:平均793毫秒,最低612毫秒,最高1247毫秒。
793毫秒。
央行的性能指標要求是500毫秒以內。
deo里跑出来的37毫秒是纯逻辑层的数据,不含清算系统对接。
加上对接之后,延迟翻了二十多倍。
第二版比第一版好了一点,从“完全不能用“变成了“能用但不达標“。
差了將近300毫秒。
300毫秒听起来不多,0.3秒,一眨眼的功夫。
但在冬奥的场景里,这0.3秒可能是灾难性的。
冬奥期间数字人民幣的核心支付场景是什么
便利店、餐饮、纪念品商店、交通。
冬奥村的便利店在比赛日的尖峰时段,一个小时可能有几百人排队结帐。
每一笔支付如果多等0.3秒,几百笔就是几十秒到一两分钟的排队延长。
运动员和记者不会等。
他们会掏出信用卡,或者打开手机用微信支付宝。
数字人民幣在冬奥的第一印象就是“慢“。
这不是技术问题。
这是政治问题。
冬奥是数字人民幣面向全球的第一次亮相,亮相的第一印象是“慢“,对整个dcep项目的推广是毁灭性的。
央行不会允许这种事发生。
更糟糕的是,赵铭远的同步清算方案不存在这个问题。
同步架构的延迟完全取决於清算引擎本身的处理速度,工行的清算引擎经过了几十年的优化,单笔交易確认时间在200毫秒以內。
如果央行看到的测试数据是微光610毫秒对工行200毫秒,结论不需要討论。
793毫秒,不达標,而且对手在达標。
…………
十二月第一周,老周的团队开始了密集的优化叠代。
方向有三个。
第一个是压缩镜像同步的批量间隔,从500毫秒试著压到300毫秒。
压下去了,但延迟只降了40毫秒左右,从793降到了大约750。
第二个方向是优化回调通信的协议,减少每次回调的数据包大小和握手次数。
这个方向有效果,延迟又降了大概60毫秒,到了690左右。
第三个方向是方远提出的,在逻辑层和清算系统之间加一个缓衝队列,把回调请求排队处理,减少並发衝突。
这个方向花了三天写代码,跑出来的结果是延迟降了30毫秒,代价是在高並发场景下缓衝队列会堆积,堆积到一定程度延迟反而会飆升。
三个方向加起来,延迟从793降到了大约660。
还是超標,超了160毫秒。
…………
十二月第二周,又试了两个方向。
一个是把逻辑层的规则引擎从解释执行改成预编译执行,把规则在第一次加载的时候就编译成机器码,后续执行的时候不再需要实时解析。
这个改动很大,方远带著两个人花了五天重写了规则编译器。
跑出来的效果:延迟降了大约50毫秒,到了610左右。
另一个是老周自己想的,把清算系统的模擬环境从单机改成了分布式集群,更接近真实的央行架构。
改完之后重新跑测试,延迟反而上升了,因为分布式集群的网络延迟比单机高。
这个结果说明之前的优化有一部分是建立在模擬环境不够真实的基础上的。
本章未完,点击下一页继续阅读。