Spring Cloud LoadBalancer之负载均衡简介

系列文章:
Spring Cloud LoadBalancer之负载均衡简介
Spring Cloud NamedContextFactory 原理分析
Ribbon 的替代品 Spring Cloud Loadbalancer 使用与原理分析

概念

负载均衡,英文名称为 Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如 FTP 服务器、Web 服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。来源于百度百科

说白一点就是通过一个协调者,将工作尽量均匀地分配出去,不让某一个提供者承受太多的工作,或者某个提供者能力更大,协调者可以将更多的工作分配给它。

1.1 负载均衡分类
  • 硬件负载均衡,不依赖于底层的软件,通过专门的硬件去实现

  • 软件负载均衡,例如 nginx、ribbon、loadbalancer 这类软件

1.2 常见的负载均衡算法(软件方面)
  • 轮训,按照顺序去轮序提供者,如有 5 个健康的用户中心服务实例,按顺序每个都调用一次,调用完再重头开始。伪代码如下:

    int pos = ++pos;
    ServiceInstance instance = instances.get(pos % instances.size());
    
  • 随机,即随机从健康的服务实例中拿出一个去调用。伪代码如下:

    // 随机取一个
    int idx = random(instances.size());
    ServiceInstance instance = instances.get(idx);
    
  • 加权轮询,该算法中,每个机器接受的连接数量是按权重比例分配的。这是对普通轮询算法的改进,比如你可以设定:第三台机器的处理能力是第一台机器的两倍,那么负载均衡器会把两倍的连接数量分配给第3台机器

  • etc…

1.3 服务端负载均衡与客户端负载均衡
  • 服务端负载均衡,指的是客户端调用服务端,服务端通过本地的健康服务列表去使用负载均衡算法调用目标实例;常见的 nginx 就是服务端负载均衡的一种。
    Spring Cloud LoadBalancer之负载均衡简介_第1张图片

  • 客户端负载均衡,例如在 Sping Cloud 中使用的 Ribbon 或者 Loadbalancer 组件,它保存有一份服务信息,Ribbon 或者 Loadbalancer 组件在这里就相当于是客户端的身份了,它可以自己选择发送到哪一个服务实例。
    Spring Cloud LoadBalancer之负载均衡简介_第2张图片

其实它们的区别仅仅是在谁使用那份服务器信息去调用服务实例而已。

你可能感兴趣的:(分布式,java,spring,cloud,负载均衡)