• 浅谈分布式、伪分布式与集中式之选

浅谈分布式、伪分布式与集中式之选

2025-06-13 10:00:03 栏目:宝塔面板 9 阅读

近期跟多家用户交流,发现用户在选型数据库时正有了一些新的变化,这也是近些年通过不断实践,用户总结的最佳实践方法。例如,有的用户不盲目追求分布式,而是通过业务单元化后,底层通过集中式数据库解决;有的用户选择分布式数据库,但在应用上通常是按照“单机”模式去使用,即不做数据分片;有的用户利用分布式数据库提供的租户特性,做单机数据库的整合;也有的用户回归“传统”的集中式共享存储架构来解决问题。上面谈到的租户及单机模式的使用方法,可以说是一种“伪分布式”。那么在面临这些“新架构、新用法”,用户又该如何选择呢?本文选择了分布式和集中式的多种主流用法,尝试从多种角度来对比分析下。

1. 多角度对比数据库主流用法

1).谈谈“伪分布式”

在正式对比之前,这里先谈下伪分布式的两种用法。第一种“单机”模式,其实是一种对分布式的妥协,放弃了分布式能力,选择单机式的使用方法。这种通常发生在用户已经选择使用分布式数据库,但其更多业务是不需要采用分布式使用方式,但选择另一款集中式数据库又需要引入新的技术栈,因而采用这种方式。这种方式优点在于一方面简化统一技术栈、第二则利用平台能力(如高可用、易管理等)做到比直接使用单机库更好的效果。这种方式多见于分库分表类型的分布式数据库,因其底层是依托于独立的单机数据库引擎构建,因而相对容易。另一种方式“租户”模式,则多见于资源整合类需求,用户将原来直接使用大量单机数据库,转而通过分布式数据库提供的租户来承载。其业务可采用分片、也可采用单机。这种方式优点在于同样一方面可以简化统一技术栈,第二则更多是为了更好的利用资源,通过租户的形式来整合底层资源。当然上述两种能力,也存在一定的弊端,主要表现在资源有效利用率(分布式架构多少存在一些冗余)、管理灵活性(统一方式管理所带来的)、可靠性(集群内的单点故障蔓延)、可用性(受限于平台整体可用性)、扩展性(是否能做到真正的一体化)等等。

2).多角度架构对比

下文将从多角度对比各种数据库主流架构。这其中选择原生分布式、分库分表类型的分布式,默认这两者都采用数据分片的通常用法;另外选择分布式的两种新用法,租户模式和单机模式。集中式方面,选择了典型的三种架构,共享存储模式(类似Oracle RAC)、主备模式(类似Oracle DG)和单机模式。

1.png

架构层面

在架构层面,分布式在扩展性天然具备一定优势,当然针对绝大多数企业及场景来看,集中式共享模式提供的Scale Up能力,已经是可以满足的了。之前国内这种方案较少,大多还是主备,近两年部分厂商开始发力。在可用性、可靠性、容灾等方面,分布式具备的计算层无状态、存储层多副本架构等技术特点,成为可靠的保障。从我的观察来看,很多国内用户选择分布式数据库,很多往往不是因为计算、存储的规模问题,而是考虑了可用性问题。出于对国产数据库的各种不放心,天然会考虑通过分布式能解决一定问题。这有一定道理,但是这其实也是一柄双刃剑,分布式架构的复杂度也带来对可用性的挑战。其实经典的 IOE 架构,是之前企业的普遍选择,大部分核心业务系统是构建于此,只不过国产数据库此类架构发展较晚,大家还处于观望状态。

性能层面

在性能层面,分布式同样具备一定的优势,可通过水平扩展计算节点来解决高并发、高吞吐的问题。这一点集中式之前方案不多,虽然单节点的处理能力已经达到上百万的TPMC,但是在极端场景下还是有所欠缺。共享存储的架构是另一种思路,可在一定程度上解决传统集中式架构的性能短板。之前有一点容易被忽略的是关于时延问题,分布式架构在这点上往往表现不佳,这主要是因为其层次多、路径长所导致的,这一点集中式架构是有一定优势的。

一致性层面

在一致性方面分两点,一是数据一致性,即多个数据副本是否保障的实时一致性;一是读写一致性,可理解为读取的是否为最新版本的数据。这方面主要是数据副本的复制机制、复制粒度有关,强一致会带来不错的一致性表现,但对性能的影响也是巨大的。其实最好的一致性是数据不复制,对单一副本进行读写,集中式的共享存储模式就是这种,严格意义来讲也不是数据不复制,只不过数据副本的构建是在更低层次(存储)上解决了。

应用适配性

在应用适配难度上,分布式的劣势就很明显了,其在架构设计、语句开发等方面不可避免地需要考虑分布式的特点。当然很多分布式厂商也都在解决这一问题,希望通过类似“透明分布式”的做法来屏蔽这一难点。但目前看来只能说在一定程度上可以解决,尚无法达到同集中式同等的设计、开发适配能力,毕竟过去几十年来研发人员已经习惯在集中式数据库上的设计开发了。此外,针对库内计算的问题则差异更大,这也是大家这些年都纷纷采用降低数据库计算要求,这其实也是无奈之举,但同时其背后的压力与成本付出则是更多人看不到的。

资源利用

在资源利用方面,分布式所需组件多、资源消耗大,是很多人所诟病的,这是其架构决定的。约一体化的架构对资源的使用效率越高,这一点集中式有一定优势。在隔离性方面,同样如此,较为清晰的资源调用路径有利于提升隔离性,避免因资源消耗过大导致的异常蔓延问题。

综合成本

最后的成本问题则来自多个方面,这包括了硬件、软件采购及与之相配套的开发测试与运营维护成本。这一点分布式具有的新架构、节点组件多、资源需求多、开发适配投入大、管理维护复杂等问题是存在的,这也在一定程度造成分布式推广难点,因而可见近年来很多分布式企业提供的单机一体化能力,就是为了在一定程度上减低部分成本。很多用户可能会有感觉,上了分布式后,比之前集中式的 IOE 架构还要贵,这点也为国产集中式架构产品带来一定启发,做出更具性价比的产品。

2. 典型业务场景分析

上面谈到了数据库主流用法,那么用户又该如何去选呢?一方面可以参考表格内容做好自有业务分析,一方面也可以参考行业一些通用做法。这里引用来自白鳝老师近期发表的一篇文章,其中对主流业务场景做了抽象。这里将下面场景逐一分析,看用什么架构适配会更为合适。

1).典型业务场景回顾

2.png

2).可适配的最佳架构

下面从不同架构特点及场景需求出发,做两两匹配,看何种架构会更为合适些。

3.png

本文地址:https://www.yitenyun.com/286.html

搜索文章

Tags

数据库 API FastAPI Calcite 电商系统 MySQL 数据同步 ACK Web 应用 异步数据库 双主架构 循环复制 序列 核心机制 生命周期 Deepseek 宝塔面板 Linux宝塔 Docker JumpServer JumpServer安装 堡垒机安装 Linux安装JumpServer esxi esxi6 root密码不对 无法登录 web无法登录 Windows Windows server net3.5 .NET 安装出错 宝塔面板打不开 宝塔面板无法访问 SSL 堡垒机 跳板机 HTTPS Windows宝塔 Mysql重置密码 无法访问宝塔面板 HTTPS加密 查看硬件 Linux查看硬件 Linux查看CPU Linux查看内存 连接控制 机制 ES 协同 scp Linux的scp怎么用 scp上传 scp下载 scp命令 修改DNS Centos7如何修改DNS Serverless 无服务器 语言 Oracle 处理机制 存储 防火墙 服务器 黑客 Spring SQL 动态查询 RocketMQ 长轮询 配置 日志文件 MIXED 3 Linux 安全 加密 场景 Rsync MySQL 9.3 缓存方案 缓存架构 缓存穿透 HexHub 网络架构 工具 网络配置 Canal 开源 PostgreSQL 存储引擎 架构 InnoDB 线上 库存 预扣 响应模型 B+Tree ID 字段 Redis 自定义序列化 Redis 8.0 索引 数据 业务 数据库锁 信息化 智能运维 聚簇 非聚簇 分页查询 DBMS 管理系统 监控 单点故障 prometheus Alert 分库 分表 云原生 openHalo AI 助手 查询 GreatSQL Hash 字段 共享锁 SQLark 技术 排行榜 排序 ​Redis 机器学习 推荐模型 容器化 Postgres OTel Iceberg 电商 系统 SpringAI 优化 万能公式 OB 单机版 Doris SeaTunnel 自动重启 运维 SVM Embedding PostGIS Netstat Linux 服务器 端口 数据集成工具 向量数据库 大模型 SQLite-Web SQLite 数据库管理工具 不宕机 缓存 sqlmock sftp 服务器 参数 虚拟服务器 虚拟机 内存 • 索引 • 数据库 Entity 开发 RDB AOF 人工智能 推荐系统 Redka 分布式架构 分布式锁​ 聚簇索引 非聚簇索引 崖山 新版本 高可用 redo log 重做日志 EasyExcel MySQL8 同城 双活 数据备份 MongoDB 容器 数据类型 OAuth2 Token StarRocks 数据仓库 Testcloud 云端自动化 IT运维 分页 数据结构 向量库 Milvus Ftp AIOPS IT Python Web 数据脱敏 加密算法 LRU ZODB MVCC 池化技术 连接池 微软 SQL Server AI功能 流量 窗口 函数 部署 1 mini-redis INCR指令 悲观锁 乐观锁 Caffeine CP 磁盘架构 MCP 开放协议 Web 接口 字典 R2DBC RAG HelixDB 模型 原子性 单线程 线程 速度 服务器中毒 事务隔离 双引擎 QPS 高并发 PG DBA dbt 数据转换工具 对象 Order 网络 Pottery InfluxDB 频繁 Codis 主库 工具链 引擎 SSH 性能 网络故障 Crash 代码 INSERT COMPACT Undo Log 优化器 LLM List 类型 连接数 Redisson 锁芯 JOIN 管理口 事务同步 Recursive 高效统计 今天这篇文章就跟大家 发件箱模式 意向锁 记录锁 Go 数据库迁移 线程安全 传统数据库 向量化 仪表盘 filelock UUIDv7 主键 订单 分页方案 排版 核心架构 订阅机制 Pump 分布式 集中式 大表 业务场景 启动故障