Files
logseq/pages/分布式系统.md

2.9 KiB
Raw Permalink Blame History

  • https://www.youtube.com/watch?v=BhosKsE8up8
  • 什么是一致性
    • CAP therorem
      • 一个分布式系统,不能同时满足以下三点
        • 一致性Consistency
        • 可用性Availability
        • 分区容错性Partition Tolerence
      • CA
        • RDBMS
      • CP
        • MongoDB
        • HBase
        • Redis
      • AP
        • CouchDB
        • Cassandra
        • DynamoDB
        • Riak
    • 一致性模型
      • 弱一致性
        • 最终一致性
        • DBS
        • Gossip
  • 一致性
    • 数据不能存在单点上
    • 分布式系统对fault tolerence的一般解决方案是state machine replication
      • log通过log复制将数据存储到各个节点上
    • 今天我们讨论的应该是state machine replication的共识consensus算法
    • paxos其实是一个共识算法系统的最终一致性不仅需要达成共识还会取决于client的行为
  • 强一致性算法
    • 主从同步
      • 一个节点失败Master阻塞导致整个集群不可用保证了一致性可用性却大大降低
    • 多数派
      • 在并发环境下,无法保证系统正确性,顺序非常重要
    • Paxos
      • Basic Paxos
        • 角色
          • Client系统外部角色
          • Proposer接受Client请求向集群提出提议
          • AcceptorVoter提议投票和接收者
          • Learner提议接受者backup
        • 阶段
          • Phase 1aPrepare
            • proposer提出一个提案编号为N此N大于这个proposer之前提出提案编号请求acceptors的quorum接受
          • Phase 1bPromise
            • 如果N大于此acceptor之前接受的任何提案编号者接受否则拒绝
          • Phase 2aAccept
            • 如果达到了多数派proposer会发出accept请求此请求包含提案编号N以及提案内容
          • Phase 2bAccepted
            • 如果此acceptor在此期间没有收到任何编号大于N的提案则接受此提案内容否则忽略
          • image.png
        • 潜在问题
          • 活锁liveness
            • 两个Proposer不停提出提案之前的提案都被覆盖
            • 使用Random Timeout解决
          • 难实现
          • 效率低2轮RPC
      • Multi Paxos
        • Leader唯一的proposer所有请求都需要经过此Leader
        • 减少角色,进步一简化
      • Fast Paxos
    • Raft
      • Multi Paxos的简化版本
      • 划分为三个字问题
        • Leader Eleciton
        • Log Replication
        • Safety
      • 重定义角色:
        • Leader
        • Follower
        • Candidate
      • 一致性并不一定代表完全正确性
        • 三个结果
          • 成功
          • 失败
          • unknown
        • 5个节点3个节点失败2个节点存活
    • ZAB
      • 基本与raft一致
      • 有些名词有区别leader周期称谓epochraft中为term
      • raft心跳为leader向followerZAB则相反
  • 项目实践
    • ZooKeeper
      • 类似文件系统可以写入Key Value
    • etcd
      • 比zookeepre文档更全