基于内存日志的最终一致性方案的疑惑
老师你好,之前项目中一直用的本地事务保证数据一致性。
关于你介绍的基于内存日志的方案来解决最终一致性,我觉得这是存在一些问题的。
最大的问题是当处理业务数据之后,还未来得及将消息存储到内存日志,这时候服务挂掉了,那么就会造成了数据的不一致:业务数据处理完了,但是消息没有发送到消息队列(因为没有保存到内存日志中服务就挂掉了),导致其他服务无法收到消息。
感觉这种问题的补救方式就是在业务处理时做文章,比如在数据库中记录业务处理的状态,当消息日志发送成功,再更改这个状态(其实还是会遇到在此时宕机导致状态未能及时更新状态,这时候可能又要用别的补偿措施了。。)。 那么进一步增加了复杂性。个人感觉还不如本地事务的方式更方便呢。
期待您的解答,谢谢!