• tt
    2019-11-04
    我在某银行的省级分行工作。大体上,账务核心是全国集中的,标准银行业务从粗力度上看直接与核心发生交互,而对于分省的特色业务,是通过分行接入核心进行账务交易,分行系统与三方商户进行交互和资金清算。分行会记录金融交易的状态,商户也会记录状态。
    从记录金融交易状态这一点来看,总行核心、分行交易系统、商户IT系统算是构成了一个分布式的存储吧。

    其实这不是第一次听到CAP这个理论,但今天在听到老师的问题时,突然觉得日常交易配置中的种种风格都可以用CAP或者BASE理论来解释。(ACID在上述某个节点如分行系统内部运行,这里不讨论了)。

    比如,发生账务交易时,是先在总行账务核心进行还是先去商户进行业务处理等。

    分区容忍性对应到我的业务场景,就是交易未明,这时分行会进行冲正(先冲正核心或者先冲正商户系统)或者先查询再冲正,如果此时网络恢复,则强一致性得到了满足。但如果经过一定次数的重试后仍然未明,就只能依赖于第二天的对账来进行了,此时业务柜员会进行手工处理。

    所以,从这个角度上来说,上面三个节点系统保障的是最终一致性,适用于BASE。而银行核心的内部节点间适用于CAP的CP。
    展开

    作者回复: 说得很好 :) 感谢。

    即便如银行,在一些出现网络分区的场景下依然优先保证可用性,而可以牺牲一致性。

    
     1
  • 靠人品去赢
    2019-11-05
    有了解过,我觉得涉及到业务基本会考虑CP。
    牺牲可用性也要保证数据一致性,肯定是平台类商家的库存商品类的订单,尤其是防止同一个商品被多人下单。
    
    
  • leslie
    2019-11-04
    老师的BASE确实初次接触:分布式的课程其实同时在学包括相关的书籍同时在看;不过现在NOSQL中还是牵涉了大量的类SQL的东西,RMDB又对NOSQL的JSON做了很好的兼容,包括<分布式技术原理与算法解析>的老师其实也提到分布式的问题。
          个人觉得现在其实绝对边界是没有的:不然不会真实的生产中都是用数据系统或者中间件存储整体去解决问题,现在已经没有或者极少单独的CS或BS;其实还是一个合理整合吧。就像老师说的全栈其实还是有核心的,通过中间去合理结合周边从而达到需要的效果。
          RMDB-NOSQLDB-MQ:这是整个一条链,合理的结合业务场景去承担/分担相应的工作是需要摸索和探索的。
    
    
我们在线,来聊聊吧