分布式和微服务并不是同一个东西,但它们之间有着非常紧密的联系。简单来说,微服务一定是分布式的,但分布式不一定是微服务。
为了让你更直观地理解,我们可以用一个“城市建设”的比喻:
* 分布式(城市本身):一个城市想要运转,需要发电厂、自来水厂、警察局、医院等不同单位各司其职,通过道路(网络)协作。分布式就是这种“多人协作、多台机器共同干活”的宏观形态。
* 微服务(城市规划理念):这是一种先进的城市规划理念,要求不再建设功能混杂的“巨型社区”,而是规划出一个个功能单一、高度自治的“特色小镇”(比如金融小镇、大学城)。每个小镇内部有独立的管理规则和基础设施,小镇之间通过高效的道路连接。微服务就是这种“按业务拆分、各管一摊、独立运行”的具体架构风格。
为了帮你彻底理清边界,我们可以从以下几个核心维度来对比:
维度 分布式 (Distributed) 微服务 (Microservices)
本质定位 一种部署架构(多台机器协同工作) 一种架构风格(按业务拆分成独立小服务)
拆分维度 拆分方式很灵活,可以按数据、功能任意拆 必须按业务能力精细拆分(如订单、支付服务)
核心目标 解决性能与并发问题(怎么让多台机器好好配合) 解决解耦与敏捷问题(怎么让服务独立开发、部署)
典型代表 HDFS(分布式存储)、Redis Cluster(分布式缓存) Spring Cloud、Dubbo(各类独立业务服务)
它们之间的关系可以这样总结:
1. 包含关系:微服务是分布式系统的一种高级形态或特殊形式。因为微服务架构下的各个小服务,天然就需要部署在不同的机器或容器上,通过网络进行通信,所以它必然属于分布式系统。
2. 演进路线:在系统架构的演进中,通常是从“单体应用”走向“分布式”(为了扛住高并发,把应用拆了部署到多台机器上),再进一步演化为“微服务”(为了业务解耦和快速迭代,把应用按业务拆得更细、更独立)。
所以,当你听到“分布式”时,重点在于“多台机器一起干活”;当你听到“微服务”时,重点在于“把业务拆成独立的小模块”。
维度分布式 (Distributed)微服务 (Microservices)
本质定位一种部署架构(多台机器协同工作)一种架构风格(按业务拆分成独立小服务)
拆分维度拆分方式很灵活,可以按数据、功能任意拆必须按业务能力精细拆分(如订单、支付服务)
核心目标解决性能与并发问题(怎么让多台机器好好配合)解决解耦与敏捷问题(怎么让服务独立开发、部署)
典型代表HDFS(分布式存储)、Redis Cluster(分布式缓存)Spring Cloud、Dubbo(各类独立业务服务)