分布式理论| 青训营笔记

54 阅读4分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 5 天

分布式概述

什么是分布式

分布式系统是计算机程序的集合,这些程序利用多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。

优势:

  1. 去中心化
  2. 低成本
  3. 弹性
  4. 资源共享
  5. 可靠性高

挑战:

  1. 普遍的节点故障
  2. 不可靠的网络
  3. 异构的机器与硬件环境
  4. 安全

常见的分布式系统

  • 分布式存储
    • Google File System : google分布式文件系统
    • Ceph:统一的分布式存储系统
    • Hadoop HDFS: 基于GFS架构的开源分布式文件系统
    • Zookeeper: 高可用的分布式数据管理与系统协调框架
    • 分布式数据库
  • 分布式数据库
    • Google Spanner:google可扩展的、全球分布式的数据库
    • TIDB:开源分布式关系型数据库
    • HBase:开源Nosql数据库
    • MongoDB :文档数据库
  • 分布式计算
    • Hadoop:基于MapReduce分布式计算框架
    • Spark:在Hadoop基础之上,使用内存来存储数据
    • YARN:分布式资源调度

系统模型

故障模型

  • Byzantine failure:节点可以任意篡改发送给其它节点的数据
  • Authentication detectable byzantine failure(ADB):Byzantine failure的特例;节点可以篡改数据,但不能伪造其它节点的数据
  • Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚
  • Omission failure:节点收到数据的时间无限晚,即收不到数据
  • Crash failure:在omission failure的基础上,增加了节点停止响应的假设,也即持续性地omission failure
  • Fail-stop failure:在Crash failure的基础上增加了错误可检测的假设

拜占庭将军问题

两将军问题: 两支军队的将军只能派信使穿越地方领土互相通信,以此约定进攻时间。该问题希望求解如何在两名将军派出的任何信使都可能被俘虏的情况下,就进攻时间达成共识。

结论是: 两将军问题是被证实无解的电脑通讯问题,两支军队理论上永远无法达成共识。

TCP三次握手是在两个方向确认包的序列号,增加了超时重试,是两将军问题的一个工程解。

理论基础

CAP理论

CAP描述
C(Consistence)一致性,指数据在多个副本之间能够保持一致的特性(严格的一致性)
A(Availability)可用性,指系统提供的服务必须一直处于可用状态,每次请求都能够获取到非错的响应,但是不能够保证获取的数据为最新数据
P(Network partitioning)分区容错性,分布式系统在遇到任何网络分区故障的时候,仍能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障

CAP理论往往使用于数据库领域,同样可以适用于分布式存储方向

这三者之间最多能够同时满足两个,CA、AP、CP

ACID理论

这个理论是数据库事务的四个特性:

  • 原子性(A):原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚
  • 一致性(C):一致性是指事务执行前和执行后必须处于一致性状态
  • 隔离性(I):隔离性是指当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其它事务的操作所干扰,多个并发事务之间要互相隔离
  • 持久性(D):持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统中遇到故障的情况下也不会丢失提交事务的操作

BASE理论

Base理论是对CAP中一致性和可用性权衡的结果,其来源于对大型互联网分布式实践的总结,是基于CAP定理逐步演化而来的。其核心思想是:

  • Basically Available(基本可用):假设系统出现了不可预知的故障,但还是能用,相较于正常的系统而言,响应时间上的损失或功能上的损失
  • Soft state(软状态):允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。
  • Eventually consistent(最终一致性):系统能够保证在没有其它新的更新操作的情况下,数据最终一定能够达到一致的状态,因此所有客户端对系统的数据访问最终都能获取到最新的值。

引用参考