一文看懂分布式系统的基本盘
(需求分析)分布式系统主要解决哪些问题?主要应用场景有哪些?
(实现方案)构建分布式系统的常见问题有哪些?解决这些问题的主流方案有哪些?
(技术难点)实现分布式系统的本质困难是什么?这些困难影响了那些问题?
(工业应用)工业上正在构建那些分布式系统?他们的发展情况如何?
Scalability,特别的,指 Scale Out
High Availability,特别的,指通过软件系统的设计,组合多个相对可靠性较低的设备对外提供更高的可用性
计算资源(CPU)
存储(硬盘、内存)
通信网络(网卡、交换机)
整个物理机(虚拟机)
调度(进程、线程)
隔离(时间片共享、队列、Namespace)
整个操作系统(容器)
Hybrid Decentralized:具有中心节点进行协调或索引,但是其他部分都是分布式的,例如 HDFS, BitTorrent。
Partially Centralized:不具有中心节点,但是具有 super node,例如类似于 DNS 的结构,但是每层的上一层都是选举出来的 super node。
Purely Decentralized:完全分布式,节点完全对等
Unstructured:节点不组成固定结构,类似于物理路由器,只知道附近的几个邻居节点。因此查询等操作主要依赖于 flooding 或类似于物理路由器的路由操作。
Structured:节点组成固定结构,例如 Chord(环), CAN(多维空间), Tapestry(超立方体)
Membership protocol:哪些节点是当前 Overlay network 的成员?
Naming service:本质上是名字到位置的索引
Message routing:如何将消息从一个位置投递到目标位置?
unicast
anycast
groupcast
atomic groupcast
total ordered groupcast
临界区和锁
原子性和事务
在分布式系统中不存在全局时钟
在分布式系统中通信是不可靠的(保证信息不重不漏的通信延迟是有限无界的)
不能通过时戳定序
不能通过通信(在有界的延迟内)定序
读多写少,读少写多等特殊场景下的性能优化
随机读写和顺序读写场景下,吞吐和延迟的优化
行式存储和列式存储的取舍与优化
计算和存储的比例很难事先确定
TOR 内与 POD 内网络带宽相比较不再具有压倒性的优势
精细化调度
特殊场景的调度
可插拔的灵活调度
调度的粒度变得更细(整机 →Slot→Fine Grain)
需要调度的资源类型和维度都在增长(可伸缩 / 不可伸缩,CPU/MEM/GPU/IO/……)
调度的物理机情况变得更加复杂(资源异构,亲和性,条件限制……)
考虑目标机器状态的调度(机会调度,超售……)
考虑全局策略的调度
收集日志,日志包括一台机器上最为详细的细节信息
收集 Metrics,Metrics 由于只是数因此方便做统计
做 Tracing,将一个用户请求的全过程串起来
https://zhuanlan.zhihu.com/p/34323809
https://zhuanlan.zhihu.com/p/37076900
https://zhuanlan.zhihu.com/p/35673745
https://zhuanlan.zhihu.com/p/33912913
https://zhuanlan.zhihu.com/p/35426881
https://speakerdeck.com/adriancole/observability-3-ways-logging-metrics-and-tracing