完本神战

完本神战>首富从跳槽 > 第413章 800毫秒(第2页)

第413章 800毫秒(第2页)

第一个是压缩镜像同步的批量间隔,从500毫秒试著压到300毫秒。

压下去了,但延迟只降了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毫秒是余额镜像方案的先天代价。

要维护一份本地的余额副本,就必须定期跟清算系统的真实帐本同步。

同步频率越高,镜像越准,但延迟越大。

同步频率越低,延迟越小,但双花风险越高。

这是一个蹺蹺板,两头不能同时落地。

老周在最新的邮件里说,现有架构下的优化空间已经接近极限。

完结热门小说推荐

最新标签