分布式知识的总结(V1.0) [转]

2019-03-02 23:41|来源: 网路

1:分布式理论

 

CAP(Eric Brewer)
    Web服务无法同时满足以下3个属性

  • Consistency(一致性),数据一致更新,所有数据变动都是同步的

  • Availability(可用性),每个操作都必须以可预期的响应结束

  • Partition tolerance(分区容错性),即使出现单个组件无法可用,操作依然可以完成

    在任何数据库设计中,一个Web应用至多只能同时支持上面的两个属性,不可能三者兼顾。对于分布式系统来说,分区容错是基本要求,所以必然要放弃一致性。对于大型网站来说, 分区容错和可用性的要求更高,所以一般都会选择适当放弃一致性。对应CAP理论,NoSQL追求的是AP,而传统数据库追求的是CA,这也可以解释为什么 传统数据库的扩展能力有限的原因。

 

ACID解决方案
    ACID数据库事务极大地简化了应用开发人员的工作.正如其缩写标识所示,ACID事务提供以下几种保证:

  • Atomicity(原子性),事务中的所有操作,要么全部成功,要么全部不做.

  • Consistency(一致性)在事务开始与结束时,数据库处于一致状态.

  • Isolation(隔离性) 事务如同只有这一个操作在被数据库所执行一样.

  • Durability(持久性). 在事务结束时,此操作将不可逆转.(也就是只要事务提交,系统将保证数据不会丢失,即使出现系统Crash,译者补充).

    数据库厂商在很久以前就认识到数据库分区的必要性,并引入了一种称为2PC(两阶段提交)的技术来提供跨越多个数据库实例的ACID保证

 

BASE解决方案

  • Basically Available(基本可用)

  • Soft-state( 软状态/柔性事务)

  • Eventual Consistency(最终一致性)

    BASE模型是传统ACID模型的反面,不同与ACID,BASE强调牺牲高一致性,从而获得可用性,数据允许在一段时间内的不一致,只要保证最终一致就可以了。

 

2:分布式系统基础组件

RPC

message queue

failure detection

  • “The φ Accrual Failure Detector”

分布式系统中的一致性

  • "Principles of Computer Systems Design" 第十章(可以到MIT 网站下载)

  • 虚拟同步(virtual synchrony)系统

    • K.P. Birman 的两篇论文,讲述虚拟同步的概念的实现方法
      • Reliable Communication in the Presence of Failures
      • Exploiting virtual synchrony in distributed systems
    • 扩展的虚拟同步(Extended Virtual Synchrony),也称为 TOTEM 协议
      • Y. Amir 等,"The Totem Single Ring Ordering and Membership Protocol"
      • L.E. Moser 等,"Extended Virtual Synchrony"
    • Corosync 是 TOTEM 协议的一个开源实现,当前 RedHat 等提供的企业集群使用它作为一致性协议。
  • 采用类似 Paxos 算法的系统

    • Leslie Lamport, "Paxos Made Simple"
    • "Paxos Made Live - An Engineering Perspective" Google 实现 Paxos 算法时的工程考虑。
    • Zookeeper,两篇介绍 ZooKeeper 的论文
      • ZooKeeper: Wait-free coordination for Internet-scale systems
      • A simple totally ordered broadcast protocol
    • Google 的 Chubby,"The Chubby lock service for loosely-coupled distributed systems"
  • 最终一致性

    • 最终一致性概念
    • Cassandra 中最终一致性的应用
      • 基于 Gossip 协议的组成员管理,论文 "Efficient Reconciliation and Flow Control for Anti-Entropy Protocols"
      • 基于 Merkle tree 的数据同步算法:“Informed content delivery across adaptive overlay networks”
  • CAP 理论BASE 理论 http://queue.acm.org/detail.cfm?id=1394128

3:分布式数据库和分布式文件系统

Google File System

MooseFS

Ceph

Dynamo

  • 论文 "Dynamo: Amazon’s Highly Available Key-value Store"

Big Table

Cassandra

Parallel Database

  • Yahoo! PNUTS 论文 "PNUTS: Yahoo!’s Hosted Data Serving Platform"

  • GreenPlum 并行数据库,私有软件,非开源

  • HadoopDB,论文 "HadoopDB: An Architectural Hybrid of MapReduce and DBMS Technologies for Analytical Workloads"

分布式数据库对比

论文 "Benchmarking Cloud Serving Systems with YCSB"

4:大规模数据处理

  • MapReduce

  • Hive, Pigsearch engine (Lucene)

    • Hive 论文 "Hive - A Petabyte Scale Data Warehouse Using Hadoop"
    • Pig 论文 "Pig Latin: A Not-So-Foreign Language for Data Processing"

5:关系数据库

  • 数据库设计与实现基本理论

    • Book "Database System Implementation"
  • transaction processing

    • Book "Transaction Processing: Concepts and Techniques"
    • Book "Principles of Transaction Processing, Second Edition"
  • 性能优化SQLite 代码分析

    • Book "High Performance MySQL"
    • Book "Physical Database Design"
  • PostgreSQL

6:分布式系统理论研究

    这几本书里面,"distributed algorithms" 比较偏重纯理论,与实际技术相关性不大,阅读优先级较低;"distributed systems: principles and paradigms" 讲了不少实际系统,但是讲的不是很深入(也很难讲深入),初学者可以先浏览一遍;"Principles of computer systems design: an introduction" 是一本新书,对系统设计的很多思想讲的很透彻清晰,优先级较高。

  • Lynch's book "distributed algorithms"

  • Tanenbaum's book "distributed systems: principles and paradigms"

  • "Principles of computer systems design: an introduction"

  • CAP theorem paper, "Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services"

 

7:值得读的博客


 

 

转自:http://blogread.cn/it/article.php?id=5814&f=sinat


转自:http://www.cnblogs.com/viviancc/archive/2012/09/29/2708414

相关问答

更多
  • wap2.0怎么转1.0?[2024-03-01]

    正好这两天我用jython在做一个维护的小工具,也是用wap 2.0.你搞过web开发吗,看这意思是之前也没做过,如果你做过这个很简单,wap 2.0使用xhtml,就跟html基本上一样,不过客户端不能使用脚本语言,另外只有很少的部分不通,比如form之间的表单元素必须放在一个

    之间。推荐你看的电子书是:XHTML 移动概要 (XHTML MP)WAP 2.0 教程.chm 这方面的例子很少,但是你可以直接看java的web开发,没有什么区别,只不过就是输出xhtml。jsp,servlet都 ...
  • 现在的软件开发都讲究个"层"的意思. 分布式开发将一个系统分为三个层次:客户端应用程序,应用程序服务器,后台数据库。客户端提出请求,应用服务器接受请求并处理然后返回数据给客户端,后台数据库当然是提供数据。多半是用于WEB开发.这样的分层开发有很多 好处..我就不多说了...
  • 这个比较复杂,这个属于架构方面的,大概是指客户端和服务器端的关系。以前的程序的服务端比较集中在一块,分布式的服务器端可能分布在不同的地方,如云端等等。。。
  • 一、DFS为何物? DFS 即微软分布式文件系统的简称,系统管理员可以利用它来有效的整合网络资源,并把这些资源以单一的层次结构呈现给网络用户。管理员利用它可以把资源发布成一 个树形结构,这样大大简化了为用户进行资源配置和对资源管理的工作量。我们可以在不同的机器上调整和移动文件,这不会影响到用户的访问。 二、为什么要使用DES? 1、DFS使用了现有网络中的Share权限,管理员不必进行新的配置 2、通过一个DFS树形结构用户就可以访问多个网络资源,而不用再把远程驱动器映射到本地共享资源中。 3、DFS可以配 ...
  • 分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据库系统中,用户感觉不到数据是分布的,即用户不须知道关系是否分割、有无复本、数据存于哪个站点以及事务在哪个站点上执行等。 故名思义,分布式 ...
  • 尝试使用两把钥匙 然后改变
    在卡桑德拉存储日志的选择是有争议的; 因为对这些数据的分析变得困难但可行。 ELK(Elastic-Logstash-Kibana)或Splunk由于其原生的“文本”搜索支持和仪表板而成为日志分析的更受欢迎的选择。 话虽如此,让我们看看手中的问题 1)我正在使用我的Web应用程序将数据写入Cassandra。 我想到的这些建议是: 写入是否异步完成? 推荐的。 这些写入过程中使用的一致性级别是多少? 一致性越高,Web应用程序将以C *等待的时间越长(假定同步写入)越慢。 记住C *仍然可以有RF = 3, ...
  • 这表明您的JVM中存在错误。 我建议你尝试Java 6更新23,或者你正在使用的破坏内存的JNI库中的错误。 V + 59表示此方法的已编译本机代码中的位置,其中发生了非法访问(并且旁边没用) This indicates you have a bug in your JVM. I suggest you try Java 6 update 23, or a bug in a JNI library you are using which is corrupting the memory. The V+59 ...
  • 我建议你看看Jon Skeet对HiLo算法的描述: 什么是Hi / Lo算法? 有关mongo的具体用例,请参阅http://dllhell.net/2010/07/23/on-sequences-with-mongodb-and-norm/ I'd suggest you have a look at Jon Skeet's description of the HiLo algorithm here: What's the Hi/Lo algorithm? For the specific use c ...
  • 首先从身份模板开始,该模板将处理所有现有节点的复制 接下来,为了使列更容易查找,请考虑使用xsl:key ...