第413章 800毫秒!

    第413章 800毫秒! (第2/3页)

迟只降了40毫秒左右,从793降到了大约750。

    第二个方向是优化回调通信的协议,减少每次回调的数据包大小和握手次数。

    这个方向有效果,延迟又降了大概60毫秒,到了690左右。

    第三个方向是方远提出的,在逻辑层和清算系统之间加一个缓冲队列,把回调请求排队处理,减少并发冲突。

    这个方向花了三天写代码,跑出来的结果是延迟降了30毫秒,代价是在高并发场景下缓冲队列会堆积,堆积到一定程度延迟反而会飙升。

    三个方向加起来,延迟从793降到了大约660。

    还是超标,超了160毫秒。

    …………

    十二月第二周,又试了两个方向。

    一个是把逻辑层的规则引擎从解释执行改成预编译执行,把规则在第一次加载的时候就编译成机器码,后续执行的时候不再需要实时解析。

    这个改动很大,方远带着两个人花了五天重写了规则编译器。

    跑出来的效果:延迟降了大约50毫秒,到了610左右。

    另一个是老周自己想的,把清算系统的模拟环境从单机改成了分布式集群,更接近真实的央行架构。

    改完之后重新跑测试,延迟反而上升了,因为分布式集群的网络延迟比单机高。

    这个结果说明之前的优化有一部分是建立在模拟环境不够真实的基础上的。

    实际部署到真实环境里,延迟可能比测试数据更高。

    老周把这个结论写在了白板上,红色马克笔,三个字:"不乐观。"

    …………

    两周过去了。

    从十二月初到十二月中旬,十四天,七次测试迭代,延迟从793毫秒降到了610毫秒。

    降了183毫秒,但还是超标110毫秒。

    而且这110毫秒不是"再优化优化就能压下去"的那种差距。

    方远在最后一次测试之后做了一个分析,把延迟拆成了五个环节:规则编译18毫秒,规则执行22毫秒,镜像同步310毫秒,回调通信195毫秒,清算确认65毫秒。

    五个环节加起来610毫秒。

    每个环节的优化都已经接近各自的理论极限了,规则执行从37毫秒压到22毫秒已经是三次重写的结果,回调通信从280毫秒压到195毫秒是协议层面的极限。

    瓶颈在镜像同步,310毫秒,占了总延迟的一半以上。

    镜像同步的310毫秒是余额镜像方案的先天代价。

    要维护一份

    (本章未完,请点击下一页继续阅读)