《极客时间教程 - 分布式技术原理与算法解析》笔记
2023/6/7大约 4 分钟
《极客时间教程 - 分布式技术原理与算法解析》笔记
开篇词丨四纵四横,带你透彻理解分布式技术
分布式缘何而起:从单兵,到游击队,到集团军
分布式系统的指标:啥是分布式的三围
分布式互斥:有你没我,有我没你
分布式选举:国不可一日无君
分布式共识:存异求同
分布式事务:Allornothing
分布式锁:关键重地,非请勿入
答疑篇:分布式技术是如何引爆人工智能的?
分布式体系结构之集中式结构:一人在上,万人在下
分布式体系结构之非集中式结构:众生平等
分布式调度架构之单体调度:物质文明、精神文明一手抓
单体调度:集群中只有一个调度节点,拥有全局资源视图和任务,统一管理资源和任务匹配。
- 特点:容易实现全局约束和调度策略
- 代表:K8S、Borg
分布式调度架构之两层调度:物质文明、精神文明两手抓
中央调度器负责宏观资源分配,第二层调度器负责任务与资源匹配(可有多个,支持不同任务类型)。
- 特点:解决单点瓶颈,提升调度效率
- 代表:YARN、Mesos
分布式调度架构之共享状态调度:物质文明、精神文明多手协商抓
将单体调度器分解为多个调度器,每个都有全局资源状态信息。
分布式通信之远程调用:我是你的千里眼
- LPC(本地过程调用):同一机器上进程间通信
- RPC(远程过程调用):不同机器间进程通信,像访问本地服务一样调用远程服务
分布式通信之发布订阅:送货上门
分布式通信之消息队列:货物自取
CAP 理论:这顶帽子我不想要
分布式系统中分区容错性必不可少,实际在 C 和 A 之间权衡:
- CP:等待同步完成,期间不可用
- AP:允许读取所有节点,数据可能不一致
分布式数据存储系统之三要素:顾客、导购与货架
数据特征:结构化 / 半结构化 / 非结构化。核心操作:分区和复制。
数据分布方式之哈希与一致性哈希:"掐指一算"与"掐指两算"的事
分布式数据存储选型考量:
- 数据均匀:存储和访问尽量均衡
- 数据稳定:扩缩容时不出现大范围数据迁移
- 节点异构性:根据硬件配置均衡数据承载
分布式数据复制技术:分身有术
- 同步复制(CP):主节点同步所有从节点后才提交
- 异步复制(AP):主节点直接提交,从节点异步同步
- 半同步复制:同步部分从节点后提交(折中方案)
很多分布式存储支持通过配置切换复制策略。
分布式数据之缓存技术:"身手钥钱"随身带
分布式高可靠之负载均衡:不患寡,而患不均
负载均衡:将请求均衡分配到多个服务器/节点。
常见策略:
- 随机:调用量越大越均衡,适合硬件相同的场景
- 轮询:请求完全均匀分发
- 最小活跃数:根据当前连接数动态分配
- 哈希:特定用户总是请求到同一服务器(会话粘滞)
- 一致性哈希:相同请求尽可能落到同一服务器,节点变化影响小
分布式高可靠之流量控制:大禹治水,在疏不在堵
分布式高可用之故障隔离:当断不断,反受其乱
分布式高可用之故障恢复:知错能改,善莫大焉
答疑篇:如何判断并解决网络分区问题?
知识串联:以购买火车票的流程串联分布式核心技术
搭建一个分布式实验环境:纸上得来终觉浅,绝知此事要躬行
特别放送丨那些你不能错过的分布式系统论文
分布式理论基础
- Time, Clocks, and the Ordering of Events in a Distributed System
- The Byzantine Generals Problem
- Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services
分布式一致性算法
- Paxos Made Simple / Practical / Live
- Raft: In Search of an Understandable Consensus Algorithm
- ZooKeeper: Wait-Free Coordination for Internet-Scale Systems
分布式数据结构
- Chord、Pastry、Kademlia(P2P 查找服务)
- Ceph(分布式文件系统)
- The Log-Structured-Merge-Tree、HBase: A NoSQL Database
- Tango: Distributed Data Structure over a Shared Log
分布式系统实战
- GFS、BigTable、Chubby、Spanner(Google 系列)
- Dynamo(Amazon KV 存储)、Cassandra
- Kafka、Aurora
- Borg(集群管理)、Dapper(链路追踪)
- Storm、S4、Flink(流计算)