粉丝关系链,10亿数据,如何设计?
从上面的讨论可以看到,不管哪种方案,因为两步操作不能保证原子性,总有出现数据不一致的可能,高吞吐分布式事务是业内尚未解决的难题,此时的架构优化方向:最终一致性。并不是完全保证数据的实时一致,而是尽早的发现不一致,并修复不一致。 最终一致性,是高吞吐互联网业务一致性的常用实践。更具体的,保证数据最终一致性的常见方案有三种。 方法一:线下扫面正反冗余表全部数据 如上图所示,线下启动一个离线的扫描工具,不停的比对正表T1和反表T2,如果发现数据不一致,就进行补偿修复。 优点:
缺点:
有没有只扫描“可能存在不一致可能性”的数据,而不是每次扫描全部数据,以提高效率的优化方法呢? 方法二:线下扫描增量数据 每次只扫描增量的日志数据,就能够极大提高效率,缩短数据不一致的时间窗口,如上图1-4流程所示:
当然,我们还是需要一个离线的扫描工具,不停的比对日志log1和日志log2,如果发现数据不一致,就进行补偿修复 优点:
缺点:
有没有实时检测一致性并进行修复的方法呢? 方法三:实时线上“消息对”检测 这次不是写日志了,而是向消息总线发送消息,如上图1-4流程所示:
(编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |