目录
- 集群、分布式、微服务
- 核心关系一句话总结
- 三者的角色与定位
- 层层递进的关系解析
- 一个最终的比喻:建设城市
- 分布式和微服务
- 分布式和微服务
集群、分布式、微服务
核心关系一句话总结
微服务是一种特定的分布式应用设计架构,而集群是实现分布式和微服务的高可用与扩展性的通用技术手段。
它们三者的关系可以概括为:
微服务 ⊂ 分布式 ⊃ 集群
三者的角色与定位
概念 | 是什么? | 核心目标 | 好比是... |
---|---|---|---|
集群 | 一种技术手段 | 高可用、负载均衡、扩展能力 | “复制” - 像组织一支一模一样的替补队伍,随时能顶上去。 |
分布式 | 一种系统架构风格 | 分工协作、解决单机性能瓶颈 | “拆分与协作” - 像组建一家分工明确的公司,有市场部、技术部、财务部。 |
微服务 | 一种具体的应用设计范式 | 敏捷开发、独立部署、技术异构 | “精细化拆分与自治” - 像将公司重组为独立核算、高度自治的敏捷小团队。 |
层层递进的关系解析
- 集群是基石
- 它是构建高可用、可扩展系统最基础、最通用的技术。
- 它既可以用于支撑一个庞大的单体应用(单体集群),也可以用于支撑分布式系统中的一个组件(如数据库集群),还可以用于支撑微服务架构中的每一个独立服务(如订单服务集群)。
- 没有集群,大规模的分布式和微服务系统就很难具备生产级的可靠性。
- 分布式是目标与范畴
- 它定义了一个宏观的蓝图:系统将由多个通过网络通信的组件构成。
- 只要你的系统跑在多台机器上并协同工作,你就进入了“分布式”的范畴。
- 集群是实现分布式蓝图的一种常用方式。
- 微服务是分布式的“最佳实践”
- 它回答了“在分布式这个宏大的蓝图下,我应该如何具体地设计我的应用?”这个问题。
- 它给出了明确的指导原则:按业务边界精细拆分、服务自治、独立部署。
- 微服务架构是分布式应用架构的一种高级形态,它必然建立在分布式系统之上,并且几乎总是依赖集群技术来保证每个服务的可靠性。
一个最终的比喻:建设城市
- 集群:你在城市的每个区域都建设了一模一样的消防站。这是一个消防站集群,确保任何地方起火,最近的消防站都能出动。
- 分布式:整个城市本身就是一个分布式系统。它有专门负责供电的电站、负责供水的自来水厂、负责交通的道路网、负责治安的警察局...这些单位各司其职,通过道路(网络)协作,共同维持城市的运转。
- 微服务:这是城市规划的先进理念。它要求不再建设功能混杂的“巨型社区”,而是规划出一个个功能单一、高度自治的“特色小镇”:一个金融小镇、一个科技园区、一个大学城。每个小镇有自己的管理规则和基础设施(独立数据库),小镇之间通过高效的道路(API)连接。同时,每个小镇内部也有多个消防站(集群)来保障自身安全。
结论:
当你设计一个现代互联网系统时,你很可能是在采用 微服务架构 (设计理念),来构建一个 分布式系统 (整体结构),并通过为每个微服务建立 集群 (技术实现)来确保其高可用与可扩展性。这三者相辅相成,共同构成了现代云计算时代的系统基石。
分布式和微服务
微服务是分布式的特殊情况,是分布式的更为精细的拆分。
微服务架构通过一种“精细化的、以业务为边界的拆分”方式,来实现一个“分布式系统”的终极目标(即可扩展、高可用、高性能),同时更侧重于获得开发敏捷性、技术自由度和弹性能力。
分布式和微服务
分布式:拆了就行。
微服务:细粒度的垂直拆分。
- 拆分目的不同:
- 提出分布式设计是为了解决单体应用资源有限的问题,一台服务器无法支撑更多的用户访问,因此将一个应用拆解成不同的部分,然后分别部署到不同服务器上,从而分担高并发的压力。
- 微服务是对服务组件进行精细化,目的是更好地解耦,让服务之间通过组合实现高性能、高可用、可伸缩、可扩展。
- 拆分方式不同:
- 分布式服务架构将系统按照业务和技术分类进行拆分,目的是让拆分后的服务负载原来单一服务的业务。
- 微服务则是在分布式的基础上进行更细的拆分,它将服务拆成更小的模块,不仅更专业化,分工也更为精细,并且每个小模块都能独立运行。
- 部署方式不同:
- 分布式架构将服务拆分以后,通常会把拆分后的各部分部署到不同服务器上。
- 而微服务既可以将不同的服务模块部署到不同服务器上,也可以在一台服务器上部署多个微服务或者同一个微服务的多个备份,并且多使用容器
的方式部署。