跳到主要内容

微服务

· 阅读需 4 分钟
Guangyu
learner

分布式组件 和 微服务 有什么区别

微服务(Microservice)和 分布式组件(Distributed Component)经常被混在一起,但两者是不同的概念,可以从几个维度来对比:

1. 定义

分布式组件

一个大系统拆成多个独立的部分,这些部分可以运行在不同进程/机器上,通过网络或 IPC(HTTP、RPC、消息队列)进行通信。

重点是 技术层面的分布式实现,未必强调业务边界。

微服务

一种架构风格,把系统按 业务功能 拆分成多个小服务,每个服务独立部署、独立演进,通过网络协议(HTTP/gRPC/消息队列)协作。

重点是 业务划分、服务自治、独立生命周期。

2. 边界划分

分布式组件:通常是按 技术功能 拆(例如“认证模块”“日志模块”“任务调度器”)。

微服务:通常是按 业务领域 拆(例如“用户服务”“订单服务”“支付服务”)。

3. 部署 & 生命周期

分布式组件:可能仍然需要一起部署、升级(版本强依赖)。

微服务:每个服务都能独立部署、独立升级,不影响其它服务。

4. 耦合性

分布式组件:往往是 强耦合 的(比如主程序必须调用某个组件,否则整个系统挂掉)。

微服务:尽量做到 低耦合(服务契约化,依赖通过接口协议,而不是内部实现)。

5. 举例

分布式组件

一个电商系统里,“订单处理模块”单独跑在一个进程中,主程序通过 HTTP 调它。

这个模块不能单独存在,必须和主程序一起用。

微服务

电商系统中有 订单服务,它可以独立部署,甚至单独扩展(比如搞促销时只扩容订单服务)。

其它系统(比如客服、仓储)也能直接调用这个订单服务。

总结

分布式组件:是“技术实现上的分布式”,但更像一个大系统拆成的零件,独立性不足。

微服务:是在分布式基础上,强调 业务边界、服务自治、独立部署。

可以这么理解:

所有微服务都是分布式组件,但不是所有分布式组件都是微服务。

总结一句话

分布式组件:是“技术上的拆分”,但整体性强,独立性差。

微服务:是“架构上的拆分”,按业务划分,强调自治、独立部署、独立演进。

分布式组件 vs 微服务 vs SOA 对比

维度分布式组件SOA(面向服务架构)微服务
核心思想系统拆成多个组件,通过网络通信把业务功能封装成服务,强调服务复用按业务领域拆分成小服务,强调自治与独立演进
划分依据技术模块(认证、日志、调度器)业务功能(客户服务、订单服务、支付服务)业务领域(用户、订单、库存、支付等),边界更细
服务粒度粗(组件级别)较粗(业务服务,可能很大)更细(单一业务能力,职责单一)
耦合性强耦合,通常依赖主程序松耦合,但常有 ESB(企业服务总线)导致中心化去中心化,点对点/轻量协议通信(REST/gRPC/消息队列)
通信方式多为 HTTP/RPC,偏技术内部调用通常依赖 ESB,SOAP、XML 等重量协议多为 REST/gRPC/消息队列,轻量协议
部署与演进常需要整体部署,组件版本绑定服务独立,但耦合在 ESB 上,演进有限服务完全独立,可单独部署、扩容、升级
适用场景单体拆分,技术解耦大型企业级系统(跨系统集成,ERP+CRM+HR)互联网/工业互联网/复杂业务系统,敏捷迭代快
代表性技术模块化 + IPCSOAP、WSDL、ESBREST、gRPC、K8s、Service Mesh