一、前言
第一次听说负载均衡是在大三,当时对这个没有太大的兴趣,到后来大四找工作面试,也零星的听别人提起过一些,可能因为是校招吧,对现在流行的技术了解的不是很多,到现在工作了,要用到SpringBoot、Dubbo等各种框架,要从头开始学起,要把很多新的知识转化成自己理解的内容。
二、负载均衡简介
参考: Dubbo官方文档中对负载均衡的介绍
负载均衡职责是将网络请求,或者其他形式的负载“均摊”到不同的机器上。避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载。在为高负载服务器分流的同时,还可以避免资源浪费,一举两得。
负载均衡可分为软件负载均衡和硬件负载均衡。在我们日常开发中,大多遇到的都是软件负载均衡,比如 Nginx。在 Dubbo 中,也有负载均衡的概念和相应的实现。Dubbo 需要对服务消费者的调用请求进行分配,避免少数服务提供者(生产者)负载过大。服务提供者负载过大,会导致部分请求超时。因此将负载均衡到每个服务提供者上,是非常必要的。Dubbo 提供了4种负载均衡实现,分别是基于权重随机算法的 RandomLoadBalance、基于最少活跃调用数算法的 LeastActiveLoadBalance、基于 hash 一致性的 ConsistentHashLoadBalance,基于加权轮询算法的 RoundRobinLoadBalance。
下一节将逐个分析Dubbo的4种负载均衡的实现。