分布式系统由多台独立计算机与设备组成,设备间依托网络协同运转,对外呈现为一套完整统一的系统。
分布式系统将任务与数据拆分给多台并行运行的设备,原本单台大型设备需要数周完成的任务,如今数小时乃至数分钟即可收尾。系统内每一台设备,也就是节点,都配备独立 CPU、内存,多数还自带存储介质。节点之间可互发消息,协调数据共享、分配任务,并整合各自产出以达成统一目标。
分布式系统里的设备,可部署在同一数据中心的服务器机架、不同数据中心,或是全球分布的混合云环境中。无论部署形式如何,分布式系统的设计目标是让用户、客户端应用程序将其视作单一服务对接,例如数据库、网站、存储服务,而非一堆孤立服务器。
分布式系统为企业提供方案,应对当下紧迫的现代计算难题。当下不少应用程序体量庞大、访问负载高或是属于任务关键型业务,无法在单台设备上稳定运行。这类应用程序时常要处理海量数据与请求,单台服务器难以承载负荷。它们需要应对流量峰值波动,这就要求具备敏捷的负载均衡能力。它们承载任务关键型业务流程,长时间停机将造成毁灭性后果,银行系统就是典型示例。
分布式系统把工作负载分摊至多个节点,还能按需自动向网络扩容新增节点。依托这项可扩展能力,即便流量走势不可预估,系统也能承接更多用户与数据体量。正是分布式系统的可扩展性,让流媒体平台能够同时服务全球数百万用户。
分布式系统还可优化 IT 架构的可靠性与容错能力。单个节点发生故障时,其余节点可接管它的任务,保障整体服务持续运转。该特性能够消除单点故障隐患,助力企业搭建高可用系统,这对需要近乎 100% 运行时长的业务至关重要。
除此之外,分布式系统中各个节点紧密协同,但各自配备独立数据库与存储体系。这种部署模式便于 IT 团队搭建模块化架构,系统各个模块可独立扩容、迭代升级。
通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明。
分布式系统拥有多种架构形态,但全部具备一组核心共性特征。
分布式系统内的设备可共用数据、存储、算力与各类服务资源。资源共享能够提升整体系统效率,资源可集中调配至需求最高的环节使用。
并发能力支持分布式系统多个模块同步运行,不同节点可并行处理数据请求。节点同步机制有助于提升整套系统的吞吐量。
可扩展性让分布式系统只需新增设备,而非替换整套系统,就能承接更多用户与数据。举例来说,直播流媒体平台在大量用户同时观看直播活动时,可直接新增服务器扩容。
可用性与容错能力是关联概念,核心依靠复制机制缩减停机时长,也就是系统在多个节点存储数据、服务的副本。
可用性保障系统局部故障时,用户依旧能够正常访问整体服务。容错能力让分布式系统在单个或多个节点故障时,依托副本继续稳定运行。
异构性指分布式系统能够兼容、且大多实际搭载不同类型硬件、操作系统、编程语言与中间件。网络节点无需硬件配置完全一致,团队新增设备不会破坏互通性,还可搭建架构自动为不同任务匹配最优运行载体。
统一特性让分布式系统对用户屏蔽内部复杂架构。用户无需知晓是哪一台服务器响应请求,也不用了解数据的物理存储位置。用户只需对接一套统一的系统即可完成操作。
想要理解分布式系统运作逻辑,可以以大型多人在线游戏 (MMOG) 作为示例。
MMOG 采用分布式架构,多台服务器与节点协同支撑一个永久存续的游戏大世界,数千名玩家可同时进行航行、交易、对战、探索操作。
游戏世界体量庞大、玩家基数高,因此后端业务拆分部署在设备集群中,而非交由单一系统承载。一组服务器负责记录游戏世界状态,包括玩家坐标、伤害数值、道具库存;基础设施的其余模块则处理玩家登录、聊天功能以及游戏世界数据持久化。在这种业务拆分模式下,即便大量玩家同时聚集在同一游戏区域,游戏也能保持流畅响应。
每一局游戏全程,系统都要保证所有玩家的游戏状态实时同步。当玩家执行操作时,例如在舰队对战中移动舰船,客户端会把操作指令发送给对应游戏区域的专属服务器。服务器随即实时更新全局共享游戏状态,并把变动结果同步给需要查看的其他玩家。
更重要的是,这套分布式游戏系统采用专属通信协议,确保所有玩家几乎同步看到相同游戏事件。
如果在游戏过程中某台服务器发生故障,其余服务器会自动接管业务并正常运转,玩家游玩过程不会出现中断。
分布式系统在功能上与集中式系统正好相反。分布式系统依靠多台设备协同支撑运行,集中式系统则仅依托一台主服务器。
在集中式系统中,单个中心节点统筹大部分乃至全部运行操作。客户端一般将请求发送至该节点,由节点判定处理方式。管控权限集中在一处,这种运行模式让系统逻辑更易懂。
然而,单一节点会带来单点故障隐患。集中式系统一旦中心服务器宕机,整套系统都会无法访问,因此对高可用性有严苛要求的场景里,集中架构会暴露明显短板。
集中式系统一般采用垂直扩展模式。IT 团队想要提升主服务器性能时,会为其扩容处理器、内存或是存储资源。长远来看,垂直扩展并非可持续的扩容方案。持续扩容会消耗大量硬件资源,成本会持续走高。
因此,集中式系统更适配看重架构简易、集中管控,而非超高弹性的业务场景。集中式架构通常应用于小型计算机网络、内部业务系统、文件服务器以及需要统一严格管控的客户端-服务器类应用程序。
分布式系统内不存在拥有全部管控权限的单台设备。多个节点协同运转,每个节点均可承载部分工作负载、存储部分数据。该架构本身灵活性更强,但需要做好节点间协同调度。
分布式系统容错能力更强,单个节点故障时其余节点可正常承接业务。分布式系统依旧存在整体故障风险,但性能降级表现会比集中式系统平缓很多。
分布式系统依托水平扩展,通过新增设备来承接持续上涨的资源需求。
因此面对海量用户、超大数据库或是多地分散部署,单台中心设备无法承载时,分布式环境会成为优先选择。分布式系统广泛用于需要高可用性与可扩展性的 Web 服务、云平台、区块链网络以及各类大型服务。
按照设备部署结构与通信模式,分布式系统可划分为几类主流形态。
在客户端-服务器系统中,一台中心服务器或是一小批服务器负责提供服务,其余设备也就是客户端,需要依托中心服务器完成业务。
中心服务器硬件性能通常更强,负责管理各类共享资源(文件、数据库、打印机、用户账户)。客户端通常是终端用户机器(笔记本电脑、手机、浏览器),主要负责对接用户、收发请求与响应内容。
由于客户端与中心服务器分属不同设备、依靠网络通信,因此客户端-服务器体系归属于分布式系统范畴。但客户端-服务器架构里的节点通信模式属于集中式。
所有客户端都要经由中心服务器调取共享资源,客户端之间不会直接交互获取资源。客户端和服务器之间普遍采用请求响应通信模式。
当用户执行操作,比如点击按钮时,客户端会把操作转化为请求报文,经由网络发送至服务器。服务器接收、处理请求后回传响应内容。然后,客户端会解析响应数据,以易懂的形式向用户展示执行结果。
举例来讲,Web 应用程序会以浏览器作为客户端,向 Web 服务器发送 HTTP 请求;服务器读写数据库后,回传 HTML 或是 JSON 格式响应。
集中式通信便于迭代客户端-服务器系统、落地安全策略、统一管理数据。其弊端则是集中架构容易产生性能瓶颈与单点故障风险。
点对点系统内所有节点,也就是对等节点,权责地位基本对等。每个对等节点会拿出自身部分资源,同时取用其他节点共享的资源。任意对等节点既可发起资源请求,也能向其他节点供给资源。
所以 P2P 系统里的客户端、服务器只是节点临时承担的角色,并非固定身份。
在纯 P2P 系统中,节点互相寻址识别,依托覆盖网络通信;覆盖网络是搭建在物理互联网链路之上的逻辑网络。覆盖网络管控节点间通信对象与数据转发路径。
当某个节点需要资源,例如文件分片时,会直接向持有该资源的其他对等节点发送请求。接收请求的节点可返回对应数据,此刻它就临时充当服务器。后续二者角色可以互换,同一组节点可切换数据供给方与请求方身份。
所有节点均可收发资源,数据处理负载能够在网络内均衡分摊。随着更多节点接入,会同步带入自身资源算力,让系统扩容更加轻松。
传统文件共享网络是 P2P 系统的典型示例。每位用户的设备存储文件分片,既向其他节点上传分片,也下载自身缺失的分片内容。
相比客户端-服务器系统,P2P 系统抵御单点故障的能力更强。单个节点离线时整套系统仍可正常运行,其余节点存有数据副本,或是可绕开故障节点转发数据。
多层系统对基础客户端-服务器模型做扩展,拆分成多个界限清晰的层级,每层各司其职。主流分为两层、三层与多层架构。
双层系统本质就是客户端-服务器架构的另一种叫法。客户端承载大部分应用程序逻辑,直接对接服务器数据库执行查询与数据更新操作。该流程简易,但它会让用户界面与数据层高度耦合。数据结构一旦调整,大量客户端都需要同步修改适配。
三层架构划分三大层级。表示层负责承载用户界面(网页、移动设备用户界面、桌面用户界面)。应用程序层,又称业务逻辑层,负责执行业务规则与工作流,包含校验、运算、判定逻辑。数据层负责从分布式数据库或其他存储系统存取数据。
多层架构在三层基础上增设更多细分专用层级。举例来说,IT团队可单独搭建应用程序编程接口 (API) 层或是服务层,对外暴露 REST、GraphQL 访问端点。他们还可拆分出身份验证和加密层,专门处理用户登录与令牌校验。
新增层级和原有三层遵循同一套分层设计原则。每个层级仅承担一项核心职责,层级之间依靠规范接口交互。这种模块化设计支持团队独立开发、升级、替换任意层级,各层级甚至可选用不同技术栈搭建。
多层系统普遍用于搭建电商网站与银行类应用程序。
集群由多台物理位置邻近的设备组成,它们的工作方式类似于一台性能更强的独立设备。集群内部节点耦合度高,一般具备以下特征:
由于节点配置相近且链路连通性良好,集群可将大型任务拆分为多个子任务,分发至不同节点并行运算后合并输出结果。
集群依靠专用软件管控,包含集群中间件、调度程序、资源管理器等类型。这套软件负责分配各节点的作业任务、监控节点运行状态、调度数据路由,同时均衡节点之间的工作负载。正是这一管理层,将网络中多台独立设备整合为一套集群。您可以直接向整体集群提交作业,无需逐台手动登录设备操作。
网格计算整合大量分散在不同城市、不同国家或地区的独立设备,协同完成单一巨型计算任务。
网格内每一台参与运算的设备,归属的组织或个人都可以互不相同。设备之间的 CPU、内存容量、操作系统、本地管控规则均可存在差异。即便存在差异,各方仍同意拿出闲置算力资源,协同处理公共计算任务。
网格跨越多重管理域,不存在单一组织全权持有、管控所有设备。这是网格与集群的核心区别,集群由单一机构全权持有、管理同一数据中心内的服务器设备。
网格系统内的每个节点都保持自主管控状态。节点可自由接入、退出网格,自带本地资源管理器,安全规则与任务优先级配置可独立设置。网格中间件搭建统一交互层,支撑作业提交、可用资源检索、任务排程、数据传输、结果汇总全流程。依托这套中间件,终端用户视角下整套网格等效于一台虚拟超级计算机。
当用户提交大型作业,例如蛋白质折叠仿真、金融风险测算时,中间件会自动拆解为大量细小子任务。随后在全网网格内搜寻闲置、低负载设备,分配对应子任务。各设备独立运算分配到的任务片段,回传运算结果后统一整合生成最终输出。
重点在于,网格节点并非专属供给网格运算使用。这类设备可以是普通台式机或服务器,完成自身本地主业之余,腾出闲置 CPU 算力参与网格任务。
分布式系统在现实场景中应用十分广泛。大众日常用于娱乐、商务、财务管理的大量工具与服务,底层均依托分布式系统搭建。
蜂窝网络由散布各地的大量基站,也就是信号塔、小型天线组成,全部接入运营商核心网络与互联网。在用户携带手机移动的过程中,信号会自动在不同信号塔之间切换,全程无感知。
大型流媒体平台高度依赖分布式系统架构。平台在多处数据中心部署集群服务器存储视频资源。同时搭配 CDN 对视频分片、复制、缓存,按需向全球数百万用户推送流媒体内容。
区块链网络,例如加密货币体系,属于分布式点对点网络,众多节点各自保存账本副本,依靠共识算法对新交易达成一致确认。每个节点存储完整或部分链数据,校验新区块并同步给其他节点,实现数据与计算完全分布式承载。
利用 AI 和自动化的强大功能,主动解决整个应用程序堆栈中的问题。
借助人工智能驱动的可观测性,最大限度提高运营弹性,并确保云原生应用正常运行。
使用生成式 AI 增强 IT 自动化和运营,将 IT 基础设施的每个方面与业务优先事项保持一致。