集群、分布式与微服务介绍

前言

集群,分布式,微服务,分库分表等等概念很容易混起来,今天我系统性地介绍一下他们到底是怎么分类怎么划分的。

1. 集群

集群是指多个节点组成一个整体,共同对外提供某一种能力

集群中的节点可以:

  • 运行完全相同的服务,例如多个 Web 服务器实例共同处理用户请求

  • 存在不同的角色,例如 MySQL 主节点负责写入,从节点负责读取

典型结构:

复制代码
                 负载均衡
                    ↓
        ┌───────────┼───────────┐
        ↓           ↓           ↓
    服务实例A    服务实例B    服务实例C

集群主要解决以下问题:

  • 提高并发能力:多个节点共同处理请求,减轻单机压力

  • 提高可用性:某个节点出现故障时,其他节点仍然可以继续提供服务

  • 便于横向扩容:性能不足时,可以增加新的机器或服务实例

因此,不能简单地把集群理解成"多台机器运行完全相同的代码"。有些集群中的节点也可能具有不同职责。


2. 分布式

分布式是指将一个系统中的业务、任务、计算或数据分散到多个节点上,由多个节点通过网络通信和协作,共同完成整个系统的工作

分布式系统可以按照不同方式进行拆分:

  • 按业务拆分:用户服务、商品服务、订单服务分别部署在不同节点

  • 按数据拆分:不同数据存储在不同数据库节点

  • 按计算任务拆分:将大型计算任务拆成多个子任务并行执行

  • 按地域拆分:在不同地区部署节点,就近为用户提供服务

  • 按职责拆分:例如主数据库负责写入,从数据库负责读取

例如:

复制代码
用户请求
   ↓
用户服务 → 商品服务 → 订单服务 → 支付服务
  机器A      机器B      机器C      机器D

分布式主要解决:

  • 单机计算、存储和性能有限的问题

  • 大型系统难以维护和扩展的问题

  • 不同业务需要独立部署和扩容的问题

  • 跨地区访问和容灾问题

但分布式系统也会带来网络延迟、服务调用失败、数据一致性和分布式事务等新问题。


3. 微服务

微服务是一种按照业务能力拆分系统的分布式软件架构

一个大型系统可以拆分为多个独立服务,例如:

复制代码
电商系统
├── 用户微服务
├── 商品微服务
├── 订单微服务
├── 支付微服务
└── 物流微服务

每个微服务通常可以:

  • 独立开发

  • 独立部署

  • 独立运行

  • 独立扩容

  • 由不同团队维护

  • 根据需要使用不同的技术或数据库

因此:

微服务通常属于分布式系统,但分布式系统不一定采用微服务架构。

例如 Hadoop 分布式计算、Redis 分布式存储和数据库分库分表都属于分布式技术,但它们并不是微服务架构。


4. 集群、分布式与微服务的关系

集群和分布式不是互斥的概念,它们在实际系统中经常同时存在。

例如一个电商系统:

复制代码
                    电商分布式系统

用户服务集群          商品服务集群          订单服务集群
├── 机器A             ├── 机器D             ├── 机器G
├── 机器B             ├── 机器E             ├── 机器H
└── 机器C             └── 机器F             └── 机器I

从整个系统看:

  • 用户、商品、订单被拆成不同服务,因此属于分布式或微服务架构

从某一个服务内部看:

  • 多台机器共同提供用户服务或订单服务,因此形成了服务集群

三者的关注点不同:

概念 核心关注点
集群 多个节点如何组成一个整体,共同提供一种能力
分布式 系统中的任务、业务、计算或数据如何分散并协作
微服务 如何按照业务能力将系统拆成独立服务

可以简单记忆为:

复制代码
微服务负责拆业务
集群负责扩服务
分布式负责让多个节点协作

5. 分布式的其他实现形式

微服务只是分布式系统的一种常见架构形式,除此之外还有以下实现形式。

5.1 分布式计算

将一个大型计算任务拆成多个子任务,交给多台机器并行执行,最后汇总计算结果。

典型技术:

  • Hadoop MapReduce

  • Spark

  • Flink

例如:

复制代码
大型数据处理任务
├── 节点A处理数据分片1
├── 节点B处理数据分片2
└── 节点C处理数据分片3

5.2 分布式存储

将数据分散存储在多个节点上,通过多个节点共同提供存储能力。

典型技术:

  • HDFS

  • Ceph

  • Elasticsearch

  • Redis Cluster

  • MongoDB Sharding

分布式存储主要解决数据量过大、单机磁盘不足、访问压力过高和数据高可用等问题。

5.3 分布式数据库

数据库中的数据、查询和事务由多个数据库节点共同处理。

常见形式包括:

  • 主从复制

  • 读写分离

  • 分库分表

  • 数据分片

  • 分布式数据库

例如:

复制代码
写请求 → 主数据库
读请求 → 从数据库A、从数据库B

这种结构既可以称为数据库集群,也体现了分布式职责划分。

5.4 消息驱动架构

不同服务通过消息队列进行异步通信,而不是全部采用同步调用。

例如:

复制代码
订单服务
   ↓ 发布"订单已创建"消息
消息队列
   ├── 库存服务扣减库存
   ├── 积分服务增加积分
   └── 通知服务发送消息

常见消息队列包括:

  • Kafka

  • RocketMQ

  • RabbitMQ

消息驱动架构能够降低服务之间的耦合,但需要处理消息重复、消息丢失和最终一致性等问题。

5.5 SOA 架构

SOA,即面向服务架构,也会将大型系统拆分为多个服务。

与微服务相比,SOA 的服务粒度通常更大,常用于传统大型企业系统,并可能通过 ESB 企业服务总线统一进行服务通信和管理。


6. 分库分表与这些概念的关系

分库分表是一种数据库层面的数据拆分方案,主要用于解决单库或单表数据量过大、访问压力过高的问题。

分表

将一张大表拆成多张结构相同的小表:

复制代码
原订单表 order
        ↓
order_0
order_1
order_2
order_3

例如根据用户 ID 取模决定数据存储在哪张表:

复制代码
tableIndex = userId % 4

分库

将数据拆分到多个数据库实例中:

复制代码
db_0
db_1
db_2
db_3

分库分表

同时将数据拆分到多个数据库和多张表中:

复制代码
db_0
├── order_0
└── order_1

db_1
├── order_0
└── order_1

分库分表属于分布式数据存储的一种实现方式。当多个数据库节点共同提供数据库能力时,也可以称为数据库集群。

它们可以从不同层次理解:

层次 常见方案
系统架构层 分布式架构、微服务架构
服务部署层 服务集群、负载均衡
数据存储层 主从复制、读写分离、分库分表、分布式数据库
服务通信层 RPC、消息队列、服务注册与发现

一个完整系统可以同时使用这些方案:

复制代码
系统按照业务拆成微服务
        ↓
每个微服务部署多个实例形成集群
        ↓
服务之间通过网络或消息队列通信
        ↓
数据库通过主从复制或分库分表扩展

最终可以概括为:

集群强调多个节点组成整体,分布式强调任务或数据分散协作,微服务强调按业务能力拆分服务,分库分表强调在数据库层面拆分数据。

相关推荐
Niuguangshuo2 小时前
TTS 架构的六代演进(六):第 6 代 · 端侧轻量化
架构
Sirius Wu2 小时前
OpenClaw Observability 并发安全(Per-Request Hook)完整详解
服务器·网络·人工智能·安全·ai·架构·aigc
2601_954706492 小时前
云虚拟化移动端架构深度解析:API 自动化集群管控实战与商用选型方案
运维·架构·自动化
盛夏绽放2 小时前
Hermes Agent 全栈安装、配置与Web端架构深度解析(官方命令版·最终优化)
前端·架构·hermes
allnlei3 小时前
React + FastAPI 前后端分离架构下的 Nginx 配置实践
react.js·架构·fastapi
Dovis(誓平步青云)3 小时前
《 AI直连数据库落地实践:基于MCP协议打通开发工具与数据库全链路运维分析》
大数据·linux·运维·数据库·人工智能·架构
2601_956743683 小时前
上海AI Agent智能体开发选型:从工程架构看落地路径解析
大数据·人工智能·ai·架构·开发经验·上海
lailai04103 小时前
表格自动化应用分析:功能边界与选型参考
分布式
用户239526180104 小时前
一文读懂LangChain模型:AI应用的“大脑”是如何工作的
架构