02|新的挑战:分布式系统是银弹吗?我看未必!
该思维导图由 AI 生成,仅供参考
全部失败与部分失败
- 深入了解
- 翻译
- 解释
- 总结
分布式系统设计与原则是本文的核心内容。文章首先介绍了单体系统和分布式系统的本质差别,指出分布式系统面临的四个新问题:故障处理、异步网络、时钟同步和共识协同。在故障处理方面,分布式系统需要接受系统中每一个部分可能出现故障的情况,并通过软件来容错,构建高可用的系统。在异步网络方面,文章讨论了远程调用带来的复杂性,强调了在分布式系统设计中需要充分考虑通过网络进行远程调用导致的不确定性,并提出了解决方案。时钟同步方面,文章强调了分布式系统中各个节点的本地时钟存在误差,不能依赖各自时钟对事件进行排序,提出了解决方案。最后,文章讨论了分布式系统内部多个实例或服务之间的协同问题,指出需要达成共识来解决跨机器的多进程同步问题。整体而言,本文深入剖析了分布式系统的设计方法和原则,为读者提供了对分布式系统的全局认识和新问题的处理思路。
《深入浅出分布式技术原理》,新⼈⾸单¥59
全部留言(12)
- 最新
- 精选
- 努力努力再努力分布式系统面临的4个方面的新问题 (分布式系统就是因为要解决这些问题 才会变成现在这样) 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 共识算法解决 思考题 CAP 一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance) 1. 故障处理 AP 2. 异步网络 AP 超时机制保证可用性 3. 时钟同步 CP 保证了一致性 和 事件发生的顺序 4. 共识协调 CP 强一致性 共识算法 Raft 协议 成熟的工业算法实现,比如蚂蚁金服的 JRaft、Zookeeper 的 ZAB、Consul 的 Raft、 百度的 braft、Apache Ratis;
作者回复: 你好,努力努力再努力 对课程的总结非常棒~ 思考题部分我再补充一些: 分布式系统中的部分失败和异步网络会导致出现网络分区,所以需要在 CAP 理论中,分区容错(P)是必须选择的,同时它们也影响可用性(A),共识协调和 CAP 理论中的强一致性是等价的问题,如果我们在 CAP 理论中选择强一致性(C),那么可以通过数据的强一致性来解决时钟同步面临的事件排序的问题。
2022-01-2522 - 良记是不是可以简单理解为:分布式系统面临发挑战是“点→线→面”? “点”是每个服务自己本身的故障/异常处理,“线”是服务与服务之间的网络/时钟异常处理,“面”是整个服务体现出来的异常结果处理,包括幂等性,协同等问题。
作者回复: 👍,可以这样理解
2022-02-197 - 兔子先生老师,上一节也提到分布式系统引入新问题,这一节也是引入的新问题,为啥要分开讲呢?
作者回复: 上一篇是从分布式系统内部工作节点的协调问题的角度来讲的,让大家对分布式系统形成整体的印象,更上层一些;这一篇是从挑战的角度来讲的,主要是来讲分布式系统的难点在什么地方,更底层一些。
2022-02-0224 - 掂过碌蔗分布式系统面临故障处理(部分失败)、异步网络、时钟同步和共识协调是手段;CAP 是目的。
作者回复: 赞,不过我觉得目的是高效率高质量解决业务问题,CAP 是理论边界
2022-01-303 - 约书亚有一点需要纠正,单机时钟也可能漂移,所以不能说后面的一定比前面的单调递增
作者回复: 👍 不过这里主要是强调分布式系统多时钟无法统一的问题,对于单机时钟漂移的问题,在课程“聊一聊计算机系统的时间”有详细的讨论。
2022-04-111 - Hello,TomrrowC(一致性)A(可用性)P(分区容错) 故障处理(部分失败),会影响系统的可用性、分区容错 异步网络,会影响系统的可用性,分区容错 时钟同步,会影响系统的一致性和可用性 共识协调,会影响系统的一致性
作者回复: 👍
2022-04-011 - 愚人码头分布式面临的4个问题是必须要解决的, 是在分布式系统实现 cap 的前提和基础
作者回复: 👍
2022-03-081 - peter请教老师两个问题: Q1:退避策略是指什么? “并且对重试机制增加退避策略”,这句话中的退避策略是指什么? Q2:故障处理在微服务中(SpringCloud)是哪个组件完成的? 采用SpringCloud搭建微服务系统,在此系统中,“故障处理”是哪个组件完成的? 还是说需要应用层软件来完成?
作者回复: 你好,peter, Q1:退避策略是指在重试的时候,降低重试的时间间隔的,一般采用指数退避,比如第 1 次失败,等待 1 秒后重试,第 2 次失败,等待 3 秒,第 3 次失败,等待 9 秒。。。这个问题在后面的课程「重试幂等」等有更详细的讨论。 Q2:故障处理主要由 Netflix Hystrix 来完成,一般来说,通用故障的处理都在框架层。
2022-01-2531 - ...单机拆开为多机协作,性能上来了,不可靠性也增多了,如网络通信、机器故障,这还是需要妥协的方案做理论支撑。
作者回复: 👍
2022-04-09 - GAC·DU请问老师退避策略如何设计的?
作者回复: 你好,GAC·DU, 退避策略是指在重试的时候,降低重试的时间间隔的,一般采用指数退避,比如第 1 次失败,等待 1 秒后重试,第 2 次失败,等待 3 秒,第 3 次失败,等待 9 秒。。。这个问题在后面的课程「重试幂等」等有更详细的讨论。
2022-01-25