负载均衡浅析

前言

负载均衡这个概念在我们工作中经常被提及到,因为纵观我们系统的整个链路层,每层都会用到负载均衡,从接入层,服务层,到最后的数据层,当然还有MQ,分布式缓存等等都会存在一些负载均衡的思路在里面;给负载均衡做一个简短的定义:就是将请求分摊到多个操作单元上进行执行;其实就是一种分而治之的思想,面对高并发的情况下,这是一种非常行之有效的方法。

核心功能

上面简短的定义中我们大致可以看到两个内容:将请求分发,操作单元;其实就是控制器+执行器模式、Master+Worker模式等等,是不是很熟悉;当然一个成熟的负载均衡器不光有这两个核心功能,还有一些其他的功能,下面看看都有哪些核心功能:

  • 操作单元配置
    这里的操作单元其实就是上游的服务器,是真正来处理业务的执行者,这个需要可配置的(最好能支持动态配置),方便用户添加和删除操作单元;这些操作单元就是负载均衡器分发消息的对象;

  • 负载均衡算法
    既然需要分发,那具体通过何种方式把消息分给配置的执行器,这就需要有相关的分发算法了,比如我们常见的轮询、随机、一致性哈希等等;

  • 失败重试
    既然配置了多个执行单元,所以某台服务器宕机是大概率事件,这样我们在分发请求给某台已经宕机的服务器时,需要有失败重试功能,将请求重新分发给正常的执行器;

  • 健康检查
    上面的失败重试是只有真正转发的时候才知道服务器宕机了,是一种惰性策略,健康检查就是提前将宕机的机器排除掉,比如常见的通过心跳的方式去检查执行器是否还存活;

有了以上几个核心的功能,一个负载均衡器大致就形成了,可以把这几个原则用在很多地方,形成不同的中间件或者说内嵌在各种中间件中,比如接入层的LVS,F5,Nginx等,服务层各种RPC框架,消息队列RocketMQ、Kafka,分布式缓存Redis、memcached,数据库中间件shardingsphere、mycat等等,这种分而治之的思路在各种中间件中广泛使用,下面对一些常见的中间件是如何做负载均衡的进行分析,大体上可以分为有状态和无状态两种类型;

无状态

执行单元本身没有状态,其实是更加容易去做负载均衡,每个执行单元都是一样的,常见的无状态的中间件有Nginx,RPC框架,分布式调度等;

接入层

Nginx可以说是我们最常见的接入层中间件了,提供四层到七层的负载均衡功能,提供了高性能的转发,对以上的几个核心功能提供了支持;

  • 操作单元配置
    Nginx提供了简单的静态的操作单元配置,如下:
upstream tomcatTest {
     server 127.0.0.1:8081;   #tomcat-8081
     server 127.0.0.
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
负载均衡健康检查是一种用于监测和维护服务器状态的机制。它的原理是通过定期发送请求到服务器,并根据服务器的响应结果判断其是否健康,进而进行负载均衡的决策。 具体来说,负载均衡器会周期性地向后端服务器发送健康检查请求。这些请求可以是简单的ping请求,也可以是更复杂的应用层请求,如HTTP请求。服务器在接收到健康检查请求后,会根据自身的状态进行响应。通常情况下,如果服务器正常运行,它会返回一个成功的响应;如果服务器出现故障或超过了一定的负载阈值,它可能会返回一个错误的响应或者无响应。 负载均衡器接收到后端服务器的响应后,会根据设定的规则进行判断,以决定如何分配流量。如果服务器返回的是成功的响应,那么负载均衡器就会将一定比例的流量分发给该服务器;如果服务器返回的是错误响应或无响应,负载均衡器则会将该服务器暂时从可用服务器列表中剔除,避免将流量分发给不健康的服务器。 通过周期性地进行健康检查,并根据服务器的响应结果进行动态的负载均衡决策,可以确保流量被均匀地分发到健康的服务器上,从而提高系统的可用性和性能。 需要注意的是,不同的负载均衡器实现可能会有差异,其具体的健康检查原理和配置方式可能会有所不同。此处所述是一种常见的健康检查方式,供参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值