彻底揭秘负载均衡算法与实现!深入剖析负载均衡核心

Posted 架构之美

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了彻底揭秘负载均衡算法与实现!深入剖析负载均衡核心相关的知识,希望对你有一定的参考价值。


-     前言     -


记得同事曾说过一个故事:在他刚工作的时候,他同事有一天兴冲冲的跑到公司说,你们知道吗,公司请了个大牛。大牛?对,那人会写AJAX!哇,真是大牛啊,跟着他,可以学不少东西啊。我听了笑了,但有点难以理解,因为现在几乎只要是一个开发,都会写AJAX,怎么写个AJAX就算大牛呢?


后来我明白了,3 年前高深莫测的技术到现在变得普普通通,不足为奇。就像我们今天要讲的负载均衡,过去负载均衡只有大牛才能玩转,但是到今天,一个小开发都可以聊上几句。现在,我们就来简单聊聊负载均衡。


彻底揭秘负载均衡算法与实现!深入剖析负载均衡核心

-     负载均衡的维度     -


从负载均衡设备的角度来看,分为硬件负载均衡和软件负载均衡:


  • 硬件负载均衡:比如最常见的F5,还有Array等,这些负载均衡是商业的负载均衡器,性能比较好,毕竟他们就是为了负载均衡而生的,背后也有非常成熟的团队,可以提供各种解决方案,但是价格比较昂贵,所以没有充足的理由和充足的预算是不会考虑的。


  • 软件负载均衡:包括我们耳熟能详的nginx、LVS、Tengine(阿里对Nginx进行的改造)等。优点就是成本比较低,但是也需要有比较专业的团队去维护,要自己去踩坑,去DIY。


从负载均衡的技术角度来看,分为服务端负载均衡和客户端负载均衡:


  • 服务端负载均衡:当我们访问一个服务,请求会先到另外一台服务器,然后这台服务器,会把请求分发到提供这个服务的服务器。当然如果只有一台服务器,那好说,直接把请求给那一台服务器就可以了,但是如果有多台服务器呢?这时候,就会根据一定的算法选择一台服务器。


  • 客户端负载均衡:客户端服务均衡的概念貌似是有了服务治理才产生的,简单的来说,就是在一台服务器上维护着所有服务的ip,名称等信息,当我们在代码中访问一个服务,是通过一个组件访问的,这个组件会从那台服务器上取到所有提供这个服务的服务器的信息,然后通过一定的算法,选择一台服务器进行请求。


从负载均衡的算法来看,又分为随机、轮询、哈希、最小压力,当然可能还会加上权重的概念,负载均衡的算法就是本文的重点了。


1、随机

 
   
   
 

public class Servers {

    public List<String> list = new ArrayList<>() {

        {

            add("192.168.1.1");

            add("192.168.1.2");

            add("192.168.1.3");

        }

    };

}

以上是关于彻底揭秘负载均衡算法与实现!深入剖析负载均衡核心的主要内容,如果未能解决你的问题,请参考以下文章

深度剖析HBase负载均衡和性能指标

剖析HBase负载均衡和性能指标

深度剖析HBase负载均衡和性能指标

深入剖析 RocketMQ 源码 - 负载均衡机制

深入剖析 RocketMQ 源码 - 负载均衡机制

负载均衡算法怎么实现?看这篇就够了!