数据一致性的两个方面
- 最终一致性: 保证数据最终一定能到达【数据目的地】
- 数据顺序问题: 保证发生在【数据源】的数据变更 与 到达【数据目的地】的数据变更,顺序一致
为什么顺序很重要?如下两个例子以供参考,如果顺序错乱,数据将不一致:
- 顺序不一致的话,name最终是’a’还是’b’?
update t set name=‘a’ where id = 1;
update t set name=‘b’ where id = 1;
- 顺序不一致的话,表格中,id为1的数据还在不在?
insert into t values (1);
delete from t where id = 1;
数据一致性的实现
- OrderlyThreadPool有序线程池通过自定义策略实现解析和业务通知有序, 在更新数据的通知中,
如果不是相同数据库相同表的同一行数据,是可以并行通知的