看了网上几篇LVS的调度算法讲解,感觉都讲的不错,但是还有些不明确的地方,为了方便小白更好的学习理解,特此将LVS官方网站对LVS十大调度算法的讲解翻译如下,以方便英语不好的同学自行查阅。
LVS官网:http://www.linuxvirtualserver.org/
LVS相关文档原文:http://www.linuxvirtualserver.org/docs/scheduling.html

Linux虚拟服务器中的作业调度算法

本页介绍在Linux虚拟服务器中实现的作业调度算法。

  • 轮询调度
  • 加权轮询调度
  • 最小连接调度
  • 加权最小连接调度
  • 基于局部性的最小连接调度
  • 基于局部性的最小连接复制调度
  • 目的哈希调度
  • 源哈希调度
  • 最短期望延迟调度
  • 从不排队调度

轮询调度

轮询调度算法将每个传入的请求发送到其列表中的下一个服务器。因此,假设在三服务器集群(服务器A、B和C)中,请求1将转到服务器A,请求2将转到服务器B,请求3将转到服务器C,请求4将转到服务器a,从而完成服务器的循环(轮询)。它将所有真实服务器视为平等的,而不考虑每个服务器活跃的传入连接数或响应时间。与传统的轮询DNS相比,虚拟服务器(译者注:虚拟服务器即LVS)提供了一些优势。轮询DNS将一个域名解析为不同的IP地址,调度粒度是基于主机的,DNS查询的缓存阻碍了基本算法,这些因素导致真实服务器之间存在显著的动态负载不平衡。虚拟服务器的调度粒度是基于网络连接的,由于其精细的调度粒度,它远优于轮询DNS。
(译者注:轮询DNS即类似CDN的方式,这里官网是想说明由于浏览器缓存的缘故,实际上CDN并不能达到预期的负载均衡效果,CDN有其自身作用,但是不能完全代替LVS)

加权轮询调度

加权轮询调度旨在更好地处理具有不同处理能力的服务器。可以为每台服务器分配一个权重,一个表示处理能力的整数值。权重较高的服务器比权重较低的服务器首先接收新连接,权重较高的服务器比权重较低的服务器获得更多连接,权重相等的服务器获得相同连接。例如,真实服务器A、B和C的权重分别为4、3和2,一个好的调度序列将在一个调度顺序(所有权重之和)将会是为AABABCABC。在加权轮询调度的实现中,修改虚拟服务器的规则后,根据服务器的权重生成调度序列。网络连接根据调度序列以轮询方式重定向到不同的真实服务器。
当真实服务器的处理能力不同时,加权轮询调度优于轮询调度。然而,如果请求的负载变化很大,可能会导致真实服务器之间的动态负载不平衡。简言之,大多数需要大量响应的请求可能会被定向到同一台真正的服务器。
实际上,轮询调度是加权轮询调度的一个特例,其中所有的权重都是相等的。

最小连接调度

最小连接调度算法将网络连接定向到具有最少已建立连接数的服务器。这是一种动态调度算法;因为它需要动态计算每个服务器的实时连接数。对于管理一组性能相似的服务器的虚拟服务器,当请求负载变化很大时,最小连接调度有助于平滑分布。虚拟服务器将请求定向到活动连接最少的真实服务器。
乍一看,即使有不同处理能力的服务器,最少的连接调度似乎也能很好地执行,因为更快的服务器将获得更多的网络连接。事实上,由于TCP的等待状态,它不能很好地执行。TCP的等待时间通常为2分钟,在这2分钟内,繁忙的网站通常会收到数千个连接,例如,服务器A的功能是服务器B的两倍,服务器A正在处理数千个请求,并将它们保持在TCP的等待时间状态,但服务器B正在缓慢处理完成其数千个连接。因此,最小连接调度无法在具有不同处理能力的服务器之间实现负载均衡。(译者注:官网这段说明是说真实服务器A有1000个处于TCP等待状态的链接而真实服务器B有1000个处于繁忙状态的链接,按照最小链接调度的算法A和B的负载情况应该相同,但是实际上B的负载要远远高于A)

加权最小连接调度

加权最小连接调度是最小连接调度的超集,您可以在其中为每个真实服务器分配性能权重。权重值较高的服务器在任何时候都会收到更大比例的实时连接。虚拟服务器管理员可以为每台真正的服务器分配一个权重,并为每台服务器安排网络连接,其中每台服务器当前活动连接数的百分比与其权重成比例。默认权重为1。
加权最小连接调度的工作原理如下:
假设有n个真正的服务器,每个服务器i都有权重Wi(i=1,…,n)和活动连接Ci(i=1,…,n),ALL_CONNECTIONS是Ci(i=1,…,n)的总和,下一个网络连接将指向服务器j,其中

(Cj/ALL_CONNECTIONS)/Wj=min{(Ci/ALL_CONNECTIONS)/Wi}(i=1,…,n)

(译者注:这个式子的含义是找到活动链接数除以总权重再除以其自身权重最小的的服务器j)
由于ALL_CONNECTIONS在该查找中是一个常数,因此不需要将Ci除以ALL_CONNECTION,可以根据需要对其进行优化为如下式子:

Cj/Wj=min{Ci/Wi}(i=1,…,n)

(译者注:这个式子的含义是找到活动链接数除以其自身权重最小的的服务器j)
加权最小连接调度算法需要比最小连接更多的除法。为了在服务器处理能力相同的情况下最小化调度开销,最小连接调度算法和加权最小连接调度算法都应该被实施。

基于局部性的最小连接调度

基于局部性的最小连接调度算法用于目标IP负载平衡。它通常用于缓存集群。如果服务器处于活动状态且负载不足,该算法通常会将目的地为IP地址的数据包定向到其服务器。如果服务器过载(其活动连接数大于其权重),并且有一台服务器处于半负载状态,则将加权最少的连接服务器分配给该IP地址。

基于局部性的最小连接复制调度

基于局部性的最小连接复制调度算法也用于目标IP负载平衡。它通常用于缓存集群。它与LBLC调度的不同之处如下:负载平衡器维护从目标到可以为目标服务的一组服务器节点的映射。对目标的请求被分配到目标服务器集中连接最少的节点。如果服务器集中的所有节点都过载,它会在集群中选择一个连接最少的节点,并将其添加到目标服务器集中。如果在指定的时间内未修改服务器集,则会从服务器集中删除负载最大的节点,以避免高度复制。

目的哈希调度

目的哈希调度算法通过根据服务器的目的地IP地址查找静态分配的哈希表,将网络连接分配给服务器。

源哈希调度

源哈希调度算法通过根据服务器的源IP地址查找静态分配的哈希表,将网络连接分配给服务器。

最短期望延迟调度

最短预期延迟调度算法将网络连接分配给具有最短预期延迟的服务器。如果发送到第i台服务器,作业将经历的预期延迟为(Ci+1)/Ui,其中Ci是第i台服务器上的连接数,Ui是第i台服务器的固定服务率(权重)。

从不排队调度

从不排队调度算法采用调度模型。当有空闲服务器可用时,作业将被发送到空闲服务器,而不是等待最快的服务器。当没有空闲服务器可用时,作业将被发送到将其预期延迟最小化的服务器(按照最短预期延迟调度算法计算出的服务器)。

LVS调度算法权威讲解——官方文档翻译相关推荐

  1. GitHub使用入门讲解--官方文档翻译让你最真实了解

    原文链接:点击打开链接 阅读官方文档一方面是最权威的讲解,另一方面又能提高你的英语阅读能力,同时让你有一个进步的满足感,英语基础不好的同学可以结合翻译阅读学习,或者直接观看翻译(下方为翻译) The ...

  2. About HTTP Live Streaming官方文档翻译 [iOS]

    新博客地址:About HTTP Live Streaming官方文档翻译 [iOS] 版权声明:本文为博主原创翻译,如需转载请注明出处. 苹果源文档地址 - 点击这里 About HTTP Live ...

  3. 【iOS官方文档翻译】iOS蓝牙的基本概念

    之前写了[iOS官方文档翻译]iOS的蓝牙连接.数据接收及发送一文,介绍了怎样进行蓝牙通讯,但是很多基本概念没有进行解释,看起来可能有点吃力,所以现在再翻译一篇苹果对官方蓝牙4.0一些基本概念介绍的文 ...

  4. 负载均衡集群介绍、LVS介绍、LVS调度算法、 LVS NAT模式搭建

    负载均衡集群介绍 LVS介绍 lvs的NAT模式介绍 这种模式借助iptables的nat表来实现,用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的服务器上去,这些服务 ...

  5. 欢迎参与 KubeVela 官方文档翻译活动

    来源 | 阿里巴巴云原生公众号 背景 KubeVela v1.0 启用了新的官网架构和文档维护方式,新增功能包括文档版本化控制.i18n 国际化以及自动化流程.但目前 KubeVela 官方文档只有英 ...

  6. UIControl事件---iOS-Apple苹果官方文档翻译

    本系列所有开发文档翻译链接地址: iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 UIControl事件1.UIControlEventTouchDown 单点触摸按 ...

  7. 【KubeVela 官方文档翻译】,欢迎大家踊跃参与

    简介:KubeVela v1.0 启用了新的官网架构和文档维护方式,新增功能包括文档版本化控制.i18n 国际化以及自动化流程.但目前 KubeVela 官方文档只有英文版,这提高了学习和使用 Kub ...

  8. 负载均衡集群介绍LVS介绍LVS调度算法LVS NAT模式搭建

    2019独角兽企业重金招聘Python工程师标准>>> 18.6 负载均衡集群介绍 • 主流开源软件LVS.keepalived.haproxy.nginx等 • 其中LVS属于4层 ...

  9. UIPageControl---iOS-Apple苹果官方文档翻译

    本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 //转载请注明出处--本文永久链接:http://www.cnblogs.com/Ch ...

  10. Python3.2官方文档翻译--异常抛出和自定义异常

    Python3.2官方文档翻译--异常抛出和自定义异常 Python3.2官方文档翻译--异常抛出和自定义异常,有需要的朋友可以参考下. 6.4 抛出异常 Raise语句运行程序员强制抛出一个具体的异 ...

最新文章

  1. python高维向量的可视化_Tensorboard教程:高维向量可视化
  2. How is an SAP OData Batch request handled in the backend
  3. 交叉报表问题 subDataset
  4. ASP.NET MVC3源码下载
  5. leetcode —— 207. 课程表
  6. chart控件做实时曲线显示_基于GDI+技术开发工业仪表盘控件
  7. c语言学习-编写函数求x的n次方的值
  8. Java发令枪ConcurrentExecutor之控制线程数,并发数
  9. CF 917A The Monster 【括号匹配】
  10. python 写入excel 效率_python各种excel写入方式的速度对比
  11. WPF 设置TextBox为空时,背景为文字提示。
  12. MATLAB 50行代码绘制超好看的旋转九边形
  13. 羊毛之家,青龙脚本,几乎全部可用
  14. 搞深度学习框架的那帮人,不是疯子,就是骗子
  15. SCM系统是什么?供应链管理系统有哪些优势?
  16. 【易语言】大漠插件使用
  17. js中new一个对象的过程
  18. Dubblo +zookeep+sprinboot注册发现 (二)来源与狂神
  19. 第2节:支持向量机SVM即numpy
  20. Android工具开发一(清除手机所有app缓存)

热门文章

  1. 三个多月、40余场面试浓缩为6000字
  2. LeetCode刷题——11. 盛最多水的容器
  3. 人类视觉计算理论经典著作,豆瓣评分9.7,中文版惊鸿面世
  4. 阿里云线上案例分析:网格应用存活状态异常
  5. 体验引擎:游戏设计全景探秘
  6. 你是否需要购买网站重构?
  7. 87相似标准形08——Jordan标准形
  8. SQL Sever — 设置外键+组合键(唯一性约束)、修改取值范围、设置某列的默认值
  9. L1-055 谁是赢家 (10 分)—团体程序设计天梯赛
  10. 【Alpha】“北航社团帮”小程序v1.0发布声明