负载均衡策略有哪些?在实际应用中,我们可能不想仅仅是把客户端的服务请求平均地分配给内部服务器,而不管服务器是否宕机。而是想使Pentium III服务器比Pentium II能接受更多的服务请求,一台处理服务请求较少的服务器能分配到更多的服务请求,出现故障的服务器将不再接受服务请求直至故障恢复等等。

负载均衡策略有哪些

选择合适的策略,使多个设备能很好的共同完成任务,消除或避免现有网络负载分布不均、数据流量拥挤反应时间长的瓶颈。在各负载均衡方式中,针对不同的应用需求,在OSI参考模型的第二层负载均衡、三层负载均衡、、七层的负载均衡都有相应的负载均衡策略。

负载均衡策略的优劣及其实现的难易程度有两个关键因素:一、负载均衡算法,二、对网络系统状况的检测方式和能力。

考虑到服务请求的不同类型、服务器的不同处理能力以及随机选择造成的负载分配不均匀等问题,为了更加合理的把负载分配给内部的多个服务器,就需要应用相应的能够正确反映各个服务器处理能力及网络状态的负载均衡算法:

轮循均衡(Round Robin):每一次来自网络的请求轮流分配给内部中的服务器,从1至N然后重新开始。此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。

权重轮循均衡(Weighted Round Robin):根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。例如:服务器A的权值被设计成1,B的权值是 3,C的权值是6,则服务器A、B、C将分别接受到10%、30%、60%的服务请求。此种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。

随机均衡(Random):把来自网络的请求随机分配给内部中的多个服务器。

权重随机均衡(Weighted Random):此种均衡算法类似于权重轮循算法,不过在处理请求分担时是个随机选择的过程。

响应速度均衡(Response Time):负载均衡设备对内部各服务器发出一个探测请求(例如Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。此种均衡算法能较好的反映服务器的当前运行状态,但这最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。

最少连接数均衡(Least Connection):客户端的每一次请求服务在服务器停留的时间可能会有较大的差异,随着工作时间加长,如果采用简单的轮循或随机均衡算法,每一台服务器上的连接进程可能会产生极大的不同,并没有达到真正的负载均衡。最少连接数均衡算法对内部中需负载的每一台服务器都有一个数据记录,记录当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。此种均衡算法适合长时处理的请求服务,如FTP。

处理能力均衡:此种均衡算法将把服务请求分配给内部中处理负荷(根据服务器CPU型号、CPU数量、内存大小及当前连接数等换算而成)最轻的服务器,由于考虑到了内部服务器的处理能力及当前网络运行状况,所以此种均衡算法相对来说更加精确,尤其适合运用到第七层(应用层)负载均衡的情况下。

DNS响应均衡(Flash DNS):在Internet上,无论是HTTP、FTP或是其它的服务请求,客户端一般都是通过域名解析来找到服务器确切的IP地址的。在此均衡算法下,分处在不同地理位置的负载均衡设备收到同一个客户端的域名解析请求,并在同一时间内把此域名解析成各自相对应服务器的IP地址(即与此负载均衡设备在同一位地理位置的服务器的IP地址)并返回给客户端,则客户端将以最先收到的域名解析IP地址来继续请求服务,而忽略其它的IP地址响应。在种均衡策略适合应用在全局负载均衡的情况下,对本地负载均衡是没有意义的。

尽管有多种的负载均衡算法可以较好的把数据流量分配给服务器去负载,但如果负载均衡策略没有对网络系统状况的检测方式和能力,一旦在某台服务器或某段负载均衡设备与服务器网络间出现故障的情况下,负载均衡设备依然把一部分数据流量引向那台服务器,这势必造成大量的服务请求被丢失,达不到不间断可用性的要求。所以良好的负载均衡策略应有对网络故障、服务器系统故障、应用服务故障的检测方式和能力:

Ping侦测:通过ping的方式检测服务器及网络系统状况,此种方式简单快速,但只能大致检测出网络及服务器上的操作系统是否正常,对服务器上的应用服务检测就无能为力了。

TCP Open侦测:每个服务都会开放某个通过TCP连接,检测服务器上某个TCP端口(如Telnet的23口,HTTP的80口等)是否开放来判断服务是否正常。

HTTP URL侦测:比如向HTTP服务器发出一个对main.html文件的访问请求,如果收到错误信息,则认为服务器出现故障。

负载均衡策略的优劣除受上面所讲的两个因素影响外,在有些应用情况下,我们需要将来自同一客户端的所有请求都分配给同一台服务器去负担,例如服务器将客户端注册、购物等服务请求信息保存的本地数据库的情况下,把客户端的子请求分配给同一台服务器来处理就显的至关重要了。有两种方式可以解决此问题,一是根据IP地址把来自同一客户端的多次请求分配给同一台服务器处理,客户端IP地址与服务器的对应信息是保存在负载均衡设备上的;二是在客户端浏览器 cookie内做独一无二的标识来把多次请求分配给同一台服务器处理,适合通过代理服务器上网的客户端。

还有一种路径外返回模式(Out of Path Return),当客户端连接请求发送给负载均衡设备的时候,中心负载均衡设备将请求引向某个服务器,服务器的回应请求不再返回给中心负载均衡设备,即绕过流量分配器,直接返回给客户端,因此中心负载均衡设备只负责接受并转发请求,其网络负担就减少了很多,并且给客户端提供了更快的响应时间。此种模式一般用于HTTP服务器群,在各服务器上要安装一块虚拟网络适配器,并将其IP地址设为服务器群的VIP,这样才能在服务器直接回应客户端请求时顺利的达成三次握手

负载均衡策略_负载均衡策略相关推荐

  1. SEO优化的策略_网站seo策略

    现在SEO优化成为了每一个企业进行网络营销策划的重要命题,如何做好SEO优化更是企业经常在思考的问题,SEO优化做得好,不仅可以减少企业推广的费用,更是有效的提高了推广的效果,一个好的SEO优化策略应 ...

  2. php负载均衡原理_负载均衡的原理(通俗理解)

    简单的来说, 假设,你在放洗脚水,并且,当前你只有一洗脚盆.那么,你的洗脚水不管有多少,你最多就能装一个洗脚盆的 这个就是,单服务器应用场景,你的流量就是洗脚水, 然后,你娶了一个媳妇, 这个时候,你 ...

  3. java 一致性hash算法 均衡分发_负载均衡-基础-一致性哈希算法及java实现

    1 /** 2 * 一致性hash 的java 实现3 *@authorluoqiang4 * @data 2016/11/085 */ 6 public classConsistencyHash { ...

  4. 幽灵交易策略_幽灵交易者策略(附源代码)

    NO1 . 前言 正如幽灵交易者的名字,该策略的核心思路是,在真实下单交易之前,先虚拟出一个交易,如果这个虚拟的交易是亏损的,那么下一次才启动真实的交易. NO2 . 策略简介 该策略思路源自于交易者 ...

  5. mysql数据库恢复策略_数据库系统恢复策略概述

    1 前言 尽管计算机系统的可靠性在不断提高,数据库系统中也采用了很多措施和方法保证数据库系统的正确运行,但仍不可避免系统出现这样或那样的错误,导致数据库数据丢失或破坏. 所以,数据库系统必须采取相应的 ...

  6. 商品cta策略_商品CTA策略分享

    1.CTA市场规模:全球数据 2.市场规模方面,根据比较权威的Barclayhedge的统计,CTA市场规模经历井喷. 1980-2016年,全球资产规模从仅仅3亿美元增加到3370亿美元. 值得注意 ...

  7. python写因子策略_单因子策略进阶版 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码,以股息率作为择股条件,自动筛选出股息率前十名的股... - 雪球...

    来源:雪球App,作者: 爱喝豆汁的投资者,(https://xueqiu.com/2680567071/130470562) 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码, ...

  8. delta对冲策略_期权套期保值策略分析:以动态DELTA中性对冲为例

    期权套期保值策略多种多样,笔者通过探讨在期权套保中的要素选择和实际操作中应注意的问题,并以最复杂的动态delta中性对冲策略为例,向投资者展示期权套期保值的具体过程,以加深投资者对期权套保的了解. 期 ...

  9. 负载策略_面试官:讲一下什么是负载均衡,什么是轮询策略随机策略哈希策略

    什么是负载均衡? 先举个例子吧.以超市收银为例,假设现在只有一个窗口.一个收银员: 一般情况下,收银员平均 2 分钟服务一位顾客,10 分钟可以服务 5 位顾客:到周末高峰期时,收银员加快收银,平均 ...

最新文章

  1. VI打开和编辑多个文件的命令
  2. 黄聪:VirtualBox 安装ghost版windows XP
  3. SAP-ABAP DESCRIBE FIELD 用法
  4. DOM(二)——XML DOM
  5. unity全栈开发是什么意思_unity游戏公司面试问题总结
  6. [转贴]网页及其控件的触发事件
  7. Mysql中的一绡规范约束,摘自《阿里巴巴 Java 开发手册》
  8. 【Java】5 个刁钻的 String 面试题
  9. C语言子程序调用的入口参数和出口参数,C语言与DOS系统接口技术
  10. 安装Reporting Service即时报表模型
  11. pyqsplitter 保持一个窗口不能拖动_Axure教程:左侧导航如何自适应浏览器窗口高度?...
  12. 树莓派如何接硬盘_利用树莓派和闲置硬盘,搭建起家中的个人网盘
  13. 《STM32》F103C8T6最小系统
  14. 投资银行业务法规汇编----仅供学习
  15. Android5.1开机LOGO与开机动画【转】
  16. 超市库存java管理系统_Java案例:超市库存管理系统
  17. Ubuntu18.04添加vim配置
  18. python中 d是什么意思_python里d是什么意思
  19. C7:如何使用JEPG Simulation进行ColorTuning?
  20. API的防篡改和防重放机制

热门文章

  1. SVD理论以及Python实现
  2. Java使用内部类的意义
  3. LeetCode:1. Two Sum
  4. 盛佳:搜索是有目的的发现,发现是无目的的搜索
  5. 数据库路由中间件MyCat - 源代码篇(7)
  6. 北京君正集成电路的Newton平台--穿戴式
  7. javaweb里边的重定向与转发的区别
  8. BZOJ 3504: [Cqoi2014]危桥 [最大流]
  9. ubuntu安装高版本ruby
  10. 图解MyEclipse用DB Browser连接四种数据库