区别
集群通常指多个计算节点组成的一个整体,目的是提高系统的可用性和性能。
分布式系统是由多个独立的计算节点组成的系统,这些节点通过网络通信和协作,共同完成某个任务或提供某个服务。
微服务是一种特定的架构风格,强调将系统拆分成小而自治的服务单元,每个服务单元都有明确的边界和职责。
特征 | 集群 (Cluster) | 分布式系统 (Distributed System) | 微服务 (Microservices) |
---|---|---|---|
定义 | 多个计算节点连接在一起,作为一个整体协同工作 | 多个独立的计算节点通过网络通信和协作,完成任务或提供服务 | 将应用程序拆分成小型、独立的服务单元,每个单元围绕特定功能构建 |
目的 | 提高系统的可用性、可扩展性和性能 | 提高系统的可扩展性、可靠性和性能 | 提高系统的灵活性、可维护性和可扩展性 |
构成节点 | 多个计算节点(服务器) | 多个独立的计算节点(服务器、容器、虚拟机等) | 多个小型、独立的服务单元 |
通信方式 | 通常通过专用的内部网络或协议进行通信 | 通过网络通信和协作 | 通过轻量级的通信机制进行交互 |
负载均衡和容错 | 可实现负载均衡和容错能力 | 可实现负载均衡和容错能力 | 可实现负载均衡和容错能力 |
设计目标 | 提高系统的可用性和性能 | 提高系统的可扩展性、可靠性和性能 | 提高系统的灵活性、可维护性和可扩展性 |
例子 | Web 服务器集群、数据库集群等 | 分布式文件系统、分布式数据库等 | 电子商务平台、社交媒体应用等 |
举例说明
Java中运行Jar包+nginx+MySQL的示例
集群
集群( 集群是指将多台服务器集中在一起, 每台服务器都实现相同的业务,做相同的事;但是每台服务器并不是缺 一不可,存在的主要作用是缓解并发能力和单点故障转移问题)
那就让一堆服务器都运行jar包,来处理Java业务
分布式系统
分布式服务是指多台服务器集中在一起,服务是分散部署在不同的机器上; 每台机器都实现总体中的不同业务,做不同的事情
比如说,让一台服务器运行nginx,一个服务器运行Jar包,一个服务器运行MySQL
微服务
微服务的概念和分布式比较相似,微服务是一种架构风格;简单来说微服务就是很小的服务,小到一个服务只对应一个单一的功能;每个微服务仅关注于完成一件任务并很好地完成该任务,这个服务可以单独部署运行;
在JAVA业务场景中,你可以将Java应用拆分成多个小而自治的服务单元,每个服务单元都有明确的边界和职责。比如,可以拆分成用户服务、订单服务、支付服务等。
每个微服务可以打包成一个独立的Jar包,
并使用nginx作为反向代理来统一对外提供服务,
同时通过MySQL等数据库进行数据存储和交互。
总结
先有分布式——再有集群!
分布式是对应用的拆分——粒度较大!
微服务是对业务的拆分——粒度较小!