Chinaunix首页 | 论坛 | 博客
  • 博客访问: 371425
  • 博文数量: 273
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1430
  • 用 户 组: 普通用户
  • 注册时间: 2018-02-02 15:57
文章分类

全部博文(273)

文章存档

2018年(273)

我的朋友

分类: 大数据

2018-08-02 14:15:28

为保障系统的可用性、可靠性以及性能,在分布式系统中,往往会设置数据冗余,即对数据进行复制。举例来说,当一个数据库的副本被破环以后,那么系统只需要转换到其他数据副本就能继续运行下去。另外一个例子,当访问单一服务器管理的数据的进程数不断增加时,系统就需要对服务器的数量进行扩充,此时,对服务器进行复制,随后让它们分担工作负荷,就可以提高性能。但同时,如何保障多个数据节点之间数据的一致以及如何处理分布式事务,将成为为一个复杂的话题。本文将介绍常用的事务处理机制。

CAP定理
CAP 定理(也称为 Brewer 定理),是由计算机科学家 Eric Brewer 提出的,即在分布式计算机系统不可能同时提供以下全部三个保证:

一致性(Consistency):所有节点同一时间看到是相同的数据
可用性(Availability):不管是否成功,确保每一个请求都能接收到响应
分区容错性(Partition tolerance):系统任意分区后,在网络故障时,仍能操作
显然,为了保障性能和可靠性,我们将数据复制多份,分布到多个节点上,同时也带来了一个难点,那就是如何保持各个副本数据的一致性。换句话说,我们选择了 AP ,则必须要牺牲掉 C 了。

但是,在实际的应用场景中,数据的一致性往往也是需要保证的。那么这是否违背了 CAP 定理呢?

一致性模型
其实,数据的一致性也分几种情况,大致可以分为:

Weak 弱一致性:当你写入一个新值后,读操作在数据副本上可能读出来,也可能读不出来。比如:某些存储系统,搜索引擎,实时游戏,语音聊天等,这些数据本文对完整性要求不高,数据是否一致关系也不大。
Eventually 最终一致性:当你写入一个新值后,并不一定能马上读出来,但在某个时间窗口之后保证最终能读出来。比如:DNS,电子邮件,消息中间件等系统,大部分分布式系统技术都采用这类模式。
Strong 强一致性:新的数据一旦写入,在任意副本任意时刻都能读到新值。比如:文件系统,RDBMS都是强一致性的。
也就是说,在设计分布式系统时,我们并不一定要求是强一致性的,根据应用场景可以选择弱一致性或者是最终一致性。

事务的作用
保证执行结果的正确性
保证数据的一致性
ACID


阅读(1171) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~