每一次谷歌搜索、每一次Netflix视频播放、每一次银行转账都依赖于分布式系统,其中多台计算机协同工作,完成单台机器无法完成的任务。对于现代软件开发人员来说,理解这些系统如何处理通信、故障和协调变得至关重要。
分布式系统与其他系统最大的区别在于其允许部分故障。在单机程序中,所有组件通常会同时崩溃。而在分布式系统中,部分组件可能发生故障,而其他组件则继续运行。例如,数据库可能崩溃,但 Web 服务器仍可继续运行;或者网络连接可能中断,但两个服务都保持正常运行。
这会造成歧义。当我们发送请求但没有收到响应时,我们无法确定发生了什么。
-
请求从未送达吗?
-
服务器是否已处理该请求,但在响应前崩溃?
-
回复丢失了吗?
分布式系统中的每一个概念都旨在解决这一挑战的某个方面。
在本文中,我们将探讨分布式系统的五个基础主题:计算机如何跨网络通信、实现可靠通信的协议、远程过程调用如何抽象复杂性、处理故障的策略以及为什么时间同步会带来独特的挑战。
计算机如何通信
原文: https://blog.bytebytego.com/p/the-must-know-fundamentals-of-distributed
