“遇到的问题“那栏只有一句话:“核心引擎的时序逻辑存在根本性矛盾,正在评估解决方案。“
根本性矛盾。
林彻看到这四个字的时候是晚上九点多。
他在七楼办公室里看邮件,窗外的杭州已经全黑了,远处的灯光像一片安静的星海。
他打了个电话给老周。
老周接的时候背景噪音很大,有人在说话,键盘在敲,像是整个实验室都在运转。
“邮件我看了,什么矛盾?“
老周的声音有点哑,应该是说了一天话的缘故。
“央行的清算系统是同步的,强一致性,每一笔交易必须在账本上实时确认了才算完成,我们的可编程逻辑层是异步的,规则执行完了通过回调通知清算系统,问题出在这两个系统对接的地方。“
“具体呢?“
“假设一笔100块的定向消费券支付,我们的逻辑层先执行规则:检查商户是否在指定名单里,检查有效期,检查品类限制,规则执行完了,确认可以支付,通过回调通知央行的清算系统扣款,但在我们的逻辑层确认和清算系统实际扣款之间,有一个时间差,这个时间差里如果消费者的账户发生了其他变动,比如同时发起了另一笔支付,就会出现一致性问题。“
(本章未完,请点击下一页继续阅读)第412章请勿打扰!
“两笔支付争同一笔钱。“
“对,双花问题,在同步系统里不存在这个问题,因为每一笔交易都是锁定了再确认的,一笔没完另一笔就排队,在异步系统里,锁定和确认之间有间隔,间隔里什么都可能发生,这个间隔越短问题越小,但完全消除不了,只要是异步的,这个间隔就一定存在。“
“这个问题在设计阶段没有预见到?“
“预见到了。“老周的声音比平时低,他说话的时候背景里有人在讨论什么,声音模糊地传过来。
“我在架构设计阶段就知道会遇到这个问题,但当时的判断是可以通过技术手段把间隔压缩到足够小,小到在实际场景中不会被触发,理论上是对的,实际跑出来发现,压缩间隔的代价是延迟上升,间隔越小,延迟越高,两头不能兼得。“
林彻没说话。
“方远这三天一直在想解决方案,“老周说,“他试了两种思路,第一种是在逻辑层加一个预锁定机制,规则执行前先向清算系统申请锁定这笔钱,但这样等于把异步变回了半同步,失去了异步架构的优势,第二种是在逻辑层本地维护一份余额镜像,先在镜像上扣款,再通过回调同步到清算系统,但镜像和真实账本之间也会有延迟差,本质上是把问题往后推了一步。“
“两种都不行?“
“第一种否了,第二种跑了一遍,延迟太高,不能用。“
“延迟多少?“
“第一版跑出来八百多毫秒,不稳定,有时候更高。“
800毫秒。
央行的要求是500毫秒以内。
demO里的37毫秒是纯逻辑层的延迟,不包含跟清算系统对接的延迟。
一旦加上对接环节,延迟翻了二十多倍。
请勿开启浏览器阅读模式,否则将导致章节内容缺失及无法阅读下一章。
www.baquge.cc www.cwzww.com www.9kutxt.com www.shuhuangxs.com www.du8.org相邻推荐:看上了男朋友兄弟怎么办 九千岁的掌心小狐狸 沈医生带萨摩耶嫁体制内 可怜的老实Beta也要带球跑吗 自古甜攻克酷哥 人,你可以在兔的胸膛里休息 新契 假如祖龙是二凤的太子 天灾囤货,幼崽求生 求助:老婆变心了怎么办 傲慢法则 从基础刀法开始肝熟练度 夏洛克:我的搭档能听垃圾桶唠嗑 怀春在野 离婚后,带球回老家当治安官 薄荷新婚 重生2002 和开国皇帝绑定了恋爱系统 濛濛 女娲妈妈说,修仙不需要灵气