Share-nothing 无共享架构
Share-nothing(无共享)是一种分布式架构设计理念,系统中每个节点配备专属独立的 CPU、内存、硬盘等资源,节点间不存在共享资源情况,各节点通过网络协议通信来协同工作,类似大规模并行处理(MPP)模式。
⚡ 核心特性
1. 横向扩展性强
各节点资源相互独立,通过增加普通服务器节点,就能近乎线性地扩充系统整体计算和存储容量,理论上具备无限扩展的可能。
2. 减少资源竞争
节点处理数据基于本地资源,没有多节点争抢内存、磁盘读写冲突等情况,并发处理性能得以提升。
3. 容错性较好
单个节点故障只会影响自身所负责部分,其他节点能正常运转。系统借助副本冗余等机制,可实现故障的局部恢复,保障整体可用性。
4. 数据本地化处理
数据按特定策略分散存储在不同节点,计算任务尽量分发到数据所在节点执行,降低跨网络数据传输开销。
⚠️ 局限性
- 跨节点查询效率低:因数据分散存储,完成跨节点的复杂数据关联查询、聚合运算时,需多节点数据交互,效率往往不高
- 一致性协议复杂:为确保数据一致性,一般需要采用复杂的分布式一致性协议(如 Paxos、Raft)
🎯 应用场景
| 场景 | 示例 |
|---|---|
| 分库分表的互联网交易系统 | MySQL Sharding、Redis Cluster |
| MPP 数据仓库 | Greenplum |
| 大数据处理 | Hadoop MapReduce |
| 分布式 KV 存储 | Cassandra、ScyllaDB |
Share-nothing 架构在现代分布式系统中应用广泛,特别适合需要高并发写入和大规模并行计算的场景。
关联文档
- K8s 核心概念#🏗️ 集群架构 — K8s 基于无共享架构
- ../../storage/Ceph 分布式存储 — Ceph 也采用无共享架构
- ZooKeeper 主备切换原理 — 分布式协调与共识
- ../../database/mysql/MySQL 高可用方案 — 数据库高可用也依赖无共享设计
关联文档