分布式数据库30讲

本文讨论了分布式数据库中因并发操作导致的数据不一致问题,通过介绍延时双删策略,如何在请求A写入新值后,确保旧值从缓存和数据库中清除,从而避免脏数据。策略包括先删除缓存,写入数据库,然后延迟后再次删除缓存,确保一致性。
摘要由CSDN通过智能技术生成

该方案会导致不一致的原因是。同时有一个请求A进行更新操作,另一个请求B进行查询操作。那么会出现如下情形:
download:分布式数据库30讲
(1)请求A进行写操作,删除缓存
(2)请求B查询发现缓存不存在
(3)请求B去数据库查询得到旧值
(4)请求B将旧值写入缓存
(5)请求A将新值写入数据库
上述情况就会导致不一致的情形出现。而且,如果不采用给缓存设置过期时间策略,该数据永远都是脏数据。
那么,如何解决呢?采用延时双删策略
伪代码如下

public void write(String key,Object data){
        redis.delKey(key);
        db.updateData(data);
        Thread.sleep(1000);
        redis.delKey(key);
    }

转化为中文描述就是
(1)先淘汰缓存
(2)再写数据库(这两步和原来一样)
(3)休眠1秒,再次淘汰缓存
这么做,可以将1秒内所造成的缓存脏数据,再次删除。

课程简介: 课程总计41课时,从什么是事务起,直到分布式事务解决方案,很的0基础基础与提升系列课程。对于难以理解的知识点,全部用画图+实战的方式解。 第一部分:彻底明白事务的四个特性:原子性、一致性、隔离性、持久性,用场景和事例来解。 第二部分:实战数据库事务的6中并发异常:回滚丢失、覆盖丢失、脏读、幻读、不可重复读、MVCC精。 第三部分:彻底搞清楚4种事务隔离级别:READ_UNCOMMITTED 读未提交隔离级别、READ_COMMITTED 读已提交隔离级别、REPEATABLE_READ 可重复度隔离级别、SERIALIZABLE 序列化隔离级别 第四部分:彻底搞清楚MySQL的各种锁:行锁、表锁、共享锁、排它锁、Next-Key锁、间隙锁、X锁、S锁、IS锁、IX锁、死锁、索引与锁、意向锁等。 第五部分:彻底搞清楚Spring事务的7种传播级别的原理和使用:PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER、PROPAGATION_NESTED分布式事务的理论基础:RPC定理、BASE理论、XA协议都是什么,原理是什么,有什么关联关系 第六部分:分布式事务的5种解决方案原理和优缺点:2PC两阶段提交法、3PC三阶段提交法、TCC事务补偿、异步确保策略、最大努力通知策略 第七部分:阿里巴巴分布式事务框架Seata:历经多年双十一,微服务分布式事务框架,用一个Nacos+Spring Cloud+Seta+MySql的微服务项目,实战解阿里的分布式事务技术,深入理解和学习Seata的AT模式、TCC模式、SAGA模式。 课程资料: 课程附带配套2个项目源码72页高清PDF课件一份阿里巴巴seata-1.1.0源码一份阿里巴巴seata-server安装包一份
### 回答1: 分布式数据库是一种将数据存储和管理功能分散在多个节点上的数据库系统。它的目的是通过在不同的机器上分散存储和处理数据,提高系统的性能、可靠性和可扩展性。 在分布式数据库中,数据会被分割为多个不同的片段,每个片段存储在不同的节点上。节点之间通过网络连接进行通信,并进行数据的交互和同步,以保证数据的一致性和可用性。 分布式数据库的设计需要考虑以下几个关键问题: 1. 数据分片:如何将数据分割成多个片段,并决定每个片段的存储位置。 2. 数据一致性:在多个节点上存储的数据如何保持一致,避免数据冲突和数据丢失。 3. 数据分发和访问:如何将数据在节点之间进行分发和访问,以提高查询和访问的效率。 4. 容错和故障恢复:如何处理节点故障和网络问题,以保证系统的可靠性和可用性。 CSDN的《分布式数据库30》是一门涵盖了分布式数据库各个核心概念和技术的课程。这门课程将会深入介绍分布式数据库的原理和实践,包括数据分片和分发、数据一致性算法、容错与故障恢复机制等。 通过学习这门课程,我们可以了解到分布式数据库的设计和应用原理,掌握关键的设计和实现技术,从而能够在日常工作中更好地应对大规模数据管理和处理的挑战。 此外,通过实例和案例分析,这门课程还能帮助我们更好地理解和应用分布式数据库技术,从而提高我们在系统设计和开发中的能力和水平。 总之,《分布式数据库30》是一门非常有价值的课程,能够帮助我们系统地学习和掌握分布式数据库相关的知识和技术,为我们在分布式系统设计和应用开发中提供强大的支持和指导。 ### 回答2: 分布式数据库是一种将数据存储和管理分散在多个计算机节点上的数据库系统。它采用分布式架构,可以提高数据库的可扩展性、可靠性和性能。 分布式数据库的核心思想是将数据分布存储在多个节点上,每个节点负责存储自己所管理的数据片段。这样做的好处是可以将数据存储和查询负载分散到多个节点上,从而提高系统的性能和容错能力。同时,分布式数据库可以通过添加或移除节点来实现系统的动态扩容和缩容,从而适应不同规模和负载的应用场景。 分布式数据库的设计和实现需要解决一系列的技术挑战。其中最重要的挑战之一是数据的一致性和并发控制。由于数据存储在多个节点上,需要确保数据的一致性,即不同节点上的数据副本保持同步。同时,多个客户端对数据库的并发操作会引发各种数据冲突问题,因此需要采用合适的并发控制机制来解决。 另外,分布式数据库还需要解决数据的分片管理、负载均衡和故障恢复等问题。数据的分片管理是指将数据按照一定的规则分割成多个片段,并将每个片段分配到不同的节点上管理。负载均衡是指将客户端的查询请求合理地分配到各个节点上,以避免某个节点过载。故障恢复是指在节点故障或网络分区等情况下,能够自动迁移数据或重新分配数据副本,以保证系统的可靠性和可用性。 总之,分布式数据库是面向大规模数据存储和处理的一种高效、灵活和可靠的解决方案。它在云计算、大数据分析和分布式应用开发等领域都有广泛的应用前景。掌握分布式数据库的相关知识和技术将是今后数据库领域的重要发展方向之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值