分布式系统是多个计算机系统作为一个单元有效地协同工作的计算机系统。分布式系统的示例包括用于服务网站和在线视频的内容分发网络、由多个强大的数学处理器构建的超级计算机以及许多在线系统中使用的分布式数据库。分布式系统可以比单机系统更具弹性、更强大和更快,但它们也可能需要更多的维护和仔细考虑可能出错的组织和问题。
分布式系统的优势
使用分布式系统有许多潜在的优势。最容易理解的之一是冗余和弹性。如果一家公司从一组分布式服务器而不是单个服务器为其网站提供服务,那么即使一台服务器出现物理故障,它也可能能够保持正常运行。如果数据分布在多个服务器或磁盘之间,这在现代分布式系统中很常见,即使存储设备停止工作,也可能不会丢失任何数据。
速度和内容分发
分布式系统也可以比单机系统更快。分布式数据库的优点之一是可以将查询路由到具有特定用户信息的服务器,而不是所有请求都必须转到可能过载的单个机器。
请求也可以路由到物理上关闭的服务器或通过快速网络连接到任何想要数据的人,这可能意味着分配给处理网络流量和瓶颈的时间和其他资源更少。这在用于在线媒体的内容分发网络中很常见。
缩放和并行
一旦分布式系统设置为在所涉及的服务器之间分发数据,它们也可以轻松扩展。如果它们设计得很好,它可以像添加一些新硬件并告诉网络将其添加到分布式系统中一样简单。
分布式系统也可以设计用于并行性。这在天气建模和科学计算等数学运算中很常见,其中多个强大的处理器可以划分复杂模拟的独立部分,并比串联运行它们更快地获得答案。
分布式计算挑战
分布式计算的一大挑战是程序员很难推理。在如何分发数据以确保在各种意外情况下满足弹性要求方面可能存在挑战。如果设备需要同步,可能会出现难以发现的错误,这些错误会导致它们相互等待传输数据或意外尝试同时读取或写入同一条数据,从而导致错误。
安全和隐私也可能成为分布式系统的一个问题,因为人们的数据存储在多台计算机上,有时存储在多个物理位置。对于某些任务,分布式系统也可能是过度杀伤力,使用了不必要的物理资源和工程时间。