标签:实现 强一致 auto 总数 说明 学校 控制 比较 很多
引子
妈妈要我的时候已经40岁了。她一定是下了很大的决定才决定终究还是想要个女孩,希望这个女孩可以解救她的孤独。上高三的时候,有次又是因为哥哥的事情,妈妈把我从学校接回家。一个劲儿的问我怎么办好。在我能和她一起思考前的50多年里,她该是多么无助。所以当我不断看自己的掌纹,上面的起起伏伏。在想这一切解释不通的苦难什么时候过去。在想是不是在天堂的妈妈安排了这一切,因为理解她的痛苦是我的使命。我错了,她不是在天堂安排了这一切,是在我很小的时候。我为理解她而生,这是我的命运。命运并不是很深奥的东西,只是一个发展脉络。好比做金融领域,和清算、结算、对账打交道就是命运。对账本来用在金融领域,逐渐扩大到数据一致性领域。好比弹性工程,本来是航天领域的术语。逐渐演变为构造高可用工程的方法,方法的核心是通过提出边界场景(失败、风险、意外事件)问题,然后从检测、补救、预防几个维度去思考答案,最终反哺到系统设计开发与流程改善上,倒逼架构和流程SOP改进,再结合预案演练达到扼杀故障和缩短故障时间的目的。概念
一致性分为强一致性和弱一致性。
应用
以秒杀场景为例说明一下对账的常用流程。对账依据和标准
对账问题最先解决的问题是对账依据和标准。比如秒杀场景,对账依据就是订单号,整个链路采用唯一内部订单号。对账标准可以设定为对用户的承诺。就是说:一次秒杀活动结束,如果给用户的结果是成功,那么实际上超卖了,那就自己补货解决。如果给用户结果是失败了,实际上有很多没卖出去,那就是没卖出去放着。总之,我承诺给用户的结果一定要履行。如果数据核对时,各个环节结果不一致,最终结果向用户的承诺对齐。对账梳理
可以从明细和总数两个方面来做对账。在秒杀场景中,明细是一条条请求订单。总数是成功和失败了多少个请求,买出多少库存。明细对账主要用于定位问题。总数对账是兜底策略,用来解决「怎么证明自己是对的」的问题。对账时机
分为在线对账和离线对账。在线对账又分为实时对账和准实时对账。实时对账就是比如秒杀成功了,那下游的每一步都需要是成功的,其他情况如超时等则采用重试来进行强一致性保证。准实时对账通常用异步来实现。在秒杀的场景,如果订单返回失败,可以异步发起一个任务进行退款,如果退款不成功则可以用多次重试进行补单。标签:实现 强一致 auto 总数 说明 学校 控制 比较 很多
原文地址:https://www.cnblogs.com/xiexj/p/11731526.html