背景

作为一套积分系统,数据一致性相当重要。例如积分日志和积分总值的对账一致。

设计

要求

  • 积分日志和积分总值对得上
  • 支持按照积分日志回放积分值
  • 支持按照业务系统、活动进行对账

实现

自身对账

写入积分日志和积分总值在同一个事务,同时利用日志同步进行读写分离和避免跨库事务。

幂等保障当网络异常超时时,客户端重复提交请求,保证至多一次成功。

跨系统对账

积分日志额外存储,按照业务系统、活动id存储。

修复数据

提供运维工具,当发生数据异常时可以支持按照积分日志回放用户的积分总值和赚取积分明细。

总结

由数据库事务来保证一致性,另外支持数据恢复