集群、分布式、负载均衡区别

本文深入解析了集群与分布式系统的概念及区别,通过具体实例说明了负载均衡的作用与实现方式,并探讨了集群与分布式如何应对高并发场景。

前言:
集群:是指将几台服务器集中在一起,实现同一业务;
分布式:是指将不同的业务分布在不同的地方;
分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。
负载均衡系统:集群中所有的节点都处于活动状态,它们分摊系统的工作负载。一般Web服务器集群、数据库集群和应用服务器集群都属于这种类型。

1、集群举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。

分布式,从窄意上理解,也跟集群差不多, 但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,一个节点垮了,那这个业务就不可访问了。

简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

2、分布式举例:如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行该任务需10小时。

采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是Hadoop的Map/Reduce分布式计算模型)

而采用集群方案,同样提供10台服务器,每台服务器都能独立处理这个任务。假设有10个任务同时到达,10个服务器将同时工作,1小时后,10个任务同时完成,这样,整身来看,还是1小时内完成一个任务!

分布式:不同的业务模块部署在不同的服务器上或者同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题
集群:同一个业务部署在多台机器上,提高系统可用性。

3、负载均衡
Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)
负载均衡(load balance)概念:
负载均衡是集群技术中重要的一部分。通过将请求分发到不同的服务器,它提供了可同时获得高可用性和更高性能的服务的方法。简单的负载均衡器可以是一个Servlet或一些插件,复杂的负载均衡器可能是高级的嵌入了SSL加速器的硬件设备。
负载均衡集群(Load Balance Cluster)一般用于相应网络请求的网页服务器,数据库服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。

除了分发请求之外,负载均衡器还负责执行一些重要的任务:

(1) “会话持久”用来确保用户会话生命周期在一台服务器上的完整性。
(2) “心跳”来检查失败的服务器。
(3) 在某些情况下,负载均衡器需要参与“失败转移”的过程,下文中会提及。

2、负载均衡系统: 负载均衡又有DNS负载均衡(比较常用)、IP负载均衡、反向代理负载均衡等,也就是在集群中有服务器A、B、C,它们都是互不影响,互不相干的,任何一台的机器宕了,都不会影响其他机器的运行,当用户来一个请求,有负载均衡器的算法决定由哪台机器来处理,假如你的算法是采用round算法,有用户a、b、c,那么分别由服务器A、B、C来处理;

负载均衡问答?:先来个数据结构问题
设计一个用于负载均衡的数据结构,支持加入一台机器,撤出一台机器,在活跃的机器集合中“等概率”随机选中一台机器。以上三个操作要尽可能的快。

解答:
用一个数组记录当前的活跃机器集,用一个hash记录某个机器在数组中的位置。对于等概率随机选中一台机器,random(数组长度)选中一台机器;对于加入一台机器,在数组最后添加,并记录在hash表中;对于撤出一台机器,先用hash表找到其在数组中的对应位置,用数组最后一个位置的机器和它交换,并在hash表中删除撤出的机器并修改被交换的机器的位置,这样做的目的是保证数组中不会出现空位,这样才能保证随机操作的正确性和高效。三个操作的时间复杂度均为O(1)。

面试官角度:
本题中描述的负载均衡是用于Web Server的负载均衡,并不是存储的负载均衡,所以无需考虑新增加的机器需要尽量多的承载访问请求,所以如果往一致性哈希(Consistent Hash)的方向考虑就错了。本题是纯粹的数据结构题,并非设计题。当看到加入一台机器和撤出一台机器的时候,自然会想到使用hash表来支持O(1)的插入和O(1)的删除。但普通的hash表是不支持等概率随机访问的。想要支持等概率随机访问,那最简单的方法当然是地址空间连续的数组。因此想到结合两种数据结构。剩下来需要解决的问题就是如果让数组支持O(1)的删除并让数组没有空位。一个思维误区是整体移动后面的数据。实际上由于数组所代表的内容是集合,无需保证其结果的连续性,因此采用类似堆中删除元素的操作方法——用最后一个元素覆盖待删除元素,即可解决问题。 本题的考点主要是对于各种数据结构的灵活使用,需要对数组,hash表,甚至堆有一定的了解。

### 分布式系统中负载均衡的架构图示例 在分布式系统中,负载均衡模块的设计需要考虑个层面的因素。以下是基于提供的引用内容和专业知识构建的负载均衡架构图的描述。 #### 架构图概述 一个典型的分布式系统中的负载均衡架构可以分为以下几个层次: 1. **客户端层** 客户端通过域名访问服务,DNS 负载均衡在此阶段起作用,将请求分配到不同的地理区域或数据中心[^2]。 2. **DNS 负载均衡层** DNS 负载均衡通过解析域名返回不同的 IP 地址,实现地理级别的负载均衡。例如,根据用户的地理位置选择最近的数据中心[^2]。 3. **硬件负载均衡层** 在数据中心内部,硬件负载均衡器(如 F5、Citrix NetScaler)用于接收来自外部的流量,并将其分配到集群中的不同服务器上。这一层主要负责高吞吐量的流量分发和故障切换[^2]。 4. **软件负载均衡层** 软件负载均衡器(如 Nginx、HAProxy 或自定义负载均衡逻辑)进一步将请求分发到具体的微服务实例上。这些工具可以根据实时负载情况动态调整流量分配策略[^3]。 5. **服务注册与发现层** 微服务架构中,服务实例通常会动态扩展或缩减。因此,负载均衡器需要结合服务注册中心(如 Eureka、Consul)来获取可用的服务实例列表,并根据健康检查结果进行流量分配[^4]。 6. **熔断与限流层** 为了防止某个节点过载,系统还需要引入熔断器(Circuit Breaker)制。当某个服务实例出现异常时,熔断器会暂时停止向该实例发送请求,从而保护整个系统的稳定性[^4]。 #### 架构图示例 以下是一个简化的分布式负载均衡架构图示例: ```plaintext +-------------------+ | 客户端请求 | +-------------------+ | v +-------------------+ | DNS 负载均衡 | -- 地理级别负载均衡 +-------------------+ | v +-------------------+ | 硬件负载均衡器 (F5) | -- 集群级别负载均衡 +-------------------+ | v +-------------------+ | 软件负载均衡器 (Nginx) | -- 器级别负载均衡 +-------------------+ | v +-------------------+ | 服务注册中心 (Eureka) | +-------------------+ | v +-------------------+ | 微服务实例 | -- OrderService, UserService, PaymentService +-------------------+ ``` #### 技术实现细节 - **DNS 负载均衡**:通过配置条 A 记录或 CNAME 记录实现地理级别的负载均衡。 - **硬件负载均衡**:使用专用设备或虚拟化技术处理高并发流量。 - **软件负载均衡**:通过配置 Nginx 的 upstream 模块或 HAProxy 的后端池实现动态流量分配。 - **服务注册与发现**:利用 Eureka、Consul 等工具动态更新服务实例列表。 - **熔断与限流**:通过 Hystrix、Resilience4j 等库实现熔断器功能。 ### 示例代码 以下是一个基于 Nginx 的简单负载均衡配置示例: ```nginx http { upstream backend { server 192.168.1.101 weight=5; server 192.168.1.102; server 192.168.1.103 backup; } server { listen 80; location / { proxy_pass http://backend; } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值