分布式系统知识总结

分布式协调与同步

  1. 分布式互斥的实现方案:
    1. 集中算法, 也叫中央处理, 容易出现单点故障,
    2. 分布式算法, 算法可用性比较低, 容易产生通信风暴, 适合小的,变动少的架构, 比如hadoop的htfs
    3. 令牌环算法, 轮值, 用一个令牌实现, 有令牌的程序有权访问资源, 结束访问后传递令牌
  2. 分布式事务:两阶段提交, 三阶段提交
  3. 分布式锁:msyql, redis(setnx命令),zookeeper(有序的临时节点)
  4. 分布式结构分两种, 集中式和非集中式, 集中式比如k8s, master负责api, 调度,etcd存储worker信息, 而任务全部由work节点负责. 非集中式的比如redis cluster, zookeeper等, 每一个节点都是平等的, 投票选举主节点, 投票方式

分布式资源管理和负载调度

  1. 单层调度: 任务和资源一层调度, 比如Brog的调度有可行性分析和评分算法, 评分算法有最佳匹配(节点任务尽量满, 空出机器执行更大的任务), 和最差匹配(往不通的机器塞任务)
  2. 两层调度, 第一层调度资源, 第二层将资源与任务匹配, 比如Apache Mesos 和 Hadoop YARN,
    Mesos负责收集节点的资源上报给框架, 框架进行任务和资源的匹配,下发下去
    有两种资源调度算法: 最大最小公平算法, 主导资源公平算法
  3. 单层调度容易出点单点故障, 可扩展性低, 而二层调度呢, 第二层只能获取部分的资源信息, 无法获取全局的资源信息, 解决办法就是

分布式通信

  1. rpc远程调用, 涉及到tcp封装解封, 还有信息的序列化与反序列化
  2. 还要一种通信是发布订阅模式, 一条消息可以被多个消费者消费

分布式存储

  1. 哈希, 一致性哈希, 带负载的一致性哈希, 带虚拟节点的一致性哈希: 虚拟节点一致性哈希可以解决异构性问题
  2. 流量控制: 消息队列,漏桶策略和令牌桶策略。
    1. 漏桶策略适合场景:漏桶策略适用于间隔性突发流量且流量不用即时处理的场景
    2. 令牌桶策略:适用于有突发特性的流量,且流量需要即时处理的场景。
  3. 常见的故障检测方法是心跳机制

设计一个分布式系统

  1. 功能性需求, 谁使用, 怎么用
  2. 非功能性需求, qps, 每秒写入数, 每秒读取数, 数据同步延迟, 高可用
  3. 写入路径, 读取路径设计
  4. 技术选型

消息队列

  1. 术语叫消费偏移, 头指针减去尾指针就是消息数

限流的一些方法

  • 常用的有令牌法, 漏桶法, 固定窗口法, 滑动窗口法

你可能感兴趣的:(分布式系统知识总结)