`
- 浏览:
261312 次
- 性别:
- 来自:
上海
-
【总结】ACID、Data Replication、CAP与BASE
1,ACID
- 在传数据库系统中,事务具有ACID 4个属性
-
-
原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行
-
一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的
-
隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然
-
持久性(Durable):事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持
- 单个节点的事务:数据库都是通过并发控制(两阶段封锁,two phase locking或者多版本,multiversioning)和恢复机制(日志技术)保证事务的ACID特性
- 跨多个节点的分布式事务:通过两阶段提交协议(two phase commiting)来保证事务的ACID
- 数据库系统是伴随着金融业的需求而快速发展起来:对于金融业,可用性和性能都不是最重要的,而一致性是最重要的,用户可以容忍系统故障而停止服务,但绝不能容忍帐户上的钱无故减少。而强一致性的事务是这一切的根本保证
2,Data Replication
- 数据复制(data replication)属于分布式计算的范畴,它并不仅仅局限于数据库
- 多副本构成的分布式数据库系统中, 其事务特性与单个数据库系统的差别主要表现在原子性和一致性两个方面
-
- 在原子性方面, 要求同一分布式事务的所有操作在所有相关副本上要么提交, 要么回滚, 即除了保证原有的局部事务的原子性,还需要控制全局事务的原子性
- 在一致性方面,多副本之间需要保证单一副本一致性
- 主从( Priamry / Copy)方式
-
- 一般是系统中仅仅指定一个Primary节点接受更新请求 , 在事务操作执行完毕后, 在事务提交前或后将操作广播到其他Copy节点
- Primary / Copy方式并发控制较为简单, 由Primary本地的事务控制即可实现,
事务的原子性的实现也较为简单, 一般由Primary节点作为协调节点来实现
- 缺陷也显而易见: 仅仅单个节点提供Update请求处理能力, 对于Update密集类型的应用, 如OLTP, 容易形成单点性能瓶颈
- 更新所有( Update-Anywhere ) 方式
-
- 处理过程稍微复杂, 系统中的任何副本具有相同的地位,都可以接收Update请求 ,在检测事务冲突、事务提交前或后将各个节点的Update传播到其他副本节点
- 通过多点提高事务吞吐率, 但随之而来的是多个分布式事务之间复杂的并发控制和原子性问题
- 从事务提交的时间点看, 可以分为积极 (Eager)和消极(Lazy) 两类
-
-
积极 (Eager) :
-
- 在事务提交前传播更新
- 前者即通常无谓的同步复制(synchronous replication)
- 优点是可以保证一致性(一般通过两阶段提交协议),但是开销较大,可用性不好,带来了更多的冲突和死锁等问题
- Lazy+Primary/Copy的复制协议在实际生产环境中是非常实用的,MySQL的复制实际上就属于这种
-
消极(Lazy):
-
- 在提交之后才将事务操作传播到其他副本
- 无谓的异步复制(asynchronous replication)
- 优点是可以提高响应速度, 但牺牲了一致性 ,一般实现该类协议的算法需要增加额外的补偿机制
3,CAP
- Consistency(一致性)
-
- 一致性是说数据的原子性,这种原子性在经典的数据库中是通过事务来保证的,当事务完成时,无论其是成功还是回滚,数据都会处于一致的状态。在分布式环境中,一致性是说多个节点的数据是否一致
- Availability(可用性)
-
- 可用性是说服务能一直保证是可用的状态,当用户发出一个请求,服务能在有限时间内返回结果
- Partition Tolerance(分区容错性)
-
- Partition是指网络的分区。可以这样理解,一般来说,关键的数据和服务都会位于不同的IDC(Internet Data Center:互联网数据中心)
- CAP理论
-
- 一个分布式系统不可能同时满足一致性,可用性和分区容错性这三个需求,三个要素中最多只能同时满足两点
- 对于分布式数据系统而言,分区容错性是基本要求,否则就不称其为分布式系统
- 不要把精力浪费在设计如何能同时满足三者的完美分布式系统上,而是应该进行权衡取舍。这也意味着分布式系统的设计过程,也就是根据业务特点在C(一致性)和A(可用性)之间寻求平衡的过程,要求架构师真正理解系统需求,把握业务特点
4,BASE
- BASE来自于互联网的电子商务领域的实践,它是基于CAP理论逐步演化而来,核心思想是即便不能达到强一致性(Strong consistency),但可以根据应用特点采用适当的方式来达到最终一致性(Eventual
consistency)的效果。BASE的含义:
-
-
Basically Available:基本可用
-
Soft-state:软状态/柔性事务,即状态可以有一段时间的不同步
-
Eventual consistency:最终一致性
- BASE是反ACID的,它完全不同于ACID模型,牺牲强一致性,获得基本可用性和柔性可靠性并要求达到最终一致性
- CAP、BASE理论是当前在互联网领域非常流行的NoSQL的理论基础,BASE思想的主要实现有
-
- 现在NOSQL运动丰富了拓展了BASE思想,可按照具体情况定制特别方案,比如忽视一致性,获得高可用性等等,NOSQL应该有下面两个流派:
-
-
key-value存储,如Amaze Dynamo等,可根据CAP三原则灵活选择不同倾向的数据库产品
-
领域模型 + 分布式缓存+ 存储 (Qi4j和NoSql运动),可根据CAP三原则结合自己项目定制灵活的分布式方案,难度高
- 共同点
-
- 都是关系数据库SQL以外的可选方案,逻辑随着数据分布,任何模型都可以自己持久化,将数据处理和数据存储分离,将读和写分离,存储可以是异步或同步,取决于对一致性的要求程度
- 不同点
-
- NOSQL之类的key-value存储产品是和关系数据库头碰头的产品BOX,可以适合非Java如PHP
RUBY等领域,是一种可以拿来就用的产品,
-
领域模型 + 分布式缓存+ 存储是一种复杂的架构解决方案,不是产品,但这种方式更灵活
- 提供一种领域模型 +
分布式缓存+存储 +
JMS异步的BASE解决方案图
-
- 图中,领域模型带着逻辑和数据被分布式缓存如Ehcache +Terracotta分布到多台机器中运行,当领域模型需要驱动架构功能时,通过JMS驱动,而JMS也是一个集群无单点风险的架构,同时一个分布式事务架构,通过JMS分布式事务和关系数据库能够保证持久数据一致性,不过模型中数据和关系数据库中的数据一致性就不是高度实时的,这个方案属于一种低延迟low
latency
- 由于业务数据装在领域模型中,关系数据库只是用来做存储,这属于一种Not Only SQL
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
本文档用与解决windows系统下安装DATA Replication(cdc)后由于输入错误密码导致账户被锁问题,希望对大家有所帮助!
《HotR: Alleviating Read/Write Interference with Hot Read Data Replication for Flash Storage》论文的原文及中文翻译。 摘要: 在读写请求混合的工作负载下,闪存的读写干扰问题仍是一个关键问题。为了显著...
GigaSpaces 的 In-Memory Data Grid (IMDG) 7.1 是一种分布式内存计算平台,主要用于处理大规模数据集。IMDG 使用分区式存储和复制策略来支持数据的高可用性和弹性伸缩。在并发控制方面,它通过实现一致性哈希算法、...
Oracle Database 2 Day + Data Replication and Integration Guide 11g Release 2 (11.2) 是一本针对Oracle数据库用户的重要参考资料,旨在详细介绍数据复制和集成的各种技术。本指南覆盖了Oracle Streams、物化视图...
本篇文章将基于《IBM DB2 UDB Data Replication V8 实用指南》这本书的内容,详细介绍DB2 V8的数据复制功能,包括其基本原理、应用场景以及最新特性等。 #### 二、DB2 V8复制解决方案概览 ##### 2.1 IBM复制解决...
- **IBM Data Replication**:该技术可以高效地复制和同步数据,确保ODS的数据保持最新状态。 - **WebSphere MQ Family**:通过消息队列机制,WebSphere MQ家族可以在不同的系统间传递数据,提高系统的可扩展性和...
文中提到的“Bring Consensus to Data Replication”表达了数据复制中保证一致性的重要性。一致性的达成依赖于共识协议,这能够保证即使在网络分区或节点故障的情况下,系统的所有副本仍然能够达成一致的状态。文中...
akka-data-replication, 在Akka集群中,复制 CRDTs Akka分布式数据这个库的( akka-data-replication ) 已经包含在Akka中,在模块中分发数据。英镑不在/akka-data-replication中维护。 所有 Bug 修复和新功能将在 ...
- **启动/停止复制进程(Start/Stop Replication Processes):** 控制复制进程的启动与停止,灵活应对不同场景的需求。 - **监控复制状态(Monitor Replication Status):** 获取复制进度、延迟时间等关键信息,及时...
APTARE IT Analytics DataCollector 安装指南(适用于Replication Manager) APTARE IT Analytics DataCollector 是一款强大的数据分析工具,旨在帮助企业更好地理解和优化其 IT 基础设施。下面是对 APTARE IT ...
Veeam Backup & Replication 12 指南 Veeam Backup & Replication 12 是一款功能强大的备份和复制软件,旨在帮助用户保护和恢复虚拟机和物理机上的数据。该软件提供了多种备份模式、快照管理、数据复制和灾难恢复等...
### MySQL Replication 架构与实现 #### 一、MySQL Replication 概念与优势 MySQL Replication 是一种数据复制机制,它允许将一个MySQL服务器(主服务器或Master)的数据异步复制到一个或多个其他MySQL服务器(从...
AWS 数据复制中心一种可靠、安全、可扩展的 AWS 解决方案,支持从不同来源到 AWS 的结构化和非结构化数据复制。 注意:如果您已经部署了此解决方案。 有关 Web 门户的使用,请参阅。...Google Cloud Storage 复制到 ...
MySQL Group Replication 详细搭建部署过程 MySQL Group Replication 是一种基于组的复制技术,用于容错系统中。它由多个服务器(节点)组成,每个节点都可以独立执行事务,而读写事务则会在于 group 内的其他节点...
Windchill Remote Replication Servers
在实际部署中,数据的可靠性与一致性是至关重要的,这就引出了HBase的Replication功能。本文将深入探讨HBase的复制机制,包括其原理、配置和应用场景。 1. **Replication原理** HBase的Replication功能允许在一个...