认识分布式| 青训营笔记

67 阅读4分钟

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

什么是分布式

分布式系统是计算机程序的集合,这些程序利用跨多个独立计算结点的计算资源来实现共同的目标。可以分为分布式计算,分布式存储,分布式数据等
  • 优势
    • 去中心化
    • 低成本
    • 弹性
    • 资源共享
    • 可靠性高
  • 挑战
    • 普遍的结点故障
    • 不可靠的网络
    • 异构的机器与硬件环境
    • 安全

why how what

使用者(工程师)视角

  • why
    • 数据爆炸,对存储和计算有大规模运用的述求
    • 成本低,构建在廉价服务器上
  • how
    • 分布式框架
    • 成熟的分布式系统
  • what
    • 理清规模,负载,一致性要求等
    • 明确稳定性要求,制定技术方案

学习者视角

  • why
    • 后端开发必备技能
    • 帮助理解后台服务器之间协作的机理
  • how
    • 掌握分布式理论
    • 了解一致性协议
  • what
    • 把要点深入展开,针对难点搜索互联网资料进行学习
    • 将所学知识用于实践

常见的分布式系统

  • 分布式存储
  • 分布式数据库
  • 分布式计算

拜占庭将军问题

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

结论:两支军队理论上永远无法达成共识

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

共识和一致性

  • 最终一致性
  • 线性一致性

理论基础

CAP理论

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

四大特性(ACID理论)

事务是数据库中非常重要的概念

  • 原子性:事务是不可分割的最小操作单元,要么全部成功,要么全部失败
  • 一致性:事务完成时,必须使所有的数据都保持一致状态
  • 隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境运行
  • 持久性:事务一旦提交或者回滚,对数据库中数据的改变就是永久的

BASE理论

  • BASE理论是针对AP系统而言的,其来源于对大型互联网分布式实践的总结
    • Basically Available(基本可用):假设系统,出现了不可预知的故障,但还是能用
    • Soft state(软状态):允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性
    • Eventually consistent(最终一致性):数据最终一定能够达到一致的状态

共识协议

Quorum NWR模型

  • 三要素:
    • N:在分布式存储系统中,有多少份备份数据
    • W:代表一次成功的更新操作要求至少有w份数据写入成功
    • R: 代表一次成功的读数据操作要求至少有R份数据成功读取
    • 为了保证强一致性,需要保证 W+R>N
  • Quorum NWR模型将CAP的选择交给用户,是一种简化版的一致性模型
  • 引起的并发更新问题
    • 如果允许数据被覆盖,则并发更新容易引起一致性问题

RAFT协议

  • 概述
    • Raft协议是一种分布式一致性算法(共识算法),即使出现部分节点故障,网络延时等情况,也不影响各节点,进而提高系统的整体可用性。Raft是使用较为广泛的分布式协议。

Paxos协议

  • 优劣势
    • 优势:写入并发性能高,所有节点都能写
    • 劣势:没有一个节点有完整的最新的数据,恢复流程复杂,需要同步历史记录