最近在整理线上问题时发现绝大部分的问题都是由于数据不一致导致的,而且这类问题往往也比较难处理,那一般数据一致性都是由哪些原因造成的呢。
分布式数据一致性
首先想到的就是分布式场景下的数据一致性,这也是最难处理的一种一致性。
单库场景下的数据一致性
单库场景出现数据不一致只能是数据的更新没有放到同一个事务中,目前我遇到的主要有两种情况。
由于系统的层次关系导致数据在不同的事务中更新
例如在一个支付系统中,当支付完成时先更新了支付核心(paycore)的数据,再更新完支付核心之后再推进收单层数据的更新,当更新收单层时如果出现锁冲突等异常时,就会出现系统数据的不一致。
随着系统的发展,在更新一条数据A时需要同时更新多条关联的数据,而之前存在多初修改A,往往容易遗漏