我在某银行的省级分行工作。大体上,账务核心是全国集中的,标准银行业务从粗力度上看直接与核心发生交互,而对于分省的特色业务,是通过分行接入核心进行账务交易,分行系统与三方商户进行交互和资金清算。分行会记录金融交易的状态,商户也会记录状态。
从记录金融交易状态这一点来看,总行核心、分行交易系统、商户IT系统算是构成了一个分布式的存储吧。
其实这不是第一次听到CAP这个理论,但今天在听到老师的问题时,突然觉得日常交易配置中的种种风格都可以用CAP或者BASE理论来解释。(ACID在上述某个节点如分行系统内部运行,这里不讨论了)。
比如,发生账务交易时,是先在总行账务核心进行还是先去商户进行业务处理等。
分区容忍性对应到我的业务场景,就是交易未明,这时分行会进行冲正(先冲正核心或者先冲正商户系统)或者先查询再冲正,如果此时网络恢复,则强一致性得到了满足。但如果经过一定次数的重试后仍然未明,就只能依赖于第二天的对账来进行了,此时业务柜员会进行手工处理。
所以,从这个角度上来说,上面三个节点系统保障的是最终一致性,适用于BASE。而银行核心的内部节点间适用于CAP的CP。
展开
作者回复: 说得很好 :) 感谢。
即便如银行,在一些出现网络分区的场景下依然优先保证可用性,而可以牺牲一致性。