分布式事务

分布式事务,第1张

1、两阶段提交协议

分为两个阶段:一个准备阶段 ,一个提交阶段。基于两阶段协议,事务管理器能够最大限度地保证跨数据库 *** 作的事务原子性,是分布式系统环境下最严格的事务实现方法。但是两阶段协议存在性能方面问题,难于进行水平伸缩,因为在提交事务过程中,事务管理器需要每个参与者进行准备和提交的 *** 作协调,在准备阶段锁定资源,在提交阶段消费资源。由于参与者众多,锁定资源和消费资源之间的时间差被拉长,导致响应速度较慢,产生死锁或不确定结果的可能性较大。在互联网很少使用两阶段提交协议。

两阶段提交协议是阻塞协议,在极端情况下不能快速响应请求方,因此提出了三阶段提交协议,解决了两阶段提交协议的阻塞问题,但仍然需要事务管理器在参与者之间协调,才能完成一个分布式事务。

2、最大努力保证模式

这是一种非常通用的保证分布式一致性的模式,很多开发人员一直在使用,但是未认识到这是一种模式,最大努力保证模式适用于对一致性要求并不十分严格但是对性能要求较高的场景。

具体的实现方式是:在更新多个资源时,将多个资源的提交尽量延后到最后一刻处理,如果业务流程出现问题,则所有的资源更新都可以回滚,事务仍然保持一致。唯一可能出现问题的是在提交多个资源时发生了系统问题,比如网络问题等。但是这种情况是非常罕见的,一旦出现这种情况,就需要进行实时补偿,将已提交的事务进行回滚。 当然在使用这种模式时,我们要考虑每个资源的提交顺序。我们在生产实践中遇到的一种反模式,就是在数据库事务中嵌套远程调用,而且远程调用的是耗时任务,导致数据库事务被拉长,最后拖垮数据库。

3、事务补偿机制

在对性能要求很高的场景中,两阶段提交协议不是一种好方案,最大努力保证模式也会使多个分布式 *** 作相互嵌套,有可能相互影响。这里我们给出事务补偿机制,其性能很高,并且能尽最大可能地保证事务的一致性。

在数据库分库分表后,如果涉及的多个更新 *** 作在某一个数据库范围内完成,则可以使用数据库内的本地事务保证一致性。对于跨库的多个 *** 作,可通过补偿和重试,使其在一定的时间窗口内完成 *** 作,这样就可以实现事务的最终一致性,突破事务遇到问题就回滚的传统思路。 如果采用事务补偿机制,则在遇到问题时,需要记录遇到问题的环境、信息、步骤、状态等,后续通过重试机制使其达到最终一致性。

什么是分布式存储

分布式存储是一种数据存储技术,它通过网络使用企业中每台机器上的磁盘空间,这些分散的存储资源构成了虚拟存储设备,数据分布存储在企业的各个角落。

分布式存储系统,可在多个独立设备上分发数据。传统的网络存储系统使用集中存储服务器来存储所有数据。存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,无法满足大规模存储应用的需求。分布式网络存储系统采用可扩展的系统结构,使用多个存储服务器共享存储负载,利用位置服务器定位存储信息,不仅提高了系统的可靠性,可用性和访问效率,而且易于扩展。

分布式数据库不仅提供了高效快速的增量同步算法,对于数据库备份还具备许多完善、灵活的功能特性:支持备份更新目录和文件;适合数据存储结构大文件的增量同步备份,减少备份传输耗时;对多个同步文件内部以流水线减少文件等待延时;支持多种网络环境下rsh、ssh、nfs、socket端口等传输方式,可灵活支持数据库的加密、压缩等文件特性;适合数据库镜像备份,支持匿名传输;支持数据库备份数据可灵活保持连接、文件属性、权限、设备以及时间等;数据库备份思路一个数据库的数据库备份必须是一个数据库的完整的映像,在这个映像的时间点上,没有部分完成的事务存在。因此,数据库备份设计方案必须要求数据库支持在某时刻数据库的静止状态或不会对数据镜像文件进行刷新,希望对数据库系统完成在线数据库备份 *** 作,实现数据库系统高性能的应用级备份。方案设计思路采用Rsync工具对备份数据库各节点的数据从生产数据库系统上进行增量同步,由于生产数据库系统和备份数据库系统是拓扑结构完全相同的两个环境,因此生产数据库和备份数据库之间节点存在相对应的关系。如果在对应节点之间建立起同步关系,只要保证每个节点上的表结构、数据、日志记录等保持一致,那么整个数据库系统环境总体的表结构、数据和日志等也会一致。整个备份方案设计流程分为备份初始化、增量同步备份、备份恢复。以此来实现数据库系统的在线备份,并支持应用系统通过网络对备份数据库系统的切换和请求。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10017913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存