集群与分布式系统概念
1. 集群
定义 : 集群是由多台计算机组成的系统,这些计算机协同工作,以解决特定的问题或提供特定服务。
类型 :
- 负载均衡 (Load Balancing, LB): 由多个主机组成,每台主机只承担一部分负载。负载均衡器根据负载情况将请求分配到不同的主机。
- 高可用 (High Availability, HA): 通过冗余配置避免单点故障 (SPOF),确保系统持续可用。
- 可扩展性: 可以通过增加更多主机来扩展系统的处理能力。
关键指标 :
- MTBF (Mean Time Between Failures): 平均无故障时间。
- MTTR (Mean Time To Restoration): 平均恢复时间。
- 可用性 (A) : 计算公式为 A=MTBFMTBF+MTTRA =MTBF +MTTRMTBF。常见的可用性水平有 99%、99.5%、99.9%、99.99%、99.999%。
2. 分布式系统
定义 : 分布式系统将业务拆分为多个子业务或功能模块,这些模块在不同的服务器上运行,以提供服务或完成任务。
类型 :
- 分布式存储: 例如 Ceph、GlusterFS、FastDFS 和 MogileFS。
- 分布式计算: 例如 Hadoop 和 Spark。
常见应用 :
- 分布式应用: 将服务按功能拆分,使用微服务架构。
- 分布式静态资源: 静态资源存储在不同的存储集群中。
- 分布式数据和缓存: 使用 Key-Value 缓存系统。
- 分布式计算: 针对特定业务需求使用分布式计算框架。
3. 集群与分布式的比较
-
集群: 在多台服务器上部署同一业务系统,每台服务器的功能和数据一致。集群通过增加并行处理能力提高效率,主要依靠负载均衡器分配请求。如果一台服务器故障,其他服务器可以接管其任务。
-
分布式: 业务被拆分为多个子业务或功能,每台服务器负责不同的任务。分布式系统提高效率的方法是缩短单个任务的执行时间。如果某个节点出现故障,可能会导致对应的子业务失败。
4.通俗的解释
你的比喻很有趣,但可以稍微调整一下,以更准确地描述集群和分布式系统的特点:
集群
比喻 : 银行的多个服务窗口
解释: 想象银行有多个服务窗口(1号窗口、2号窗口等),每个窗口提供相同的服务(例如办理存款、取款等)。这些窗口一起工作,以提高处理客户的效率。如果一个窗口(服务器)忙碌或者出现问题,其他窗口(服务器)可以继续工作,确保服务的连续性和提高处理速度。所有窗口(服务器)都处理相同类型的任务,通过增加窗口数量(服务器),银行能够处理更多的客户(请求)。
分布式系统
比喻 : 搬家中的分工
解释: 想象你和你的朋友在搬家。你负责搬冰箱,另一个朋友负责搬电脑。虽然你们的目标都是完成搬家,但你们各自负责不同的任务。你们将工作分解成不同的部分,通过并行处理来提高整体搬家的效率。如果你负责搬冰箱时,另一个人同时负责搬其他物品,这样可以更快地完成整个搬家任务。每个人(节点)专注于不同的任务(子任务),但最终的目标是一样的,即完成搬家。
总结
-
集群: 比如银行的多个服务窗口,所有窗口提供相同的服务,关注的是通过增加相同类型的服务窗口来提高处理能力(吞吐量)。
-
分布式系统: 比如搬家时的任务分工,每个人负责不同的物品,关注的是通过任务分解和并行处理来提高整体工作效率(加速单个任务的完成)。
通过这两个比喻,可以清楚地看到集群关注的是增加相同类型服务的处理能力,而分布式系统关注的是通过任务分解和并行处理来提高处理效率。
LVS(Linux Virtual Server)简介
LVS(Linux Virtual Server)是一个由章文嵩博士发起的自由软件项目,提供高性能的负载均衡解决方案。LVS集成于Linux内核中,主要用于在多个后端服务器之间分发客户端请求,以实现高可用性和负载均衡。
LVS专业术语
- DR: Director(负载均衡器,分发器)
- VS: Virtual Server(负载均衡集群对外提供的IP+Port)
- RS: Real Server(后端请求处理服务器)
- CIP: Client IP(客户端访问的IP)
- VIP: Virtual IP(外网访问的虚拟IP)
- DIP: Director IP(负载均衡器IP)
- RIP: Real Server IP(后端服务器IP)
工作原理
LVS根据请求报文的目标IP和端口,将请求调度到后端的某个RS。调度的选择基于配置的算法,从而实现负载均衡。用户请求LVS的VIP,LVS根据转发方式和调度算法,将请求转发给后端服务器,后端服务器处理请求并将结果返回给用户。用户无法感知到具体的后端服务器。
LVS调度算法
静态调度算法
- RR(Round Robin): 轮询调度,每个RS按顺序处理请求。适用于RS能力相近的场景。
- WRR(Weighted Round Robin): 加权轮询,根据RS的权重进行调度。性能差的RS被调度的次数较少。
- SH(Source Hashing): 源IP哈希,将来自同一IP的请求始终发送到同一个RS,实现会话绑定(session sticky)。
- DH(Destination Hashing): 目标地址哈希,将同一目标地址的请求始终发送到同一个RS,适用于正向代理缓存场景。
动态调度算法
- LC(Least Connections): 最少连接数,将请求发送到活动连接数最少的RS。适用于长连接应用。
- WLC(Weighted Least Connections): 权重最少连接数,根据RS的权重和连接数进行调度。
- SED(Shortest Expectation Delay): 短期待延迟,优先调度初始连接数较高的RS,但权重较低的RS可能在初期会接收更多请求。
- NQ(Never Queue): 第一轮均匀分配,之后使用SED算法。
- LBLC(Locality-Based Least Connections): 基于位置的最少连接数,将请求分配给负载较轻的RS,适用于正向代理。
- LBLCR(LBLC with Replication): 带复制功能的LBLC,解决LBLC负载不均衡的问题,通过将负载重的请求复制到负载轻的RS。
通过这些算法,LVS能够有效地在多台后端服务器之间分配负载,优化资源利用,提升系统的整体性能和可靠性。