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

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

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

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

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