由于 这篇文章将从概念、类比、技术实现、架构风格等多个角度,深入浅出地讲清楚"微服务"与"分布式系统"的关系与区别。
1 什么是分布式系统?
分布式系统(Distributed System)指的是:将一个系统的多个功能、模块、任务,分布在 多个节点(机器)上运行,这些节点通过网络通信,协同对外提供一个统一服务。
这意味着:即使你看到的是一个"整体",它其实在背后有很多"服务器"在同时工作。每个节点可能负责不同的内容,有时也可能协同完成一个任务。
关键特征
📡 多节点:运行在不同机器 / 容器 / 实例上
🔄 网络通信:节点之间通过 RPC / HTTP / MQ 等方式交互
⚠️ 部分失败常态化:某个节点挂了,系统仍要能工作
📈 可扩展性:可以横向扩展(加机器)
经典的分布式系统有:
Hadoop、HDFS
Kafka、Zookeeper
分布式数据库(如 Cassandra)
2 什么是微服务架构?
微服务(Microservices)是指:将一个复杂的软件系统按照业务功能 划分为若干个小型、自治、可独立部署的服务模块。每个服务专注完成一个业务功能,并通过网络协议(如 REST、RPC)与其他服务通信。
每个服务可以:
独立开发、测试、部署
使用不同的编程语言和数据库
独立扩展、故障隔离
典型的例子如电商系统,会有如下微服务模块:
用户服务(User Service)
商品服务(Product Service)
订单服务(Order Service)
支付服务(Payment Service)
库存服务(Inventory Service)
3 如何区分微服务和分布式系统
一句话总结:**微服务是一种架构风格,而分布式系统是一种系统形态;微服务架构天然就是分布式系统的实现形式之一。**换句话说,微服务跑在分布式系统上,但并不是所有分布式系统都叫微服务。
微服务是为了让系统结构更清晰、部署更灵活、迭代更高效 。而分布式系统是为了让系统更大更稳、能扛住流量、有更强容错能力。
两者的关系:不是并列,是包含关系
分布式系统
├── 分布式数据库
├── 分布式缓存
├── 分布式计算
└── 微服务架构 ✅
| 对比维度 | 分布式系统 | 微服务架构 |
|---|---|---|
| 定义 | 多节点协同完成一个整体任务 | 将业务拆分成独立服务模块 |
| 是否一定分布式 | 是 | 是(微服务必须跑在分布式环境中) |
| 技术目标 | 容错性、伸缩性、高可用 | 解耦、灵活部署、快速迭代 |
| 服务粒度 | 按功能/任务划分,粒度较粗 | 按业务划分,粒度较细 |
| 通信方式 | RPC、消息队列、数据同步等 | HTTP(REST)、RPC、MQ等 |
| 应用场景 | 分布式存储、计算、大数据等 | 复杂业务系统、快速迭代型产品 |
在实际项目中,两者是协同出现的:
-
微服务架构跑在分布式部署环境上(如K8s集群)
-
分布式基础设施(如 Redis Cluster, Kafka, Consul)支撑微服务间的通信、注册、配置
4 总结
分布式系统是一种系统运行形态,强调多个计算节点通过网络协同工作、对外表现为一个整体;而微服务是一种软件架构风格,强调按照业务能力将系统拆分为多个可独立开发、部署和扩展的服务。微服务通常依托网络通信,因此必然属于分布式系统的一种实现方式,但分布式系统并不一定采用微服务架构,例如分布式部署的单体应用或分布式数据库系统。换言之,分布式系统是上位概念,微服务是其中的一种具体实践。