最近在整理線上問題時發現絕大部分的問題都是由於數據不一致導致的,而且這類問題往往也比較難處理,那一般數據一致性都是由哪些原因造成的呢。
分佈式數據一致性
首先想到的就是分佈式場景下的數據一致性,這也是最難處理的一種一致性。
單庫場景下的數據一致性
單庫場景出現數據不一致只能是數據的更新沒有放到同一個事務中,目前我遇到的主要有兩種情況。
由於系統的層次關係導致數據在不同的事務中更新
例如在一個支付系統中,當支付完成時先更新了支付核心(paycore)的數據,再更新完支付核心之後再推進收單層數據的更新,當更新收單層時如果出現鎖衝突等異常時,就會出現系統數據的不一致。
隨着系統的發展,在更新一條數據A時需要同時更新多條關聯的數據,而之前存在多初修改A,往往容易遺漏