Close

什么是分布式系统?

分布式系统和微服务架构的概述

Kev Zettler 头像
Kev Zettler

全栈 Web 开发人员


分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。分布式系统旨在消除系统的瓶颈或中心故障点。

您将应用构建成一个可部署的单元,尽管运行良好,但规模和复杂性随着时间推移会加剧,这会导致什么情况?它往往会变得更难维护,而且开发速度会变慢,故障风险也会上升。在此情况下,进化之路是让整体架构演变为分布式系统,通常则是采用微服务架构

什么是分布式系统?


分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。它也被称为分布式计算或分布式数据库,并依靠不同的节点通过公共网络进行通信和同步。这些节点通常代表独立的物理硬件设备,但也可代表单独的软件进程或其他递归封装的系统。分布式系统旨在消除系统的瓶颈或中心故障点。

分布式计算系统具有如下特点:

资源共享 — 分布式系统可以共享硬件、软件或数据

并行处理 — 多台机器可以同时处理同一功能

支持扩展 — 当扩充到其他计算机时,计算和处理能力可以按需进行扩展

错误检测 — 可以更轻松地检测故障

公开透明 — 节点可以访问系统中的其他节点并与之通信

代码库图标
相关资料

Microservices vs. monolithic architecture

三环图标
查看解决方案

使用 Compass 来管理组件

集中式系统与分布式系统有何区别?


集中式与分布式比较图像

所谓集中式计算系统,是指所有计算都由位于同一位置的单台计算机来执行。集中式和分布式系统的主要区别在于系统节点之间的通信模式。集中式系统的状态控制在中央节点内,客户端以定制方式访问此节点。集中式系统的各个节点都要访问此中央节点,因此可能会导致网络拥塞和速度缓慢。集中式系统存在单点故障,而分布式系统则没有单点故障。

分布式系统是否与微服务相同?


微服务架构是一种分布式系统,因为它会将应用分解为单独的组件或“服务”。例如,微服务架构可能具有与业务功能(支付、用户、产品等)相对应的服务,其中各个对应组件负责相关职责的业务逻辑。因此,系统拥有服务的多个冗余副本,服务便不会出现集中故障点。

什么是分布式跟踪?


分布式跟踪是一种用于分析或监控分布式系统中执行的请求结果的方法。监控分布式系统可能颇具挑战性,因为每个节点各自有一组独立的日志和指标。要准确观察分布式系统,需要将这些单独的节点指标汇总到一个整体视图中。

对分布式系统的请求通常不会访问系统内的完整节点集,而是访问一部分节点或节点的一条路径。分布式跟踪可以明确分布式系统中经常访问的路径,并允许团队分析和监控这些路径。分布式跟踪安装在系统的各个节点中,之后团队便可通过查询系统来获取有关节点运行状况和请求性能的信息。

分布式系统的优缺点和风险


分布式系统通常有助于提升系统的可靠性和性能。消除中心故障点和瓶颈,从而提高可靠性。分布式系统的节点提供冗余能力,如有任何节点出现故障,其他节点会准备好接管和替换故障节点。由于节点能够轻松地进行水平和垂直扩展,因此性能可以得到提升。如果系统的负载过大,可以添加额外节点来帮助消化负载。也可以通过提高单个节点的容量来应对大量负载。

但是,对这些好处做出权衡取舍可能导致“开发蔓延”,系统会变得过于复杂,维护也将更具挑战性。随着系统越来越复杂,团队可能难以有效地组织、管理和改进这些系统。其中的部分原因可能在于:需要了解不同组件之间的关系,或者由谁来负责特定的软件组件。这样一来,便很难搞清如何对组件进行更改,最大限度改善运行状况并避免对依赖组件和客户造成负面影响。当系统包含多个存储库时,可能需要诸如 Atlassian Compass 等专用工具来管理和组织分布式系统的代码。

分布式系统的架构


分布式系统有众多类型。以下是最常见的几种:

客户端-服务器

客户端-服务器架构将主要职责一分为二。客户端负责用户界面呈现,并通过网络与服务器连接。服务器则负责处理业务逻辑和状态管理。如果服务器没有冗余功能,客户端-服务器架构很容易退化为集中式架构。在真正的分布式客户端-服务器设置中,有多个服务器节点来分散客户端连接。大多数现代客户端-服务器架构都是多个客户端连接到服务器上封装的分布式系统。

多层

多层架构在客户端-服务器架构的基础上进行了扩展。多层架构中的服务器进一步分解为更细化的节点,以便将数据处理和数据管理等其他后端服务器职责分离出来。这些额外节点被用于异步处理长时间运行的作业,并释放其余的后端节点,使其专注于响应客户端请求并与数据存储交互。

点对点

在点对点分布式系统中,每个节点都包含应用的完整实例。界面呈现与数据处理不存在节点分离。节点包含呈现层和数据处理层。对等节点可能包含整个系统的全部状态数据。

点对点系统具有极高的冗余能力。当点对点节点初始化并联机时,它会发现并连接其他对等节点,并将其本地状态与更大系统的状态同步。此特性意味着,点对点系统中一个节点发生故障不会导致任何其他节点中断。这也表示点对点系统将持续存在。

面向服务的体系结构

面向服务的体系结构 (SOA) 是微服务的前身。SOA 与微服务的主要区别在于节点作用域,即微服务节点在功能层面上存在的范围。在微服务中,一个节点封装被用来处理特定功能集的业务逻辑,例如支付处理。微服务包含多个迥然不同的业务逻辑节点,这些节点会与独立的数据库节点进行交互。相比之下,SOA 节点会封装整个应用或企业部门。SOA 节点的服务边界通常包括节点内的整个数据库系统。

鉴于其优势,微服务已成为 SOA 的一种更受欢迎的替代方案。微服务更具组合性,团队可以重复利用小型服务节点提供的功能。微服务更加稳健,可实现更灵活的的垂直和水平扩展。

分布式系统用例

许多现代应用都采用分布式系统。高流量 Web 和移动应用属于分布式系统。用户以客户端-服务器的方式进行连接。其中,客户端为 Web 浏览器或移动应用,服务器则是其自身的分布式系统。现代 Web 服务器遵循一种多层系统模式。使用负载平衡器将请求委派给众多服务器逻辑节点,这些界节点通过消息队列系统进行通信。

Kubernetes 是分布式系统的常用工具,因为它可通过一组容器来创建分布式系统。容器生成分布式系统的节点,然后 Kubernetes 会编排各节点之间的网络通信,并处理系统中节点的动态水平扩展和垂直扩展。

分布式系统的另一个例子是比特币和以太坊等加密货币,它们都是点对点分布式系统。加密货币网络中的每个节点都是货币账本完整记录的独立副本。当货币节点上线时,它会通过连接其他节点并下载账本的完整副本来进行引导。此外,加密货币具有客户端或“钱包”,它们通过 JSON RPC 协议连接到账本节点。

总之......


分布式系统在大多数现代软件体验中得到广泛采用。社交媒体应用、视频流媒体服务、电子商务网站等都由分布式系统提供支持。随着时间的推移,集中式系统自然会演变为分布式系统,以应对扩展。使用微服务是构建分布式系统的一种颇受欢迎且被广泛采用的模式。

尽管分布式系统的构建和维护更加复杂,但 Atlassian Compass 解决了这一复杂问题。它是一个开发人员体验平台,可帮助您驾驭分布式架构,将有关工程产出及工程合作团队的分散信息整合到一个集中且可搜索的位置。

Kev Zettler
Kev Zettler

Kev 是领先的全栈 Web 开发人员和连续创业者,拥有十多年使用敏捷方法构建产品和团队的经验。他是 DevOps、加密货币和 VR/AR 等新兴开源技术的热情贡献者、作者和教育者。闲暇时,他会参加独立游戏开发活动。


分享这篇文章
下一个主题

推荐阅读

将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。

Devops 示意图

Compass 社区

克服障碍插图

教程:创建组件

地图插图

免费试用 Compass

注册以获取我们的 DevOps 新闻资讯

Thank you for signing up