`
足至迹留
  • 浏览: 492386 次
  • 性别: Icon_minigender_1
  • 来自: OnePiece
社区版块
存档分类
最新评论

名词解释: 负载均衡load balance

阅读更多
负载均衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。

使用带有负载均衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性(HA)。负载均衡服务通常是由专用软件和硬件来完成。

基于互联网的服务
负载均衡最重要的一个应用是利用多台服务器提供单一服务,这种方案有时也称之为server farm。通常,负载均衡主要应用于Web网站,大型的Internet Relay Chat网络,高流量的文件下载网站,NNTP(Network News Transfer Protocol)服务和DNS服务。现在负载均衡器也开始支持数据库服务,称之为数据库负载均衡器。

对于互联网服务,负载均衡器通常是一个软件程序,这个程序侦听一个外部端口,互联网用户可以通过这个端口来访问服务,而作为负载均衡器的软体会将用户的请求转发给后台内网服务器,内网服务器将请求的响应返回给负载均衡器,负载均衡器再将响应发送到用户,这样就向互联网用户隐藏了内网结构,阻止了用户直接访问后台(内网)服务器,使得服务器更加安全,可以阻止对核心网络栈和运行在其它端口服务的攻击。

当所有后台服务器出现故障时,有些负载均衡器会提供一些特殊的功能来处理这种情况。例如转发请求到一个备用的负载均衡器、显示一条关于服务中断的消息等。负载均衡器使得IT团队可以显著提高容错能力。它可以自动提供大量的容量以处理任何应用程序流量的增加或减少。

架构
高性能系统通常会使用多层负载均衡。另外专用的硬件负载均衡器以及纯软件负载均衡器,包括开源的,例如Apache Web服务器的mod proxy balancer扩展,nginx,Varnish和Pound反向代理和负载均衡器。使用Gearman将合适的计算任务分发给多台计算机,如此大量的任务就可以更快的完成了。
对于一个多层次架构体系,在负载均衡器或网络分发器后面有两种设计,术语称之为Bowties和Stovepipes。Stovepipe设计中,事务是从顶部分发的,然后从一个固定通道通过一系列硬件和软件设备,到达最终目的地。如果使用Bowties设计,在每一层中事务处理有多条路径可供选择。在事务处理的网络结构中可能会是Stovepipes,也可以是Bowties,或者根据每一层的实际需求采用杂货构架。

持续性【会话共享】
负载均衡器需要处理的一个重要问题是:如何保存用户会话?如果会话信息保存在后台服务器,用户接下来的请求可能会被分配到不同的后台服务器,此时用户会话就无法继续。负载均衡器可以缓存用户会话,然后将用户请求分发到不同的后台服务器。但是这将带来负载均衡器的负载问题。

一个解决方案是将一个用户会话中的所有请求都发送到同一个后台服务器。即persistence或stickiness。这个方法的不足之处在于无法容错failover,如果后台服务器故障,它提供的会话就会无法取得,任何依赖于它的会话都会丢失。这个问题通常与数据中心有关,尽管Web Service是非连结导向的,但是后端的数据库先天上还是连结导向的。

第二个方案是依据用户名,客户端IP来分配提供服务的服务器,也可以随机分配。因为客户可能是通过DHCP,NAT或者Web代理来连接Internet的,其IP地址可能经常变换,这使得这个方案的服务质量无法保障。随机分配由负载均衡器将会话信息存储保存。如果负载均衡器被替换或故障,这些信息可能会丢失;另外(负载均衡器)负载较高的时候,为保证分配表空间不会被耗尽,超时的分配信息必须被删除。随机分配方法也要求客户会维持会话状态,如果客户浏览器禁用了cookies的功能,就会引起问题。优秀的负载均衡器会使用多种持续(会话保持)技术,以避免其中某些不可以用时引起故障。

另外一个方案是将每一会话信息保存到一个数据库中。由于这个方案会增加数据库的负载,所以这个方案对性能的提高并不好。数据库最好是用来存储会话时间比较长的会话数据。为了避免数据库出现单点故障,并且提高其扩展性,数据库通常会复制到多台服务器上,通过负载均衡器来分发请求到数据库服务器上。微软ASP.net中的状态服务器技术就是一个典型的会话数据库的例子。集群中的所有服务器都将它们的会话信息保存到状态服务器上,同时它们可以向状态服务器查询会话数据。

幸运的是有一种更有效的方法,通常客户浏览器可以保存用户的每个会话信息。例如使用浏览器cookie,对数据加密并加上一个时间戳就可以保证安全了;URL重写。将会话信息存储在客户端通常是首选方案,因为这样负载均衡器就可以灵活的选择后台服务器来处理用户请求。然而这种方法不适应于一些较复杂的电子商务,因为电子商务中会话数据较大,而且需要服务器需要经常重新处理会话信息;与此同时URL重写由于用户可以改变会话流数据而存在安全问题;加密客户端cookies也一直存在着安全方面的争议,除非所有的会话都通过HTTPS,但是HTTPS很容易遭到中间人攻击。

与故障转移的关系
负载均衡对通讯链路的冗余是非常有用的。例如,一家公司可能有多条互联网接入线路以保证某一条故障时仍可以正常接入互联网。
故障转移的架构意味着一条连接正常使用,另外一条连接作为备用,当第一条出现故障时才会被启用。

使用负载均衡器,两条(多条)连接可以都投入使用。有一个设备或者程序实时监控着所有连接的连通性,并且对正在发送的包进行选路。同时使用多条连接可以增加带宽。
许多电信公司在其内部网络或连接到外部网络(其它电信网络)都有多条线路可以使用。为避免某条链路出现网络堵塞,最小化连接其它网络的费用或者提高网络的可靠性,它们使用负载均衡将流量从一条链路转移到另一条链路。
负载均衡经常被用于实现故障转移-当一个或多个组件出现故障时能持续提供服务这些组件都在持续监控(例如:Web服务器通过请求一个已知页面来监控是否正常工作)中,当一个组件没有响应,负载均衡器就会发现并不再向其发送数据。同样当一个组件重新上线,负载均衡器会重新开始向其发送数据。为了能够如前所述正常工作,负载均衡体系中至少要有一个冗余服务。采用一用一备方案(一个组件提供服务,一个备用,当主组件故障时备用组件将接管继续提供服务)比故障转移方案更加经济,灵活。有些类型的RAID系统使用的热备份功能跟这是类似的作用。

分享到:
评论

相关推荐

    大型网站架构系列:负载均衡详解

    3. 云负载均衡器:如AWS Elastic Load Balancer、Google Cloud Load Balancer,易于管理和扩展,适用于云计算环境。 五、负载均衡在大型网站架构中的应用 大型网站通常采用分布式系统架构,通过负载均衡技术将用户...

    balance轻松实施负载均衡方案

    ### Balance 实施负载均衡方案详解 #### 一、概述 在现代互联网技术中,负载均衡是一种常见的技术手段,用于优化网络资源的分配,提高服务的可靠性和响应速度。`Balance`是一款开源工具,专为简化负载均衡配置过程...

    Apache Dubbo:Dubbo服务治理:负载均衡与容错机制

    <dubbo:loadbalance value="random"/> </dubbo:reference> ``` 在此示例中,`demoService`服务引用被配置为采用随机负载均衡策略。这意味着每次调用`demoService`时,Dubbo将随机选择一个服务实例进行调用,从而...

    高可用:负载均衡的常见算法有哪些?

    ### 基于性能的负载均衡(Performance-Based Load Balancing) 这种算法会实时监控服务器的性能指标(如CPU使用率、内存使用率等),并据此做出调度决策。这能确保高效率地利用资源,但实现起来较为复杂。 ### 面试...

    opensips与两台freeswitch负载均衡

    在构建大型VoIP系统时,负载均衡是至关重要的,它能确保服务的高可用性和可扩展性。"opensips与两台freeswitch负载均衡"的主题聚焦于如何使用OpenSIPS作为负载均衡器来管理两台Freeswitch服务器,以实现Freeswitch的...

    实用负载均衡技术网站性能优化攻略.pdf

    3. 云负载均衡:使用云计算平台提供的负载均衡服务,例如 AWS ELB、Azure Load Balancer 等。 在网站性能优化方面,负载均衡技术可以与其他技术结合使用,例如: 1. 缓存技术:使用缓存服务器来存储常用的数据,以...

    Oracle RAC数据库连接负载均衡配置研究.pdf

    4. 客户端连接负载均衡:客户端连接负载均衡主要通过在客户端的 tnsnames.ora 配置文件中设置参数 load_balance=yes 来实现。 5. 服务器端连接负载均衡:服务器端连接负载均衡主要由服务器监听器(Listener)来实现...

    负载均衡

    8. **工具**:在实际应用中,可能会用到各种负载均衡工具,如AWS的ELB(Elastic Load Balancing),Google Cloud的Cloud Load Balancing,或是开源的haproxy、keepalived等。 9. **Python在负载均衡中的应用**:...

    node-loadbalance:蒸馏负载平衡引擎的集合

    负载均衡 这是(最希望的)最精简形式的负载平衡引擎的集合。 目标是创建一种高度可重用的实现,该实现对用户的影响尽可能小。安装使用可以: npm i loadbalance const loadbalance = require ( 'loadbalance' )用法...

    F5负载均衡配置

    * Load Balancing Method:负载均衡算法,包括轮询(RoundRobin)、最少连接(Least Connection)等 * Health Monitors:健康检测类型,包括geteway_icmp、自定义检测端口类型等 四、F5负载均衡应用场景: * 将...

    Java集群与负载均衡

    5. **云服务负载均衡**:云提供商如AWS的ELB(Elastic Load Balancing)、Google Cloud的Cloud Load Balancing提供了易于管理和扩展的负载均衡服务。 三、Java集群与负载均衡结合 1. **配合使用**:Java集群和负载...

    BBO-Load-Balancing.zip_BBO算法_智能matlab_网络负载均衡_负载均衡 matlab_负载均衡 网络

    在给定的标题“BBO-Load-Balancing.zip_BBO算法_智能matlab_网络负载均衡_负载均衡 matlab_负载均衡 网络”和描述中,我们聚焦于一种特定的优化策略——BBO(Black Hole Optimization)算法,并且它是通过MATLAB环境...

    pyzbar库PyInstallerImportError: Failed to load dynlib/dll问题解决

    它依赖于C++库ZBar,因此在某些情况下,Python解释器可能无法正确地加载ZBar的动态链接库(dll或dylib)。这种问题通常出现在使用PyInstaller将Python脚本转换为独立可执行文件时,因为PyInstaller不能自动处理所有...

    《实用负载均衡技术:网站性能优化攻略》.rar

    7. **云平台负载均衡**:在云计算环境中,云服务提供商通常提供内置的负载均衡解决方案,如AWS的ELB(Elastic Load Balancing)、Google Cloud的Cloud Load Balancing等。这些服务可以自动扩展,适应流量变化,并且...

    负载均衡集群项目服务端代码

    9. **云服务集成**:现代负载均衡解决方案经常与云服务提供商集成,如AWS的ELB(Elastic Load Balancer)、Google Cloud的Cloud Load Balancing或Azure的Application Gateway。 10. **安全与性能优化**:负载均衡器...

    DubboRouterDemo:dubbo重写loadbalance实现灰度发布demo

    DubboRouterDemodubbo重写loadbalance实现灰度发布demo项目背景由于项目中使用的是dubbo,2B多租户系统的业务中,客户需要分多版本的需求,以及dubbo服务部署需要灰度的小白鼠,在此背景下故需要dubbo服务的灰度发布...

    阿里云-负载均衡服务API手册.pdf

    阿里云的负载均衡服务(Server Load Balancer)是一种网络服务,旨在提高应用的可用性和性能。它通过设置虚拟服务地址,将多个位于同一地域的云服务器资源整合成一个服务池,接收并分发来自客户端的网络请求。该服务...

    dubbo 配置 loadbalance 不生效?撸一把源码(csdn)————程序.pdf

    在Dubbo框架中,`loadbalance`配置是用来指定负载均衡策略的,允许用户自定义或者选择内置的策略,如Random、RoundRobin等,以决定如何在服务提供者之间分配消费者请求。然而,当用户报告`loadbalance`配置不生效时...

    Cisco负载均衡实施方案.rar

    【描述】:“Cisco负载均衡实施方案”涉及到的实践操作可能包括设置和配置Cisco的负载均衡设备或软件,如Cisco Application Policy Infrastructure Controller (APIC)、Global Load Balancer (GLB)或Cisco Local ...

    深信服负载均衡AD5.3用户手册

    负载均衡(Load Balancing, LB)是一种网络技术,用于在多台服务器之间分配流量,以优化资源利用、最大化吞吐量、最小化响应时间,并提高系统的可用性和可靠性。负载均衡器可以是硬件设备或软件应用,它作为客户端...

Global site tag (gtag.js) - Google Analytics