For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了转行互联网软件开发行业需要学习的一些编程技术等内容,而本文我们就继续来学习一下,数据一致性概念与应用方法分析。
概念
一致性分为强一致性和弱一致性。
强一致性的协议和手段主要有:二阶段提交(2PC)、三阶段提交(3PC)、TCC(Try-Confirm-Cancel)补偿型。这里面经常有人把两阶段提交和TCC补偿型混淆。二阶段提交实际上业务逻辑是在提交之前做的,两阶段只是事务控制的两个阶段。而TCC是将业务逻辑分为try、confirm和cancel三个阶段。
对账主要分为两个阶段:数据核对和差错处理。数据核对就是对账中的轧账。注意「轧」这里念「ga」二声。差错处理就是对账中的平账。
对账依据和标准
对账问题先解决的问题是对账依据和标准。比如秒杀场景,对账依据就是订单号,整个链路采用内部订单号。对账标准可以设定为对用户的承诺。就是说:一次秒杀活动结束,如果给用户的结果是成功,那么实际上超卖了,那就自己补货解决。如果给用户结果是失败了,实际上有很多没卖出去,那就是没卖出去放着。总之,我承诺给用户的结果一定要履行。如果数据核对时,各个环节结果不一致,终结果向用户的承诺对齐。
对账梳理
可以从明细和总数两个方面来做对账。在秒杀场景中,明细是一条条请求订单。总数是成功和失败了多少个请求,买出多少库存。明细对账主要用于定位问题。总数对账是兜底策略,用来解决「怎么证明自己是对的」的问题。
对账时机
分为在线对账和离线对账。在线对账又分为实时对账和准实时对账。实时对账就是比如秒杀成功了,那下游的每一步都需要是成功的,其他情况如超时等则采用重试来进行强一致性保证。准实时对账通常用异步来实现。在秒杀的场景,如果订单返回失败,可以异步发起一个任务进行退款,如果退款不成功则可以用多次重试进行补单。
离线对账就是平时所说的定时任务。这个对账方法就比较多了,自由发挥空间比较大。特别是在轧账场景中,因为不实际修改数据,风险低,很多新技术试用可以选择在此模块进行。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。