`
unsoundboy
  • 浏览: 63399 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

分布式存储系统设计的若干原则

阅读更多

1、CAP理论
2000年Eric Brewer教授提出了著名的CAP理论 ,即:一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。2002年MIT的Seth Gilbert 和 Nancy lynch两人证明了CAP理论的正确性 。根据CAP理论,一致性(C),可用性(A),分区容错性(P),三者不可兼得,必须有所取舍。因此系统架构师不要把精力浪费在如何设计才能同时满足CAP三者的完美分布式系统,而是应该研究如何进行取舍,满足实际的业务需求。


C: Consistency(一致性), 任何一个读操作总是能读取到之前完成的写操作结果,也就是在分布式环境中,多点的数据是一致的;
A: Availability(可用性), 每一个操作总是能够在确定的时间内返回,也就是系统随时都是可用的;
P: Tolerance of network Partition(分区容忍性), 在出现网络分区(比如断网)的情况下,分离的系统也能正常运行;
对 于分布式存储系统而言,分区容错性(P)是基本需求,因此只有CP和AP两种选择。CP模式保证分布在网络上不同节点数据的一致性,但对可用性支持不足, 这类系统主要有BigTable, HBASE, MongoDB, Redis, MemcacheDB, Berkeley DB等。AP模式主要以实现"最终一致性(Eventual Consistency)"来确保可用性和分区容忍性,但弱化了数据一致性要求,典型系统包括Dynamo, Tokyo Cabinet, Cassandra, CouchDB, SimpleDB等。

2、Eventual Consistency(最终一致性)
简而言之:过程松,结果紧,最终结果必须保持一致性。

从客户端考虑数据一致性模型,假设如下场景:
存储系统 :它在本质上是大规模且高度分布的系统,其创建目的是为了保证耐用性和可用性。
进程A :对存储系统进行读写。
进程B和C :这两个进程完全独立于进程A,也读写存储系统。客户端一致性必须处理一个观察者(在此即进程A、B或C)如何以及何时看到存储系统中的一个数据对象被更新。

根据以上场景可以得到如下三种一致性模型:
强一致性 :在更新完成后,(A、B或C进行的)任何后续访问都将返回更新过的值。
弱一致性 :系统不保证后续访问将返回更新过的值,在那之前要先满足若干条件。从更新到保证任一观察者看到更新值的时刻之间的这段时间被称为不一致窗口。
最终一致性 :这是弱一致性的一种特殊形式;存储系统保证如果对象没有新的更新,最终所有访问都将返回最后更新的值。如果没有发生故障,不一致窗口的最大值可以根据下列因素确定,比如通信延迟、系统负载、复制方案涉及的副本数量。

客户端一致性模型的变体有:
因果一致性(Causal consistency): 如果进程A通知进程B它已更新了一个数据项,那么进程B的后续访问将返回更新后的值,且一次写入将保证取代前一次写入。与进程A无因果关系的进程C的访问遵守一般的最终一致性规则。
“读己之所写”一致性(Read-your-writes consistency): 这是一个重要的模型。当进程A自己更新一个数据项之后,它总是访问到更新过的值,绝不会看到旧值。这是因果一致性模型的一个特例。
会话一致性(Session consistency): 这是上一个模型的实用版本,它把访问存储系统的进程放到会话的上下文中。只要会话还存在,系统就保证“读己之所写”一致性,系统保证也不会延续到新的会话。
单调读一致性(Monotonic read consistency): 如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值。
单调写一致性(Monotonic write consistency): 系统保证来自同一个进程的写操作顺序执行。要是系统不能保证这种程度的一致性,就非常难以编程了。

3、BASE理论
BASE,即Basically Availble(基本可用)、Soft-state (软状态)、Eventual Consistency (最终一致性)。BASE的英文意义是碱,而ACID是酸,有点水火不容的意思。
关 系数据库的ACID模型拥有高一致性和可靠性,丧失可用性。ACID,即原子性(Atomicity)、一致性(Consistency)、隔离性 (Isolation)、持久性(Durability)。其中的一致性强调事务完成时,数据库处于一致的状态。对于很多应用来说,一致性要求可以降低, 而可用性(Availability)的要求则更为明显。从而产生了弱一致性的理论BASE。 BASE模型反ACID模型,完全不同ACID模型,牺牲高一致性,获得可用性或可靠性。它仅需要保证系统基本可用,支持分区失败,允许状态在一定时间内 不同步,保证数据达到最终一致性即可。BASE思想主要强调基本的可用性,如果你需要高可用性,也就是纯粹的高性能,那么就要以一致性或容错性为牺 牲,BASE思想的方案在性能上还是有潜力可挖的。

4、I/O五分钟法则
1987年,Jim Gray 与 Gianfranco Putzolu 发表了"五分钟法则"的观点,简而言之,如果一条记录频繁被访问,就应该放到内存里,否则的话就应该待在硬盘上按需要再访问。这个临界点就是五分钟。看上 去像一条经验性的法则,实际上五分钟的评估标准是根据投入成本判断的,根据当时的硬件发展水准,在内存中保持1KB的数据成本相当于硬盘中存储400秒的 开销(接近五分钟)。这个法则在 1997 年左右的时候进行过一次回顾,证实了五分钟法则依然有效(硬盘、内存实际上没有质的飞跃),而这次的回顾则是针对 SSD 这个"新的旧硬件"可能带来的影响。


随着闪存时代的来临,五分钟法则一分为二:是把 SSD 当成较慢的内存(extended buffer pool )使用还是当成较快的硬盘(extended disk)使用。小内存页在内存和闪存之间的移动对比大内存页在闪存和磁盘之间的移动。在这个法则首次提出的 20 年之后,在闪存时代,5 分钟法则依然有效,只不过适合更大的内存页(适合 64KB 的页,这个页大小的变化恰恰体现了计算机硬件工艺的发展,以及带宽、延时)。
根据数据结构和数据特点的不同,对于文件系统来说, 操作系统倾向于将 SSD 当作瞬时内存(cache)来使用。而对于数据库,倾向于将 SSD 当作一致性存储来用。

5、Amdahl定律和Gustafson定律
这里我们以S(n)表示n核系统对具体程序的加速比,K表示串行部分计算时间比例。
Amdahl 定律的加速比:S(n) = 使用1个处理器的串行计算时间 / 使用n个处理器的并行计算时间,S(n) = 1/(K+(1-K)/n) = n/(1+(n-1)K)
Gustafson定律的加速比:S(n) = 使用n个处理器的并行计算量 / 使用1个处理器的串行计算量,S(n) = K+(1-K)n
通俗的讲,Amdahl定律将工作量看作1,有n核也只能分担1-K的工作量;而Gustafson定律则将单核工作量看作1,有n核就可以增加n(1-K)的工作量。这里没有考虑引进分布式带来的开销,如网络和加锁。从性能价格比的角度看,并不是越分布越好。

6、摩尔定律
摩尔定律是由英特尔(Intel)创始人之一戈登·摩尔(Gordon Moore)提出来的。其内容为:集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍,当价格不变时;或者说,每一美元所能买 到的电脑性能,将每隔18个月翻两倍以上。这一定律揭示了信息技术进步的速度。"Tape is dead, disk is tape, flash is disk, RAM locality is king." Jim Gray - 2006. 从系统Scale-up的角度看,花费大量的时间和精力来提高系统性能,如Cache,数据预测与预取,数据局部性,并发性等,可能还不如扩充内存量、使 用SSD替换传统磁盘来得直接和划算。计算机硬件的更新速度越来越快,成本也越为越低。作为一名系统架构师,应该充分考虑摩尔定律的影响,使用更经济、合 理和简单的方法来实现系统性能目标。

7、推荐阅读
Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services: http://lpd.epfl.ch/sgilbert/pubs/BrewersConjecture-SigAct.pdf
Brewer's CAP Theorem: http://www.julianbrowne.com/article/viewer/brewers-cap-theorem
Brewers CAP theorem on distributed systems: http://www.royans.net/arch/brewers-cap-theorem-on-distributed-systems  
Towards Robust Distributed Systems:http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf
NoSQL数据库笔谈:http://sebug.net/paper/databases/nosql/Nosql.html#CAP_7730791447684169_231516710
Visual Guide to NoSQL Systems:http://blog.nahurst.com/visual-guide-to-nosql-systems/?c=1

分享到:
评论

相关推荐

    北大分布式系统概念与设计大作业

    对于PageRank,这可能意味着网页链接矩阵需要被分布式存储和处理。 3. **通信机制**:节点间需要交换信息以更新PageRank值。这可能涉及使用Gossip协议、RPC(远程过程调用)或者消息队列等通信方式。 4. **容错性*...

    分布式数据库系统概述

    #### 五、分布式数据库系统的设计 - **设计目标**:除了传统数据库设计目标外,还特别强调了本地性或近地性、数据冗余控制、工作负荷分布等方面的需求。 - **分片原则**: - 完整性条件:分片后各部分必须满足数据...

    《分布式数据库系统及应用》知识

    #### 第二章 分布式数据库系统设计 **1. 分布式数据库的设计目标** - **本地性或近地性**:减少通信次数和通信量,采用90/10准则进行分片和分布方案的选择。 - **控制数据适当冗余**:提高系统的可靠性和可用性,...

    分布式数据库系统及其应用课件

    分布式数据库是指数据在多个地理位置分散的计算机节点上存储和管理的数据库系统,它结合了多台计算机的处理能力和存储资源,以实现更大规模的数据管理和高效的数据处理。这种系统的关键优势在于高可用性、可扩展性和...

    大型分布式网站架构 设计与完美实践

    本文将深入探讨大型分布式网站架构的设计原则与最佳实践,帮助读者更好地理解和应用这一复杂但至关重要的技术领域。 #### 一、分布式系统概述 分布式系统是由多台计算机通过网络连接而成的一个集合体,在这个集合...

    浅谈分布式数据库的数据存储.pdf

    本文从分布式数据库的存储原理、设计原则及传统数据库面临的问题等角度进行探讨。 分布式数据库系统的概念,是在集中式数据库系统基础上发展起来的。集中式数据库虽然能够集中管理数据,但随着数据量的日益增长和...

    操作系统设计与实现 第3版 上.pdf

    根据提供的文件标题“操作系统设计与实现 第3版 上.pdf”以及描述信息,我们可以推断这份文档主要涵盖了操作系统设计与实现的基础理论及实践方法。虽然提供的部分内容仅包含了下载链接,并未涉及实际的知识点介绍,...

    Hadoop分布式系统基础架构 v3.3.6.zip

    HDFS是Hadoop的数据存储系统,它将大型数据集分割成块并分布在多台服务器上,提供了高容错性和高可用性。MapReduce则是Hadoop的数据处理模型,它通过将复杂计算任务分解为“映射”和“化简”两个阶段来实现分布式...

    分布式数据库——海量数据的最优选择.pdf

    在分布式数据库系统中,数据分片和分配的设计原则至关重要,它们会直接影响到系统的效率和性能。合理的数据分片可以改善数据查询和事务处理的效率,而有效的数据分配策略则可以优化数据的存储和访问。 综上所述,...

    分布式光伏发电站集中监控系统 (2).pdf

    整体而言,分布式光伏发电站集中监控系统的设计和功能实现,旨在提升分布式光伏发电站的运行管理效率,降低生产运行和设备维护成本,确保电站运行的稳定性和可靠性,并实现与调度通信中心的信息交换。该系统的设计和...

    电子商务系统设计—应用系统设计.pptx

    在电子商务系统设计中,应用系统设计是一个至关重要的环节,它涉及到如何将逻辑模型转化为实际运行的物理模型。应用系统设计通常分为两个主要阶段:总体设计和详细设计。 **总体设计**是构建应用系统的宏观框架,这...

    分布式数据库课件与习题

    分布式数据库是现代大数据处理和高可用性系统中的关键组件,它允许数据跨多个物理位置进行分散存储和管理。本课件与习题集合主要涵盖了分布式数据库的基础理论、设计原则以及实际应用,旨在帮助学习者深入理解和掌握...

    关于分布式多空间数据库系统的集成技术的研究.pdf

    这一原则有助于简化系统设计,提高模块间独立性。 3. 系统集成的五个层次: - 数据库的基本概念:涉及数据库的定义、结构、理论基础等。 - 系统结构:描述系统整体的架构及其各个组件如何协同工作。 - 关键技术:...

    分布式数据库管理系统

    在给定的描述中,提到了一个具体的分布式数据库系统架构,包括一个主服务器(LookupServer)、若干个DatabaseServers以及客户端(Clients),并且这些组件之间通过Java的非阻塞I/O(java.nio)进行通信。下面将详细...

    基于聚类技术的分布式入侵检测模型CDIDS的设计.pdf

    在基于聚类技术的分布式入侵检测模型CDIDS的设计中,该模型遵循若干设计原则。首先,CDIDS采用基于Agent的分布式检测系统,把每个主机代理设计为独立检测和响应的单元,并向中央控制模块发送入侵行为特征。其次,...

    网络硬盘管理系统设计.docx

    - **分布式存储技术**:利用多台服务器分散存储数据,提高存储效率和数据安全性。 - **冗余备份策略**:通过多重备份机制来减少数据丢失的风险。 #### 2. 安全管理 - **加密技术**:采用先进的加密算法保护传输过程...

    传感器网络分布式事件触发多目标估计.pdf

    在分布式系统中,信息的处理和存储通常被分布在多个节点上,这样的设计可以提高系统的容错性、可扩展性和性能。 分布式系统在无线传感器网络中的应用尤为突出。无线传感器网络(WSN)是由大量的传感器节点组成的...

    基于java在线收银系统设计与实现.docx

    《基于Java在线收银系统设计与实现》 一、引言 随着信息技术的快速发展,线上购物已成为现代生活的重要组成部分,而在线收银系统的构建对于提升商业运营效率具有至关重要的作用。基于Java技术的在线收银系统,利用...

    数据仓库~系统设计说明文书.doc

    数据仓库系统设计说明书 引言 数据仓库是一个用于支持企业决策过程的集成化、非易失性的信息存储系统。此文档旨在详细阐述设计一个高效、可靠的数据仓库系统的过程,包括其目的、背景、技术选型以及各个组成部分的...

    分布式面试必会(2020最新版).pdf

    异常处理原则是指在系统设计时,需要考虑到各种可能出现的异常情况,并制定相应的处理策略。 副本是一种分布式系统解决数据丢失异常的方法,在不同的节点上持久化同一份数据,当出现某一个节点的存储的数据丢失时,...

Global site tag (gtag.js) - Google Analytics