数据中心内成排服务器机架,多彩 LED 指示灯在昏暗的高科技机房环境中亮起

什么是分布式系统?

分布式系统详解

分布式系统由多台独立计算机与设备组成,设备间依托网络协同运转,对外呈现为一套完整统一的系统。

分布式系统将任务与数据拆分给多台并行运行的设备,原本单台大型设备需要数周完成的任务,如今数小时乃至数分钟即可收尾。系统内每一台设备,也就是节点,都配备独立 CPU、内存,多数还自带存储介质。节点之间可互发消息,协调数据共享、分配任务,并整合各自产出以达成统一目标。

分布式系统里的设备,可部署在同一数据中心的服务器机架、不同数据中心,或是全球分布的混合云环境中。无论部署形式如何,分布式系统的设计目标是让用户、客户端应用程序将其视作单一服务对接,例如数据库、网站、存储服务,而非一堆孤立服务器。

分布式系统为企业提供方案,应对当下紧迫的现代计算难题。当下不少应用程序体量庞大、访问负载高或是属于任务关键型业务,无法在单台设备上稳定运行。这类应用程序时常要处理海量数据与请求,单台服务器难以承载负荷。它们需要应对流量峰值波动,这就要求具备敏捷的负载均衡能力。它们承载任务关键型业务流程,长时间停机将造成毁灭性后果,银行系统就是典型示例。

分布式系统把工作负载分摊至多个节点,还能按需自动向网络扩容新增节点。依托这项可扩展能力,即便流量走势不可预估,系统也能承接更多用户与数据体量。正是分布式系统的可扩展性,让流媒体平台能够同时服务全球数百万用户。

分布式系统还可优化 IT 架构的可靠性与容错能力。单个节点发生故障时,其余节点可接管它的任务,保障整体服务持续运转。该特性能够消除单点故障隐患,助力企业搭建高可用系统,这对需要近乎 100% 运行时长的业务至关重要。

除此之外,分布式系统中各个节点紧密协同,但各自配备独立数据库与存储体系。这种部署模式便于 IT 团队搭建模块化架构,系统各个模块可独立扩容、迭代升级。

分布式系统的关键特征是什么?

分布式系统拥有多种架构形态,但全部具备一组核心共性特征。

资源共享

分布式系统内的设备可共用数据、存储、算力与各类服务资源。资源共享能够提升整体系统效率,资源可集中调配至需求最高的环节使用。

并发

并发能力支持分布式系统多个模块同步运行,不同节点可并行处理数据请求。节点同步机制有助于提升整套系统的吞吐量。

可扩展性

可扩展性让分布式系统只需新增设备,而非替换整套系统,就能承接更多用户与数据。举例来说,直播流媒体平台在大量用户同时观看直播活动时,可直接新增服务器扩容。

可用性和容错能力

可用性与容错能力是关联概念,核心依靠复制机制缩减停机时长,也就是系统在多个节点存储数据、服务的副本。

可用性保障系统局部故障时,用户依旧能够正常访问整体服务。容错能力让分布式系统在单个或多个节点故障时,依托副本继续稳定运行。

异构性

异构性指分布式系统能够兼容、且大多实际搭载不同类型硬件、操作系统、编程语言与中间件。网络节点无需硬件配置完全一致,团队新增设备不会破坏互通性,还可搭建架构自动为不同任务匹配最优运行载体。

统一

统一特性让分布式系统对用户屏蔽内部复杂架构。用户无需知晓是哪一台服务器响应请求,也不用了解数据的物理存储位置。用户只需对接一套统一的系统即可完成操作。

分布式系统如何运行?

想要理解分布式系统运作逻辑,可以以大型多人在线游戏 (MMOG) 作为示例。

MMOG 采用分布式架构,多台服务器与节点协同支撑一个永久存续的游戏大世界,数千名玩家可同时进行航行、交易、对战、探索操作。

游戏世界体量庞大、玩家基数高,因此后端业务拆分部署在设备集群中,而非交由单一系统承载。一组服务器负责记录游戏世界状态,包括玩家坐标、伤害数值、道具库存;基础设施的其余模块则处理玩家登录、聊天功能以及游戏世界数据持久化。在这种业务拆分模式下,即便大量玩家同时聚集在同一游戏区域,游戏也能保持流畅响应。

每一局游戏全程,系统都要保证所有玩家的游戏状态实时同步。当玩家执行操作时,例如在舰队对战中移动舰船,客户端会把操作指令发送给对应游戏区域的专属服务器。服务器随即实时更新全局共享游戏状态,并把变动结果同步给需要查看的其他玩家。

更重要的是,这套分布式游戏系统采用专属通信协议,确保所有玩家几乎同步看到相同游戏事件。

如果在游戏过程中某台服务器发生故障,其余服务器会自动接管业务并正常运转,玩家游玩过程不会出现中断。

集中式系统对比分布式系统

分布式系统在功能上与集中式系统正好相反。分布式系统依靠多台设备协同支撑运行,集中式系统则仅依托一台主服务器。

在集中式系统中,单个中心节点统筹大部分乃至全部运行操作。客户端一般将请求发送至该节点,由节点判定处理方式。管控权限集中在一处,这种运行模式让系统逻辑更易懂。

然而,单一节点会带来单点故障隐患。集中式系统一旦中心服务器宕机,整套系统都会无法访问,因此对高可用性有严苛要求的场景里,集中架构会暴露明显短板。

集中式系统一般采用垂直扩展模式。IT 团队想要提升主服务器性能时,会为其扩容处理器、内存或是存储资源。长远来看,垂直扩展并非可持续的扩容方案。持续扩容会消耗大量硬件资源,成本会持续走高。

因此,集中式系统更适配看重架构简易、集中管控,而非超高弹性的业务场景。集中式架构通常应用于小型计算机网络、内部业务系统、文件服务器以及需要统一严格管控的客户端-服务器类应用程序。

分布式系统内不存在拥有全部管控权限的单台设备。多个节点协同运转,每个节点均可承载部分工作负载、存储部分数据。该架构本身灵活性更强,但需要做好节点间协同调度。

分布式系统容错能力更强,单个节点故障时其余节点可正常承接业务。分布式系统依旧存在整体故障风险,但性能降级表现会比集中式系统平缓很多。

分布式系统依托水平扩展,通过新增设备来承接持续上涨的资源需求。

因此面对海量用户、超大数据库或是多地分散部署,单台中心设备无法承载时,分布式环境会成为优先选择。分布式系统广泛用于需要高可用性与可扩展性的 Web 服务、云平台、区块链网络以及各类大型服务。

IBM DevOps

什么是 DevOps?

Andrea Crawford 阐述了什么是开发运维、开发运维的价值,以及开发运维实践和工具如何帮助您完成从应用程序构思到生产的整个软件交付管道。本课程由 IBM 资深思想领袖主导,旨在帮助企业领导者获得所需的知识,以优先考虑能够推动增长的 AI 投资。

分布式系统的分类

按照设备部署结构与通信模式,分布式系统可划分为几类主流形态。

客户端-服务器系统

在客户端-服务器系统中,一台中心服务器或是一小批服务器负责提供服务,其余设备也就是客户端,需要依托中心服务器完成业务。

中心服务器硬件性能通常更强,负责管理各类共享资源(文件、数据库、打印机、用户账户)。客户端通常是终端用户机器(笔记本电脑、手机、浏览器),主要负责对接用户、收发请求与响应内容。

由于客户端与中心服务器分属不同设备、依靠网络通信,因此客户端-服务器体系归属于分布式系统范畴。但客户端-服务器架构里的节点通信模式属于集中式。

所有客户端都要经由中心服务器调取共享资源,客户端之间不会直接交互获取资源。客户端和服务器之间普遍采用请求响应通信模式。

当用户执行操作,比如点击按钮时,客户端会把操作转化为请求报文,经由网络发送至服务器。服务器接收、处理请求后回传响应内容。然后,客户端会解析响应数据,以易懂的形式向用户展示执行结果。

举例来讲,Web 应用程序会以浏览器作为客户端,向 Web 服务器发送 HTTP 请求;服务器读写数据库后,回传 HTML 或是 JSON 格式响应。

集中式通信便于迭代客户端-服务器系统、落地安全策略、统一管理数据。其弊端则是集中架构容易产生性能瓶颈与单点故障风险。

点对点 (P2P) 系统

点对点系统内所有节点,也就是对等节点,权责地位基本对等。每个对等节点会拿出自身部分资源,同时取用其他节点共享的资源。任意对等节点既可发起资源请求,也能向其他节点供给资源。

所以 P2P 系统里的客户端、服务器只是节点临时承担的角色,并非固定身份。

在纯 P2P 系统中,节点互相寻址识别,依托覆盖网络通信;覆盖网络是搭建在物理互联网链路之上的逻辑网络。覆盖网络管控节点间通信对象与数据转发路径。

当某个节点需要资源,例如文件分片时,会直接向持有该资源的其他对等节点发送请求。接收请求的节点可返回对应数据,此刻它就临时充当服务器。后续二者角色可以互换,同一组节点可切换数据供给方与请求方身份。

所有节点均可收发资源,数据处理负载能够在网络内均衡分摊。随着更多节点接入,会同步带入自身资源算力,让系统扩容更加轻松。

传统文件共享网络是 P2P 系统的典型示例。每位用户的设备存储文件分片,既向其他节点上传分片,也下载自身缺失的分片内容。

相比客户端-服务器系统,P2P 系统抵御单点故障的能力更强。单个节点离线时整套系统仍可正常运行,其余节点存有数据副本,或是可绕开故障节点转发数据。

多层系统

多层系统对基础客户端-服务器模型做扩展,拆分成多个界限清晰的层级,每层各司其职。主流分为两层、三层与多层架构。

双层系统本质就是客户端-服务器架构的另一种叫法。客户端承载大部分应用程序逻辑,直接对接服务器数据库执行查询与数据更新操作。该流程简易,但它会让用户界面与数据层高度耦合。数据结构一旦调整,大量客户端都需要同步修改适配。

三层架构划分三大层级。表示层负责承载用户界面(网页、移动设备用户界面、桌面用户界面)。应用程序层,又称业务逻辑层,负责执行业务规则与工作流,包含校验、运算、判定逻辑。数据层负责从分布式数据库或其他存储系统存取数据。

多层架构在三层基础上增设更多细分专用层级。举例来说,IT团队可单独搭建应用程序编程接口 (API) 层或是服务层,对外暴露 RESTGraphQL 访问端点。他们还可拆分出身份验证加密层,专门处理用户登录与令牌校验。

新增层级和原有三层遵循同一套分层设计原则。每个层级仅承担一项核心职责,层级之间依靠规范接口交互。这种模块化设计支持团队独立开发、升级、替换任意层级,各层级甚至可选用不同技术栈搭建。

多层系统普遍用于搭建电商网站与银行类应用程序。

集群系统

集群由多台物理位置邻近的设备组成,它们的工作方式类似于一台性能更强的独立设备。集群内部节点耦合度高,一般具备以下特征:

  • 部署在同一物理场地,同一机房或是同一数据中心。

  • 依靠高速链路互联,例如高带宽局域网 (LAN) 或是专用互联通道。

  • 采用相近或完全一致的硬件与操作系统。

由于节点配置相近且链路连通性良好,集群可将大型任务拆分为多个子任务,分发至不同节点并行运算后合并输出结果。

集群依靠专用软件管控,包含集群中间件、调度程序、资源管理器等类型。这套软件负责分配各节点的作业任务、监控节点运行状态、调度数据路由,同时均衡节点之间的工作负载。正是这一管理层,将网络中多台独立设备整合为一套集群。您可以直接向整体集群提交作业,无需逐台手动登录设备操作。

集群系统适配高性能计算场景,例如大数据分析、AI 模型训练、科学仿真运算。

网格计算系统

网格计算整合大量分散在不同城市、不同国家或地区的独立设备,协同完成单一巨型计算任务。

网格内每一台参与运算的设备,归属的组织或个人都可以互不相同。设备之间的 CPU、内存容量、操作系统、本地管控规则均可存在差异。即便存在差异,各方仍同意拿出闲置算力资源,协同处理公共计算任务。

网格跨越多重管理域,不存在单一组织全权持有、管控所有设备。这是网格与集群的核心区别,集群由单一机构全权持有、管理同一数据中心内的服务器设备。

网格系统内的每个节点都保持自主管控状态。节点可自由接入、退出网格,自带本地资源管理器,安全规则与任务优先级配置可独立设置。网格中间件搭建统一交互层,支撑作业提交、可用资源检索、任务排程、数据传输、结果汇总全流程。依托这套中间件,终端用户视角下整套网格等效于一台虚拟超级计算机。

当用户提交大型作业,例如蛋白质折叠仿真、金融风险测算时,中间件会自动拆解为大量细小子任务。随后在全网网格内搜寻闲置、低负载设备,分配对应子任务。各设备独立运算分配到的任务片段,回传运算结果后统一整合生成最终输出。

重点在于,网格节点并非专属供给网格运算使用。这类设备可以是普通台式机或服务器,完成自身本地主业之余,腾出闲置 CPU 算力参与网格任务。

云计算系统

基于云的分布式系统搭建在云供应商运营的大型数据中心之上。

组织无需采购实体服务器,可通过互联网租赁分布式算力资源。这些资源以虚拟机 (VM)容器、数据库、消息队列及其他托管服务的形式对外提供。

云系统最核心的特性是弹性伸缩。业务负载上涨时企业可扩容算力、存储、网络资源,负载回落时释放多余资源。企业仅需为实际耗用的资源付费,无需前期一次性采购硬件设备。

借助云系统,IT 团队可搭建动态横向扩容机制。自动伸缩组由多台配置一致的服务器实例组成,实时监控负载指标波动。负载超出预设阈值时,自动化工具自动新增服务实例。当负载降低后,系统自动关停多余实例以缩减开销。

微服务架构

微服务架构属于应用层面的分布式体系,依靠多套独立组件部署在不同设备上,共同搭建软件应用程序。

与单体应用程序不同,任意单一微服务都无法承载整套应用全部能力。每一项微服务都是独立小型服务,配备专属代码,大多搭配独立存储,只负责一项特定业务能力,与其他容器互不干扰独立运行。

微服务彼此独立,可分开开发、部署、扩容,整套系统的价值依靠各微服务协同配合实现。

当用户发起请求时,客户端生成报文发送至边缘设备,例如负载均衡器、API 网关。边缘设备将请求转发至对应的目标微服务。接收微服务解析报文、执行业务逻辑,生成响应回传给边缘设备,再由边缘设备转发给到用户。

分布式系统的用例

分布式系统在现实场景中应用十分广泛。大众日常用于娱乐、商务、财务管理的大量工具与服务,底层均依托分布式系统搭建。

蜂窝网络

蜂窝网络由散布各地的大量基站,也就是信号塔、小型天线组成,全部接入运营商核心网络与互联网。在用户携带手机移动的过程中,信号会自动在不同信号塔之间切换,全程无感知。

内容交付网络 (CDN)

CDN 是一套地理分布式代理服务器与数据中心网络,将图片、视频、网页这类内容缓存至距离用户更近的节点。内容会在多个节点完成副本同步。当用户访问网站时,请求会调度至就近边缘服务器处理,而非远距离直达源站服务器。该部署模式能够加快网络内容分发速度。

流媒体服务

大型流媒体平台高度依赖分布式系统架构。平台在多处数据中心部署集群服务器存储视频资源。同时搭配 CDN 对视频分片、复制、缓存,按需向全球数百万用户推送流媒体内容。

区块链系统

区块链网络,例如加密货币体系,属于分布式点对点网络,众多节点各自保存账本副本,依靠共识算法对新交易达成一致确认。每个节点存储完整或部分链数据,校验新区块并同步给其他节点,实现数据与计算完全分布式承载。

分布式系统的优势

  • 可扩展性:分布式计算系统擅长横向扩容,业务负载上涨时企业只需新增网络节点,无需花费高额成本升级单台服务器硬件。
  • 可靠性和容错能力:分布式架构消除单点故障隐患,自带冗余能力,即便个别节点故障,应用程序依旧可持续向用户提供服务。
  • 资源效率与成本节约:分布式架构允许企业采用平价标准硬件搭建集群,替代高价专用超级计算机,搭建高性能计算环境。
  • 全球部署与可访问性:分布式系统可将应用程序部署在全球贴近用户的位置,依托地理距离更近的节点处理请求,降低延迟

作者

Chrystal R. China

Staff Writer, Automation & ITOps

IBM Think

相关解决方案
IBM Instana Observability

利用 AI 和自动化的强大功能,主动解决整个应用程序堆栈中的问题。

深入了解 IBM Instana Observability
IBM 可观测性解决方案

借助人工智能驱动的可观测性,最大限度提高运营弹性,并确保云原生应用正常运行。

深入了解 IBM 可观测性解决方案
IBM® Consulting AIOps

使用生成式 AI 增强 IT 自动化和运营,将 IT 基础设施的每个方面与业务优先事项保持一致。

深入了解 IBM Consulting AIOps
采取后续步骤

了解 IBM Instana® 如何通过 SaaS 或自托管形式提供实时应用程序性能监控及 AI 驱动洞察。

  1. 深入了解 IBM Instana Observability
  2. 了解实际应用