分布式系统的挑战
故障处理(部分失败)、异步网络、时钟同步和共识协调
1. 故障处理 (全部失败 / 部分失败)通过软件来容错
1.1 节点宕机
1.2 网络分区
2. 异步网络 (本地调用和远程调用)采用超时机制
1.1 远程调用模型面临的网络排队
1.2 丢包
1.3 请求服务崩溃
响应超时: 要进行重试
3. 时钟同步 (全局时钟 和 多个时钟)
3.1 计算机中 时间的作用
3.1.1 记录事件发生的时间
3.1.2 事件之间发生的顺序
3.2 谨记 系统中各个节点的本地时钟是存在误差的,不能依赖各自的时钟对事件进行排序
3.2.1 去请求同一个时间服务器获得事件对发生时间
3.2.2 Google 在 Spanner 中使用的,通过 GPS 和原子钟实现 TrueTime API 来解决
4. 共识协同 (一言堂 和 共识) (跨机器的多线程同步问题)
4.1 选一个服务来做同步操作的管理者
4.2 管理者 肯定也要高可用 -》 同步服务的选主问题
4.2.1 Paxos 和 Raft 共识算法解决