分布式系统——它们到底是什么?
分布式系统——它们到底是什么?
对于大多数技术人员来说,分布式系统一直是他们遵循的良好独立实践的缩影。与传统计算环境相比,它具有许多优势。然而,究竟什么是分布式系统?
什么?
分布式系统简单定义如下:
在系统用户看来,独立计算机的集合就像一台计算机。
它是一种计算机环境,其中各种组件分布在通过网络连接的多台计算机(或其他计算设备)上。这些设备分工并协调他们的工作,以比单个设备负责更有效地完成任务。
分布式系统有两种工作方式:
- 每台机器都朝着一个共同的目标工作,最终用户将结果视为一个统一的整体。
- 每台机器都有其最终用户,分布式系统使得共享资源或通信服务成为可能。
为什么?
因为它们可以利用其他计算设备和进程的资源,分布式系统可以提供在单个系统上难以实现或不可能实现的功能。分布式系统以单体系统无法提供的方式提供可扩展性和更高的性能。
您可以使用分布式系统进行水平扩展以处理更大的流量。您可以增长多少几乎没有上限。与单机相比,分布式系统的故障恢复能力更强。
分布式系统的特点
- 并发 — 分布式系统允许我们独立执行任务并与其他分配的任务并行执行。这些任务通过交换消息相互协调。
- 沟通和信息传递 — 没有共享内存,这使它们更有效率。
- 没有全局状态 — 没有单个进程可以知道系统当前的全局状态。
- 异质性 — 不同的设备可以一起运行。
- 容错 — 与单台机器相比,分布式系统的容错性更强。
分布式系统的挑战
分布式系统也可能有缺点,这可能会影响它们的功能。以下是分布式系统面临的一些挑战:
- 异质性 — 当程序用不同的语言编写或开发人员使用不同的实现(数据结构等)时,当计算机尝试通信时就会出现问题。因此,就简化流程达成一致并实施通用标准至关重要。此外,在考虑移动代码(可以从一台计算机传输到另一台计算机的代码)时,如果未指定可执行文件以适应两台计算机的指令和规范,我们可能会遇到一些问题。
- 分销透明度 — 由于分布式系统的复杂性,透明度可能存在问题。在这种情况下,透明度是指分布式系统隐藏其复杂性并呈现单个系统外观的能力。当我们谈论透明度时,我们必须谈论有多少透明度。因此,分发必须尽可能地对用户隐藏。
- 容错—— 失败是任何程序中的主要问题。然而,在分布式系统中,故障的后果会更加严重,因为存在如此多的进程和用户。此外,由于分布式系统的性质,会出现许多问题。可能会出现系统未做好准备的意外边缘情况,但开发人员必须考虑这些情况。然而,故障处理最重要的方面是承认并非每个故障都可以考虑。因此,实施检测、监控和修复系统故障的流程是故障处理/管理的关键组成部分。
- 可扩展性 — 如果一个程序不需要重新设计以在其工作负载增长时保持稳定性和一致性,那么它是可扩展的。因此,无论一个程序(在我们的例子中是分布式系统)有 10 个节点还是 100 个节点,它的性能都不应该改变。
- 并发 — 必须提供对资源的共享访问并且易于访问。
- 安全 — 安全性包含三个主要组成部分:可用性、完整性和机密性。同样,身份验证和授权也很关键——实体必须经过可验证的身份验证,并且必须根据权限适当地委派特权。由于分发系统处理敏感和私人数据,因此安全性尤为重要。
这就是所有的人!分布式系统可以利用其他计算设备和进程的资源,并且可以提供在单个系统上难以实现或不可能实现的功能。分布式系统以单体系统无法提供的方式提供可扩展性和更高的性能。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明