大数据存储:分布式系统的事务处理

当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题:

(1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。

(2)我们总是害怕我们的这台服务器停机,造成服务不可用或是数据丢失。

于是我们不得不对我们的服务器进行扩展,加入更多的机器来分担性能上的问题,以及来解决单点故障问题。 通常,我们会通过两种手段来扩展我们的数据服务:

(1)数据分区:就是把数据分块放在不同的服务器上(如:uid % 16,一致性哈希等)。

(2)数据镜像:让所有的服务器都有相同的数据,提供相当的服务。

对于第一种情况,我们无法解决数据丢失的问题,单台服务器出问题时,会有部分数据丢失。所以,数据服务的高可用性只能通过第二种方法来完成——数据的冗余存储(一般工业界认为比较安全的备份数应该是3份,如:Hadoop和Dynamo)。

但是,加入更多的机器,会让我们的数据服务变得很复杂,尤其是跨服务器的事务处理,也就是跨服务器的数据一致性。这个是一个很难的问题。 让我们用最经典的Use Case:“A帐号向B帐号汇钱”来说明一下,熟悉RDBMS事务的都知道从帐号A到帐号B需要6个操作:

1)从A帐号中把余额读出来。

2)对A帐号做减法操作。

3)把结果写回A帐号中。

4)从B帐号中把余额读出来。

5)对B帐号做加法操作。

6)把结果写回B帐号中。

为了数据的一致性,这6件事,要么都成功做完,要么都不成功,而且这个操作的过程中,对A、B帐号的其它访问必需锁死,所谓锁死就是要排除其它的读写操作,不然会有脏数据的问题,这就是事务。那么,我们在加入了更多的机器后,这个事情会变得复杂起来:

1)在数据分区的方案中:如果A帐号和B帐号的数据不在同一台服务器上怎么办?我们需要一个跨机器的事务处理。也就是说,如果A的扣钱成功了,但B的加钱不成功,我们还要把A的操作给回滚回去。这在跨机器的情况下,就变得比较复杂了。

2)在数据镜像的方案中:A帐号和B帐号间的汇款是可以在一台机器上完成的,但是别忘了我们有多台机器存在A帐号和B帐号的副本。如果对A帐号的汇钱有两个并发操作(要汇给B和C),这两个操作发生在不同的两台服务器上怎么办?也就是说,在数据镜像中,在不同的服务器上对同一个数据的写操作怎么保证其一致性,保证数据不冲突?

同时,我们还要考虑性能的因素,如果不考虑性能的话,事务得到保证并不困难,系统慢一点就行了。除了考虑性能外,我们还要考虑可用性,也就是说,一台机器没了,数据不丢失,服务可由别的机器继续提供。 于是,我们需要重点考虑下面的这么几个情况:

1)容灾:数据不丢、结点的Failover

2)数据的一致性:事务处理

3)性能:吞吐量 、 响应时间

前面说过,要解决数据不丢,只能通过数据冗余的方法,就算是数据分区,每个区也需要进行数据冗余处理。这就是数据副本:当出现某个节点的数据丢失时可以从副本读到,数据副本是分布式系统解决数据丢失异常的唯一手段。所以,在这篇文章中,简单起见,我们只讨论在数据冗余情况下考虑数据的一致性和性能的问题。简单说来:

1)要想让数据有高可用性,就得写多份数据。

2)写多份的问题会导致数据一致性的问题。

3)数据一致性的问题又会引发性能问题。

这就是软件开发,按下了葫芦起了瓢。

本文作者:佚名

来源:51CTO

时间: 2024-10-24 18:19:39

大数据存储:分布式系统的事务处理的相关文章

技术向:大数据存储—分布式系统的事务处理

当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题: (1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求. (2)我们总是害怕我们的这台服务器停机,造成服务不可用或是数据丢失. 于是我们不得不对我们的服务器进行扩展,加入更多的机器来分担性能上的问题,以及来解决单点故障问题. 通常,我们会通过两种手段来扩展我们的数据服务: (1)数据分区:就是把数据分块放在不同的服务器上(如:uid % 16,一致性哈希等). (2)数据镜像:让所有的服务器都有相同的数据,提供相

吞噬大数据存储领域新机制——NoSQL模式解析

在过去几年,一种新兴的大型数据存储机制正吞噬大数据存储市场.这种存储解决方案与传统的RDBMS有显著的区别,它们被称之为NoSQL. 在NoSQL世界中有以下关键的成员,包括 ●Google BigTable.HBase.Hypertable ●Amazon Dynamo.Voldemort.Cassendra.Riak ●Redis ●CouchDB.MongoDB 而这些解决方案又有一些共同的特点 ●基于键-值存储 ●系统运行在海量的普通机器上 ●数据在经过分区和复制后分布在集群中 ●放宽对

《Hadoop与大数据挖掘》——第2章 大数据存储与运算利器—Hadoop 2.1 Hadoop概述

第2章 大数据存储与运算利器-Hadoop 本章主要介绍了Hadoop框架的概念.架构.组件.生态系统以及Hadoop相关编程,特别是针对Hadoop组件HDFS.MapReduce.YARN,Hadoop MapReduce编程做了较详细的介绍.在介绍各个知识点的同时,结合动手实践章节,帮助读者理解对应的内容. 2.1 Hadoop概述 2.1.1 Hadoop简介 随着现代社会的发展,各种信息数据存量与增量都非常大,很多情况下需要我们能够对TB级,甚至PB级数据集进行存储和快速分析,然而单机

华为与英特尔构建全融合大数据存储解决方案

IDC预测,全球数据总量将在2020年达到40ZB.40ZB的数据量是什么概念呢? IDC给出了一个比喻:如果把一粒沙子当做一个字的话,40ZB的数据量相当于地球上所有海滩上沙子数量的57倍;40ZB的数据量相当于667千亿部高清影片,一个人每天24小时连续不断地看,看完这些电影需要5万6千亿年;目前我们对地球年龄的估值是45.5亿年,意味着,如果这个人从地球诞生的时候就开始看电影,现在他只看完了这些电影总数的万分之八(0.0008).而这些数据,每两年还将翻一番,呈指数级增长态势.大数据将以一

大数据存储领域的八位明星

正如存储技术分析师Greg Schulz所言,"大数据无与伦比,它拥有承载一切的能力."也就是说目前市场上已经存在多款独立存储工具,旨在帮助存储管理员打理规模日益膨胀的大数据海洋.同样在意料之中的是,其中大部分与Hadoop关系密切. SGI InfiniteStorage SGI InfiniteStorage通过虚拟化技术让存储转化为一整套混合体系,其中既包含性能超群的闪存机制.又拥有成本低廉的磁带方案.而这一切都建立在数据始终在线的基础之上,也就是实现数据对用户的透明化. &qu

戴尔专门拿出6000万美元押宝大数据存储服务

戴尔(http://www.aliyun.com/zixun/aggregation/13533.html">Dell)创始人Michael Dell近日宣布,戴尔公司将会专门拨出6000万美元的投资基金,用于投资存储初创公司. 戴尔公司表示,未来的大数据存储将会创造一个巨大的市场.Michael Dell声称,在未来,一定会有围绕大数据服务而产生的伟大公司,戴尔愿意帮助他们在初期发展. 数据存储将会越来越重要,Michael认为,各种数据存储技术将会大发展.而戴尔公司专门拿出6000万美

应用解析:大数据存储服务选择最佳做法

磁盘存储就像是衣橱,永远不够用,在大数据时代,这一点尤为突出."大数据"意味着需要比传统存储平台处理更多的数据.那么这对于CIO意味着什么呢?意味着他们将需要做出更多的努力,而可供参考的信息却很少. 不过,在为大数据选择存储服务时也并不是完全无迹可寻. 何谓大数据 首先,我们需要清楚大数据与其他类型数据的区别以及与之相关的技术(主要是分析应用程序).大数据本身意味着非常多需要使用标准存储技术来处理的数据.大数据可能由TB级(或者甚至PB级)信息组成,既包括结构化数据(数据库.日志.SQ

未来大数据存储:1PB仅需一张光盘

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;     以后数据存储无论个人用户,抑或不同规模的企业政府机关等,都可更加轻松地进行.来自斯威本科技大学(SwinburneUniversityofTechnology)的研究团队负责人MinGu教授最新开发出了一种全新的数据存储方式,可将1PB(1024TB)的数据存储到一张仅DVD大小的聚合物碟片上. 大数据存储在当今世界已经显得尤为必要,而且我们人类自步入数字时

详解大数据存储:哪些问题最容易出现

"大数据" 通常指的是那些数量巨大.难于收集.处理.分析的数据集,亦指那些在传统基础设施中长期保存的数据.这里的"大"有几层含义,它可以形容组织的大小,而更重要的是,它界定了企业中IT基础设施的规模.业内对大数据应用寄予了无限的期望 商业信息积累的越多价值也越大 只不过我们需要一个方法把这些价值挖掘出来. 也许人们对大数据的印象主要从存储容量的廉价性而来,但实际上,企业每天都在创造大量的数据,而且越来越多,而人们正在努力的从浩如烟海的数据中寻觅有价值的商业情报.另一

《大数据存储:MongoDB实战指南》一1.9 适合哪些业务

1.9 适合哪些业务 大数据存储:MongoDB实战指南 当前各行各业都离不开数据的存储与检索需求,传统关系数据库发展了这么多年,在有些垄断性行业如电信.银行等仍然是首选,因为这些行业需要数据的高度一致性,只有支持事务的数据库才能满足它们的要求.但随着这几年互联网业务的发展,数据量越来越大,并发请求也越来越高,一个大系统中只用一种数据库并不能很好地满足全部业务的发展,同时以MongoDB为代表的NoSQL数据库快速发展,在某些方面展示了它们的优越性,逐渐被采用并取代了系统中的某些部件,总的来说以