系列文章:
Spring Cloud LoadBalancer之负载均衡简介
Spring Cloud NamedContextFactory 原理分析
Ribbon 的替代品 Spring Cloud Loadbalancer 使用与原理分析
负载均衡,英文名称为 Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个 *** 作单元上进行运行,例如 FTP 服务器、Web 服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。来源于百度百科
说白一点就是通过一个协调者
,将工作尽量均匀地分配出去,不让某一个提供者
承受太多的工作,或者某个提供者
能力更大,协调者
可以将更多的工作分配给它。
-
硬件负载均衡,不依赖于底层的软件,通过专门的硬件去实现
-
软件负载均衡,例如 nginx、ribbon、loadbalancer 这类软件
-
轮训,按照顺序去轮序提供者,如有 5 个健康的用户中心服务实例,按顺序每个都调用一次,调用完再重头开始。伪代码如下:
int pos = ++pos; ServiceInstance instance = instances.get(pos % instances.size());
-
随机,即随机从健康的服务实例中拿出一个去调用。伪代码如下:
// 随机取一个 int idx = random(instances.size()); ServiceInstance instance = instances.get(idx);
-
加权轮询,该算法中,每个机器接受的连接数量是按权重比例分配的。这是对普通轮询算法的改进,比如你可以设定:第三台机器的处理能力是第一台机器的两倍,那么负载均衡器会把两倍的连接数量分配给第3台机器
-
etc…
-
服务端负载均衡,指的是客户端调用服务端,服务端通过本地的健康服务列表去使用负载均衡算法调用目标实例;常见的 nginx 就是服务端负载均衡的一种。
-
客户端负载均衡,例如在 Sping Cloud 中使用的 Ribbon 或者 Loadbalancer 组件,它保存有一份服务信息,Ribbon 或者 Loadbalancer 组件在这里就相当于是客户端的身份了,它可以自己选择发送到哪一个服务实例。
其实它们的区别仅仅是在谁使用那份服务器信息
去调用服务实例而已。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)