数据一致性 一文读懂

本文探讨了数据不一致产生的原因,特别是在互联网工程中的复杂性。介绍了本地事务和分布式事务的区别,以及ACID和BASE理论。文章列举了三种解决数据一致性的模式:可靠消息、TCC两阶段补偿和逆向接口补偿,并强调了在不同场景下选择合适方案的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据不一致产生的原因

互联网的工程开发,与传统软件相比,往往要面临非常复杂多变的业务场景,这是老生常谈的问题了。虽然在工程开发与协同领域已经有了比较多的实践案例,但对于比较底层的一些技术框架的协同,由于选型的原因,往往是比较多元化的,这也就导致了一些基础框架之间的协同会出现一些问题。

举个例子,在搜索领域,往往会采用ES这一类的全文检索引擎进行加速,但由于搜索往往还要带有广告、推荐等信息,很多时候还需要读取具备ACID的RDMS数据库,或者是一些NoSQL数据库,多种数据库组合在一起,才能满足业务上的需求。

这么多异构的数据源组合在一起,虽然能够将系统做的更大和更灵活,但也会带来很多问题,例如:

  • 工程上的实现更加繁琐,没有办法将所有数据库的操作封装到统一的DAL层;

  • 在一些可回滚的业务场景里,数据要在多个数据库之间同步的进行ACID操作。

例如广告业务场景里,有一个业务场景是只计费一次,流程有如下的步骤:

  • 数据写入Mysql;

  • 数据写入ES;

  • 数据写入Redis。

步骤1是为了将数据传递给财务系统,步骤2是为了重新调整检索顺序,步骤3是为了一些事实的推荐场景应用。如果第1步就失败了,那么整个顺序就不需要执行,但如果第1步成功而第2步失败,那么虽然计费成功了,但是在检索的时候就会出现问题,导致出现第二次的计费。

如果业务对于一致性

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值