负载均衡—算法/策略
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
一、四层负载均衡 vs 七层负载均衡
1、四层负载均衡(目标地址和端口交换)
主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。以常见的 TCP 为例,负载均衡设备在接收到第一个来自客户端的 SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标 IP 地址进行修改(改为后端服务器 IP),直接转发给该服务器。TCP 的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。实现四层负载均衡的软件有:
- F5:硬件负载均衡器,功能很好,但是成本很高。 l
- vs:重量级的四层负载软件。
- nginx:轻量级的四层负载软件,带缓存功能,正则表达式较灵活。
- haproxy:模拟四层转发,较灵活。
2、七层负载均衡(内容交换)
所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容, 再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。七层应用负载的好处,是使得整个网络更智能化。例如访问一个网站的用户流量,可以通过七层的方式,将对图片类的请求转发到特定的图片服务器并可以使用缓存技术;将对文字类的请求可以转发到特定的文字服务器并可以使用压缩技术。实现七层负载均衡的软件有:
- haproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移;
- nginx:只在 http 协议和 mail 协议上功能比较好,性能与 haproxy 差不多;
- apache:功能较差
- Mysql proxy:功能尚可。
二、负载均衡算法/策略
1、轮循均衡(RoundRobin)
每一次来自网络的请求轮流分配给内部中的服务器,从 1 至 N 然后重新开始。此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。
2、权重轮循均衡(WeightedRoundRobin)
根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。例如:服务器 A 的权值被设计成 1,B 的权值是 3,C 的权值是 6,则服务器 A、B、C 将分别接受到 10%、30%、60%的服务请求。此种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。
3、随机均衡(Random)
把来自网络的请求随机分配给内部中的多个服务器。
4、权重随机均衡(WeightedRandom)
此种均衡算法类似于权重轮循算法,不过在处理请求分担时是个随机选择的过程。
5、响应速度均衡(ResponseTime探测时间)
负载均衡设备对内部各服务器发出一个探测请求(例如 Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。此种均衡算法能较好的反映服务器的当前运行状态,但这最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。
6、最少连接数均衡
最少连接数均衡算法对内部中需负载的每一台服务器都有一个数据记录,记录当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。此种均衡算法适合长时处理的请求服务,如FTP。
7、处理能力均衡
此种均衡算法将把服务请求分配给内部中处理负荷(根据服务器 CPU 型号、CPU 数量、内存大小 及当前连接数等换算而成)最轻的服务器,由于考虑到了内部服务器的处理能力及当前网络运行 状况,所以此种均衡算法相对来说更加精确,尤其适合运用到第七层(应用层)负载均衡的情况 下。
8、DNS响应均衡(FlashDNS)
在此均衡算法下,分处在不同地理位置的负载均衡设备收到同一个客户端的域名解析请求,并在同一时间内把此域名解析成各自相对应服务器的 IP 地址并返回给客户端,则客户端将以最先收到 的域名解析 IP 地址来继续请求服务,而忽略其它的 IP 地址响应。在种均衡策略适合应用在全局负载均衡的情况下,对本地负载均衡是没有意义的。
9、哈希算法
一致性哈希一致性 Hash,相同参数的请求总是发到同一提供者。当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。
10、IP 地址散列(保证客户端服务器对应关系稳定)
通过管理发送方 IP 和目的地 IP 地址的散列,将来自同一发送方的分组(或发送至同一目的地的分 组)统一转发到相同服务器的算法。当客户端有一系列业务需要处理而必须和一个服务器反复通信 时,该算法能够以流(会话)为单位,保证来自相同客户端的通信能够一直在同一服务器中进行处 理。
11、URL 散列
通过管理客户端请求 URL 信息的散列,将发送至相同 URL 的请求转发至同一服务器的算法。
负载均衡—算法/策略相关推荐
- Nginx系列之负载均衡算法策略
负载均衡实际上是一种网络技术,主要是基于现有的网络结构,增加吞吐量.加强网络数据处理能力.提高应用系统的灵活和可用性.利用Nginx可实现负载均衡,Nginx支持加权Round-Robin负载均衡算法 ...
- Spring Cloud Alibaba - 11 Ribbon 自定义负载均衡策略(同集群优先权重负载均衡算法)
文章目录 Pre 需求 工程 Code 继承AbstractLoadBalancerRule实现自定义Rule 随机权重策略 配置 验证 源码 Pre Spring Cloud Alibaba - 0 ...
- 应用交换技术的负载均衡算法
原文出处是:http://hi.baidu.com/ruijievideo/blog/item/5959be1f3c1621ff1bd576d2.html 应用交换技术的负载均衡算法 应用交换技术里主 ...
- nginx 负载 sessionid 不一致_你不知道的Nginx负载均衡算法,快进来迅速掌握
关于负载均衡的三种算法,轮询法,随机法,最小连接法,这三种负载均衡的算法,但是关于负载均衡还有其他的算法,我们也需要你去看,而且在面试的过程中,很有可能是会问到的呦. 对于要实现高性能集群,选择好负载 ...
- Spring Cloud Alibaba - 07 Ribbon 应用篇及内置的负载均衡算法
文章目录 Ribbon整合三部曲 artisan-cloud-ribbon-order step1 搞依赖 step2 搞注解 (在RestTemplate上加入@LoadBalanced注解) St ...
- Citrix Netscaler负载均衡算法
Citrix Netscaler负载均衡算法 http://blog.51cto.com/caojin/1926308 众所周知,作为新一代应用交付产品的Citrix Netscaler具有业内领先的 ...
- LVS三种模式的区别及负载均衡算法
转载自 LVS三种模式的区别及负载均衡算法 LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是一个虚拟的服务器集群系统,由章文嵩博士在1998年5月成立,在li ...
- QPS 提升60%,揭秘阿里巴巴轻量级开源 Web 服务器 Tengine 负载均衡算法
前言 在阿里七层流量入口接入层(Application Gateway)场景下, Nginx 官方的Smooth Weighted Round-Robin( SWRR )负载均衡算法已经无法再完美施展 ...
- 算法高级(17)-SpringCloud中的负载均衡算法
前面讲的负载均衡技术实际上都是服务端负载均衡,一个请求需要被发送到哪台服务器做出响应,是由我们的服务器决定的.而在SpringCloud中,采用的缺是客户端负载均衡技术.那么客户端负载均衡的优势到底在 ...
最新文章
- INSTALL_FAILED_USER_RESTRICTED
- H264码流中SPS PPS
- php mysql技术笔试题_PHP面试笔试题--选择题部分(最新整理)
- 中医治疗慢性病很有效
- mysql实现心跳表_第29问:MySQL 的复制心跳说它不想跳了
- UNITY编辑器模式下static变量的坑
- python学习笔记之迭代器
- JavaScript | 数据属性与访问器属性
- iOS11适配tableView顶部空白
- MySql(windows)安装步骤整理
- 传微软移动设备部门开始扩招员工
- hdoj 1863 畅通工程 最小生成树---prime算法
- 利用Karma、Jasmine 做前端单元测试
- centos7只安装mysql客户端
- 用代码生成Glitch Art风格的抖音字体
- 解决cmd中tomcat中文乱码问题
- 音频(三)音色与spectrum 频谱图
- 在那个春暖花开的季节 今天微微的小雨 伴着轻轻的晚风我们一起来编写 员工考勤信息管理...
- 教你免费使用论文检索网,轻松下载
- 共识算法比较Tendermint的BFT与EOS的dPoS
热门文章
- 【转】Linux Posix Timer使用
- android 学习记录-----------android 活动 意图 碎片
- lync2013 错误: 已为不同的传输层安全性(TLS)目标找到类型为“McxInternal”且完全限定的域名(FQDN)为...
- C# 获取随机可用端口号
- 榜单类应用我所喜欢的算法
- the little schemer 笔记(7)
- vuescroll使用文档
- MySQL之架构与历史(二)
- 模块讲解----shutil模块(copy、压缩、解压)
- 怎样封装一个自己的mvc框架(五)