01SMP
SMP 是指在一个计算机上汇集了一组处理器(多核 CPU),各 CPU 之间共享内存子系统以及总线结构。代表数据库有 Oracle 、MySQL 。SMP 架构原理图如图1所示。
▲图1 SMP 架构原理图
SMP 的典型特征如下:
- 每个处理器共享操作系统的一个副本 。
- 支持共享架构。
- 多任务并行架构,是一个紧耦合的多处理器系统。
- 多个处理器之间共享整个工作。
- 没有单独的缓存池或锁表,全部共享。
- 通过购买更大的系统来实现扩展。
- 容易出现资源争用等问题。
- 创建分布式架构需要复杂的设计,并且只能部分实现。
- 软件提供的内存可用量完全取决于 RAM 和负载的数量。
在 SMP 中,每个 CPU 都有自己的缓存,无论双核还是四核,其余资源都是共享的。SMP 的优点如下。
1 )共享单一操作系统副本。
2 )应用程序编程模式简便。
3)管理成本低,易于维护管理。
SMP 的缺点如下。
1 )伸缩扩展能力非常有限。对 SMP 服务器进行扩展的方式包括增加内存、使用更快 的 CPU、增加 CPU、扩充 I/O(槽口数与总线数)以及添加更多的外部设备(通常是磁盘存 储设备)。这样的架构模式直接导致内存上线受限制。
2 )CPU 利用率低。由于每个 CPU 必须通过相同的内存总线访问相同的内存资源,因 此随着 CPU 数量的增加,内存访问冲突将迅速增加,最终造成 CPU 资源的浪费,大大降 低 CPU 性能的有效性。
3)总线有瓶颈。当大型程序的处理要求大于共享总线时,总线就没有能力进行处理 了,这时共享的总线就成为性能瓶颈。
4 )容错性和效率较低。
SMP 的典型应用场景是托管小型网站和电子邮件服务器等。
02分布式MPP计算架构
MPP(Massively Parallel Processing,大规模并行分析处理)架构模式,是典型的分布 式计算模式。MPP 的各节点不共享资源,每个执行节点可以独自完成数据的读取和计算。
MPP 架构核心原理如下。
1 )将数据集分布在许多机器或节点上,以处理大量数据。
2 )每个节点都有独立的磁盘存储系统和内存系统。
3 )业务数据根据数据库模型和应用特点划分到各个节点上。
4 )每个数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体 提供数据库服务。
在 MPP 架构中,各节点都包含自己的存储和计算功能,可以独立执行查询的一部分。 最后,在内存里进行数据合并,并将结果返回客户端。MPP 具有可伸缩、高可用、高性能、 资源共享等优势。
MPP 由许多松耦合的处理单元组成。注意,这里是指处理单 元而不是处理器。每个单元内的 CPU 都有自己私有的资源,如总线、内存、硬盘等。每个 单元内都有操作系统和管理数据库实例。这种结构最大的特点在于不共享资源。代表数据库 有 ClickHouse 、Snowflake 、Azure Synapse Analytics 、Impala 、Greenplum 、Elasticsearch、 Presto 。MPP 架构原理图如图2所示。
图片
▲图2 MPP架构原理图
MPP 典型特征如下:
- 每个处理器都使用自己的操作系统和内存。
- 支持无共享架构。
- 多个处理器对单个任务进行协调处理。每个处理器处理任务的不同部分。
- 每个节点只负责处理自己磁盘上的任务。
- 每个节点维护自己的一组锁表和缓存池,增加了内存功能的可用性。
- 只需添加机架即可轻松实现可扩展性,支持 TB 到 PB 数据量级的水平扩展。
- 完全不共享资源,所以不存在资源争用。
- 被设计为分布式架构。
- 数据被水平分区,压缩率高,以最佳方式使用内存。
- 处理器使用消息进行通信。
MPP 的优点如下。
1 )每个处理器都使用自己的操作系统和内存。
2 )性能好。大规模数据并行处理能力优秀,适合于复杂的大型数据分析与处理场景。
3)可伸缩。在 MPP 增加节点时,MPP 的性能可以线性扩展。MPP 在数据仓库决策支持和数据挖掘方面占据优势。
4 )低成本。基于 MPP 的数据仓库解决方案旨在廉价的商用硬件上运行,不需要可能 包含成本的企业级双冗余组件。
5 )高可用。使用自动数据复制来提高系统弹性并确保高可用性。
6)高吞吐量。MPP 可以实现非常高的吞吐量,因为读写操作可以在集群中的独立节点 上并行执行。
MPP 的缺点如下。
1 )管理成本高。MPP 需要一种复杂的机制来调度和平衡各个节点的负载和并行处理过 程,通信复杂。当通信时间长时, MPP 性能会变差。目前一些基于 MPP 技术的服务器一般 通过系统级软件(如数据库)来屏蔽这种复杂性。
2 )短板效应:如果遇到“短板”节点,整个引擎的性能将下降到该短板节点的能力(木桶的短板)。MPP 架构不适合异构的机器,它要求各节点配置相同。
MPP 的典型应用场景是数据仓库、大规模数据处理和数据挖掘等。
关于作者:陈光剑,资深大数据专家、后端技术专家和架构师,拥有超过10年的技术研发和管理经验,一线实战经验丰富。现就职于字节跳动,曾就职于阿里巴巴,主要从事企业智能数字化经营管理、电商智能数字化运营等系统架构设计和研发工作。