第414章 白板!(2/2)
请关闭浏览器的阅读/畅读/小说模式并且关闭广告屏蔽过滤功能,避免出现内容无法显示或者段落错乱。
本地帐本只记录可编程逻辑相关的状態,不记录完整的余额信息。
规则引擎执行的时候只查本地帐本,不查央行帐本。
执行完了再通过异步回调把结果告诉央行,央行帐本做最终確认。“
他停了一下。
“310毫秒的镜像同步没了。“
方远从椅子上站起来了。
“但是一致性呢“方远说,“本地帐本和央行帐本之间如果不同步,双花问题怎么解决“
老周没有看方远,他还在看白板。
“不需要实时一致,“老周说,语速越来越快,“最终一致就够了,本地帐本记录的是这笔钱正在被一个规则占用,不是这笔钱已经被扣了,占用状態锁定这笔钱,其他交易看到占用状態就排队,规则执行完了,回调通知央行,央行做最终扣款,如果回调失败了,占用状態自动释放,钱回到可用状態。“
“最终一致……“方远在脑子里跑了一遍逻辑。
“双花问题被占用锁解决了,“老周说,“不需要镜像同步,不需要央行实时確认,本地帐本的占用锁就是防双花的机制,310毫秒没了,195毫秒的回调通信变成了后置环节,不在主链路上,不影响用户体感延迟。“
他转过身看著林彻。
“18加22加65,105毫秒。“
105毫秒。
远低於500毫秒的要求。
甚至比deo里的37毫秒只高了不到70毫秒,因为加上了清算確认的65毫秒。
但这65毫秒是后置的。
用户感知到的延迟只有规则编译加规则执行,40毫秒。
清算確认在后台异步完成,用户付完钱走了,后台再慢慢对帐。
“你怎么想到的“老周问。
林彻没回答。
他把笔放回笔槽里。
白板右半边的图很简单,两个方框,一条实线,一条虚线,三个箭头。
跟左半边两周的叠代痕跡比起来,乾净得有点不真实。
这个思路不是先知能力给他的。
上辈子没有这个东西,没有可编程货幣引擎,没有异步架构,没有本地帐本加最终一致性的方案。
这些都是这辈子的產物。
他能想到这个思路,不是因为他“知道“答案,是因为他看过太多分布式系统的架构文章,读过太多关於区块链共识机制和支付系统设计的论文,这些东西在他脑子里沉淀了很久,在某个凌晨一点的瞬间被眼前的问题激活了。
不是先知,是积累。
老周看了他一眼,那个问题没有再问第二遍。
“今晚试。“老周说。
他转身走向方远的工位,方远已经坐下了,手放在键盘上,等著老周说开始。
“重写本地帐本模块,“老周说,“从零写,占用锁机制,最终一致性回调,方远你写核心逻辑,小李你写锁管理,我写回调接口,今晚出原型。“
三个人的手同时落在了键盘上。
…………
林彻站在白板旁边看了一会儿。
键盘声响起来了。
三个人的敲击节奏不一样,方远快而密,老周慢而稳,小李介於两者之间。
泡麵的味道还在,混著马克笔的气味和凌晨的凉意。
门外走廊的地板上还有那几个潮湿的脚印。
白板左半边是两周的努力。
右半边是刚才画的五分钟。
两周的努力不是白费的。
没有那610毫秒的拆解,没有方远对五个环节的精確分析,就不知道瓶颈在镜像同步的310毫秒。
不知道瓶颈在哪,就不知道该砍掉什么。
他转身走出了实验室。
门在身后轻轻关上,走廊里暗的,地板上的脚印已经干了一半。
电梯到了七楼,门开了,走廊比六楼更安静。
六楼的键盘声他已经听不到了。
但他知道那三个人今晚不会停。
“今晚试。“老周站起来了。