1. 引言
在本教程中,我们将探讨计算机集群(Computer Clusters),包括其类型、使用场景和应用。早期,系统设计依赖于昂贵的单机运行,只有政府或大型企业才能负担得起。随着网络技术的发展,人们开始将多台计算机连接起来,目标是解决两个核心问题:提升处理速度 和 增强系统可靠性。如今,计算需求的增长速度几乎与硬件性能提升同步,我们对计算机系统的依赖也日益加深,因此集群技术变得尤为重要。
2. 什么是计算机集群?
简单来说,计算机集群是一组协同工作的计算机节点,作为一个整体系统运行。我们可以利用集群来提升计算能力,或者增强系统的容错性。
要实现集群功能,通常需要以下管理节点:
- 协调负载分配
- 检测节点故障并调度替换
节点之间需要保持较高的软硬件兼容性,并通过“心跳(heartbeat)”机制持续探测彼此是否在线。同时,它们依赖于连接它们的数据网络,为了提高可靠性,节点之间通常会配置冗余网络路径。这样,集群就能区分是节点故障还是网络中断。
3. 集群参考架构
根据上述讨论,我们可以绘制出一个典型的集群架构图:
其主要组成部分包括:
✅ 计算节点(Computing Nodes):处理用户负载的服务器,从普通PC到高端服务器都有可能
✅ 管理节点(Managing Nodes):监控集群软硬件状态,根据事件进行重新配置。管理软件也可以部署在计算节点上以节省资源
✅ 私有网络(Private Network):用于节点间通信,处理“你还在吗?”这类探测消息,也负责集群配置和同步命令的传输
✅ 共享冗余存储(Shared Redundant Storage):所有计算节点都能访问的共享数据存储,确保某个节点故障时,其他节点可以接管其任务
✅ 公共访问层(Public-access Layer):虚拟化集群访问,使整个集群对外表现为单一系统。例如通过虚拟IP来分配服务入口和请求流量
4. 集群类型
根据不同的非功能性需求,集群可以分为多种类型。在实际应用中,这些类型常常可以共存。例如,一个负载均衡集群可能其管理节点采用高可用架构。
4.1. 故障转移 / 高可用集群(Fail-over / High Availability Cluster)
在故障转移配置中,服务通常运行在一个节点上,另一个节点处于待命状态,用于在主节点故障时接管服务。
主要用途:增强系统容错性
当主节点发生故障时,管理节点会将虚拟IP切换到备用节点,同时切断主节点对共享存储的访问,防止数据冲突。备用节点接管后,会执行一系列恢复操作,如检查数据完整性、重放日志等。此时正在进行的事务会失败,系统会有短暂的停机时间。
优点:不需要修改现有软件即可使用
Linux下著名的开源实现是 Linux HA,此外还有来自 Veritas、Oracle、IBM 等公司的商业实现。
4.2. 负载均衡集群(Load Balancing Cluster)
在负载均衡集群中,负载被分发到多个可用的计算节点上。常见的负载分发策略包括轮询(round-robin)等。这种模式最适合事务之间相互独立的场景。
优点:
- 成本较低
- 整体吞吐量高
- 可通过增加节点实现横向扩展
缺点:
- 节点故障时可能导致服务性能下降
- 需要特别注意并发数据一致性问题
更多关于并行处理的内容,可以参考我们关于并发与并行的教程。
4.3. 高性能计算集群(High-Performance Computing – HPC)
适用于计算密集型任务,例如天气预报、流体动力学、药物设计、渲染农场等。HPC 集群的主要特点包括:
- CPU密集型计算
- 大规模数据传输
- 节点间低延迟通信以模拟共享内存
- 数据流可在多个节点间顺序流转
这类系统通常由数百甚至数千个节点组成,每个节点搭载通用CPU,甚至可能配备GPU加速。全球最强大的非分布式系统排名可以在 Top500 网站查看。
设计重点:
- 原始计算能力
- 低网络延迟
- 高效的任务调度机制
5. 其他计算架构
上述集群模型通常适用于非地理分布的本地部署环境。对于高度分布式、云原生或无服务器架构,我们有更抽象的集群模型,它们不要求节点之间紧密耦合。
5.1. 网格计算(Grid Computing)
网格计算是一种松散连接的异构设备集合,共同完成某一目标。节点分布稀疏,通常不共享网络或磁盘连接。
它主要由两个部分组成:
- 服务端(Provider-side):管理中心,负责协调网格资源,分发任务并评估结果
- 客户端(Client-side):加入网格的计算资源,接收任务、处理并返回结果
一个著名的例子是志愿计算项目 Folding@home,用于蛋白质折叠研究和药物开发。
5.2. 云、Kubernetes 与无服务器架构(Cloud, Kubernetes, and Serverless)
云平台、Kubernetes 和无服务器架构如何与集群理念结合?
我们可以借助虚拟化技术实现类似集群的效果:
✅ 软件定义网络(SDN):即使节点分布在多个数据中心,也表现为一个统一网络
✅ 虚拟负载均衡器:动态将请求路由到可用节点
✅ 软件定义存储(SDS):数据可分布存储,按需复制,支持就近访问
✅ 自动扩缩容:根据负载自动创建或销毁虚拟节点,实现弹性伸缩
这类架构要求系统设计时支持负载均衡模式,才能充分发挥其优势。
6. 总结
在本教程中,我们介绍了计算机集群的概念、类型及其应用场景。当单台服务器无法满足性能或可用性需求时,集群技术便派上用场。现代集群系统可以扩展到非常大的规模,因此在设计系统时,考虑集群友好性是非常重要的。