zoukankan      html  css  js  c++  java
  • 什么是负载均衡

    什么是负载均衡?
    先举个例子吧。以超市收银为例,假设现在只有一个窗口、一个收银员:

    一般情况下,收银员平均 2 分钟服务一位顾客,10 分钟可以服务 5 位顾客;
    到周末高峰期时,收银员加快收银,平均 1 分钟服务一位顾客,10 分钟最多服务 10 位顾客,也就是说一个顾客最多等待 10 分钟;
    逢年过节,顾客数量激增,一下增加到 30 位顾客,如果仍然只有一个窗口和一个收银员,那么所有顾客就只能排队等候了,一个顾客最多需要等待 30 分钟。这样购物体验,就非常差了。

    那有没有解决办法呢?

    当然有。那就是新开一个收银窗口,每个收银窗口服务 15 个顾客,这样最长等待时间从30 分钟缩短到 15 分钟。但如果,这两个窗口的排队顾客数严重不均衡,比如一个窗口有5 个顾客排队,另一个窗口却有 25 个顾客排队,就不能最大化地提升顾客的购物体验。

    所以,尽可能使得每个收银窗口排队的顾客一样多,才能最大程度地减少顾客的最长排队时间,提高用户体验。

    看完这个例子,你是不是想到了一句话“不患寡,而患不均”?这,其实就是负载均衡的基本原理。

    通常情况下,负载均衡可以分为两种:

    一种是请求负载均衡,即将用户的请求均衡地分发到不同的服务器进行处理;
    另一种是数据负载均衡,即将用户更新的数据分发到不同的存储服务器。
    分布式系统中,服务请求的负载均衡是指,当处理大量用户请求时,请求应尽量均衡地分配到多台服务器进行处理,每台服务器处理其中一部分而不是所有的用户请求,以完成高并发的请求处理,避免因单机处理能力的上限,导致系统崩溃而无法提供服务的问题。

    比如,有 N 个请求、M 个节点,负载均衡就是将 N 个请求,均衡地转发到这 M 个节点进行处理。

    服务请求的负载均衡方法
    通常情况下,计算机领域中,在不同层有不同的负载均衡方法。比如,从网络层的角度,通常有基于 DNS、IP 报文等的负载均衡方法;在中间件层(也就是我们专栏主要讲的分布式系统层),常见的负载均衡策略主要包括轮询策略、随机策略、哈希和一致性哈希等策略。今天,我着重与你分析的就是,中间件层所涉及的负载均衡策略。 

    A.轮询策略
    轮询策略是一种实现简单,却很常用的负载均衡策略,核心思想是服务器轮流处理用户请求,以尽可能使每个服务器处理的请求数相同。生活中也有很多类似的场景,比如,学校宿舍里,学生每周轮流打扫卫生,就是一个典型的轮询策略。

    在负载均衡领域中,轮询策略主要包括顺序轮询和加权轮询两种方式。

    首先,我们一起看看顺序轮询。假设有 6 个请求,编号为请求 1~6,有 3 台服务器可以处理请求,编号为服务器 1~3,如果采用顺序轮询策略,则会按照服务器 1、2、3 的顺序轮流进行请求。 

    如表所示,将 6 个请求当成 6 个步骤:

    1. 请求 1 由服务器 1 处理;
    2. 请求 2 由服务器 2 进行处理。
    3. 以此类推,直到处理完这 6 个请求。

  • 相关阅读:
    UI层复习笔记
    async 的三大返回类型
    用scikit-learn进行LDA降维
    关于解决python线上问题的几种有效技术
    ASP.NET Core MVC/WebAPi 模型绑定探索
    浅谈 Fragment 生命周期
    vue2.0实践的一些细节
    Linux----------Mysql死锁
    Linux----------容器docker file
    Linux----------常用容器命令
  • 原文地址:https://www.cnblogs.com/qingjiawen/p/15111313.html
Copyright © 2011-2022 走看看