总结了五种大分类,供参考。其实个人觉得总结的不是很好,但调研业界的文章,也没有其他结构上、体系化上更有说服力的。先发出来给大家看看,日后改进的基础。
事务处理
使用事务可以确保一组操作被视为一个单元,同时确保所有操作都成功或全部失败。如果其中一个操作失败,则整个事务将回滚并撤消所有已提交的更改。
事务可以分为ACID事务和分布式事务。分布式事务业界有分成两阶段提交2PC、三阶段提交3PC、TCC、可靠消息等手段。本质上我理解都是分阶段,前面阶段判断,判断可执行则实际进行执行,然后确认成功,不成功则通过取消、重试等手段尽最大努力补偿。
锁定机制
使用锁定机制可以防止多个用户同时对同一个记录进行修改,从而避免冲突和不一致性。在某些情况下,应该采用分布式锁定机制来协调不同系统之间的数据访问。
分布式锁,相对单例模式下并发线程的锁,当需要控制多个实例上面的线程操作某个共享变量时,分布式锁显得尤为重要,当获取锁,才可以业务操作,否则等待。可以采用curator、redis等相关中间件,实现分布式锁。
数据复制技术
可以使用主从复制或双向复制等技术来确保源和目标系统之间的数据一致性。这种方法通常会选择其中一个节点作为主节点,并将更新写入到该节点上,在其他节点上进行读取。
数据校验和补偿
在进行跨系统或跨数据库间的数据同步时,应该对传输过程中的每个记录进行完整性检查和校验。如果发现错误,则应立即恢复原始状态并尝试重新发送。
经典的校验和补偿机制有:幂等、补单、信息流一致性比对、数据平衡性检查。
幂等,就是当客户端发起功能重试时,N次操作,都跟第一次操作结果相同,例如查询就是天生的幂等;下单,如果客人重复提交下单,这时系统不能生成很多重复的订单,这就需要幂等的判断处理。
信息流一致性比对,举几个例子:内部对账和外部对账、上下游之间比对、和中间件比对、和异构数据比对(交易库和大数据采集的日志可以做大数据核对,定时核对交易笔数是否一致)
数据平衡性检查,常见的是资金流平衡性检查。比如支付金额-退款金额应该=结算金额,退款金额不能大于支付金额。
可观测技术
实时监控各个系统之间的数据同步状态,并记录所有操作以便后续分析故障原因。可以使用监控工具或者自定义脚本来实现这些功能。