分布式 vs 集群核心概念对比一句话先分清集群多台机器做同样的事分担压力、提高可用性分布式多台机器做不同的事拆分业务、协同完成一个整体任务1. 核心定义集群Cluster一组独立的服务器对外表现为一个整体所有节点功能相同可以互相替代目标高可用、负载均衡、提升并发能力分布式Distributed一个大系统拆分成多个子模块分别部署在不同机器各节点职责不同彼此依赖、通过网络通信协作目标解耦、扩容、处理复杂业务、提升整体性能2. 关键区别对比维度集群分布式节点职责完全相同可互换各司其职不可互换核心目的分担流量、保证高可用拆分复杂业务、解决单机性能瓶颈故障影响挂一台不影响整体其他节点顶上某模块挂了整体可能部分不可用耦合关系节点间无强依赖模块间强依赖需要通信协调典型例子Nginx 负载均衡下的多台 Tomcat微服务订单、用户、支付、库存分服务器复杂度较低较高分布式事务、网络延迟、一致性等3. 形象理解集群一个窗口忙不过来开多个一模一样的窗口一起售票。分布式把售票拆成查票、收钱、打票、检票分别由不同人负责流水线完成。4. 它们不是互斥的经常一起用实际架构里几乎都是分布式系统 每个服务内部做集群订单服务是分布式的一个模块订单服务本身部署 3 台机器构成集群保证高可用5. 简单总结集群 堆机器提高 “处理量”分布式 拆业务提高 “复杂度承载能力”6.高并发和分布式还有集群是什么关系一句话理清三者关系高并发 要解决的问题流量大、请求猛集群 分布式 两种解决手段架构方案1三个概念拆开讲高并发目标 / 压力同一时间涌入海量请求QPS 高、流量大。关心扛不扛得住、会不会崩、延迟高不高。集群横向扩容、做副本同一套代码部署多份多台机器干一样的事。目的扛流量、高可用、负载均衡特点功能重复、互为备份并发安全单机锁够用吗不够 → 要分布式锁例子10 台一模一样的订单服务 → Nginx 分流 → 就是集群。分布式拆分任务、拆分工种把一个系统拆成多个不同服务多台机器干不同的事协同工作。目的解耦、扩容、大数据量、异地部署痛点网络延迟、数据不一致、需要分布式事务 / 分布式锁例子拆成用户服务 / 订单服务 / 库存服务 / 支付服务 → 就是分布式。2最关键一张对比表维度集群 Cluster分布式 Distributed工作内容干一样的活干不一样的活部署多副本、冗余按业务拆分、分片拆分主要解决并发、可用性体量太大、业务复杂、数据拆分共享资源共享数据库 / 缓存服务独立、数据也常隔离并发安全要跨机器 → 需分布式锁天然跨机器 → 必用分布式锁3三者组合关系面试必考① 只有高并发不集群、不分布式单机器性能极强就能扛比如 Redis 单机高 QPS。局限单机总有上限、单点故障。②集群 ≠ 分布式单纯集群多台机器重复部署不是拆分。典型网关集群、应用集群。③分布式 往往 也是集群现在主流每个微服务本身先集群部署保证并发 可用服务之间再分布式拆分解耦 扩展也就是微服务 分布式架构 每个服务内部集群4线程安全视角衔接你刚才问的 Redis单机高并发Java 锁就行synchronized、ReentrantLock集群高并发多实例、同一业务跨 JVM → 必须Redis 分布式锁分布式高并发微服务跨服务 跨 JVM → 更必须分布式锁 / 原子命令 / Lua总结只要是涉及到多台服务器情况下的高并发场景就需要使用分布式锁记忆口诀单机锁管进程集群锁管机器分布式锁管全局。