互联网研发中负载均衡算法一点探索

负载均衡在线上服务中有着很重要作用,因为一台web服务比如tomcat,能够处理qps(每秒处理请求数)

是有限的。那么就需要有有前端负载均衡服务将大的流量分发为多个后端服务进行处理。

负载均衡产品有硬件F5、有软件,早之前使用Apache较多,目前是使用Nginx多,Nginx架构实现简洁优

雅性能高。LVS、HAProxy是著名软负载工具。说到LVS是由原淘宝章文蒿(目前在滴滴公司)博士领导开发,

是到目前为止Linux内核中网络核心部分,也是国人开Linux内核最高贡献,章博士在国内技术圈封神,实至名

归。当然国内对于Linux内核进行贡献代码人很多,以后有机会可以介绍下那些牛人。

硬件F5优点是负载均衡效果好、效率高,缺点是配置复杂,成本高。

Apache、Nginx可以进行软件负载,软件负载性能没有硬件负载性能高,但优势是配置灵活并且能知道

后端负载情况,根据后端负载调整负载均衡配置。Nginx支持多种负载均衡算法,根据实际情况调整负载配置

来满足业务需要。软件负载成本低效果也能满足线上性能需要,软件负载在互联网企业有着广泛用途。

web网站软件负载均衡过程是,用户请求打到负载均衡Apache、Nginx上,由Apache、Nginx转发到

多个Tomcat服务,Tomcat上web服务接收到请求处理完返回给Apache或Nginx,Apache和Nginx将请求返

回给前端浏览器,完成整个负载均衡过程。

nginx负载均衡算法:有轮训负载均衡算法,ip hash负载均衡算法,url hash负载均衡算法,轮训加权

负载均衡算法,fair 负载算法按服务端相应时间来分配请求。

dubbo微服务本身也是通过软件负载来分配客户端请求,与web差异点是一:负载是在客户端进行处理

而不是服务端。二是负载是负载请求次数而不是连接,因为当下微服务都是通过netty来实现长连接,负载

是负载多个长连接对于每个连接中产生调用次数。

1、轮训算法:前端请求按时间顺序按顺序配置到后端服务器,如果是后台服务当掉,如果后台服务器

当掉,则去掉有问题机器,对于用户请求无感知,用户不会知道已有服务掉线,也是实现服务高可用。

2、加权负载均衡算法:指定轮训权重,权重越大,给后端服务转发请求越多,这种配置用在后台服务

器性能有好好差情况下,后台性能好机器配置高权重,后台性能差服务配置低权重,根据实际后台服务情况

调整权重配置。

3、ip hash可以根据用户请求ip按照hash算法将请求分配到固定后端服务上,这样可以解决用户在动态

服务上session共享问题,当前session共享也可以通过共同存储,比如将session存储到数据库或者将session

存储到redis来解决session共享问题。

ip hash还有个好处就是在618、双11等电商大促高并发场景下,当用户请求超过系统能够处理负载,实

现对用户排队,通过排队避免用户请求过多压垮系统。

4、url hash:按访问url hash将固定url访问,打到固定节点服务,这样可以根据url调整服务资源,最大

化资源利用率。

5、fair负载均衡算法:根据服务端相应时间,来调整分配给每一台后端服务请求数量,这样可以更智能、

合理、资源最大化使用实现负载调配。

负载均衡算法还要注意失效节点负载重新进行均匀分配,而不是对整个流量全部进行重新分配。避免突然

给后台服务增加很多请求造成服务不可用。再有就是负载均衡算法成熟,要避免bug导致服务击穿,并且产生洪

泛效应,将所有服务节点均打垮最终导致服务不可用。

对于每一个技术都要掌握原理,很好的去使用它,发挥它最大优势,勿在浮沙筑高台,希望对大家有帮助。

微信搜索:debugme123

扫描二维码关注:

时间: 2024-08-12 19:46:12

互联网研发中负载均衡算法一点探索的相关文章

负载均衡算法及手段

负载均衡器 可以是专用设备,也可以是在通用服务器上运行的应用程序. 分散请求到拥有相同内容或提供相同服务的服务器. 专用设备一般只有以太网接口,可以说是多层交换机的一种. 负载均衡器一般会被分配虚拟IP地址,所有来自客户端的请求都是针对虚拟IP地址完成的.负载均衡器通过负载均衡算法将来自客户端的请求转发到服务器的实际IP地址上. 负载均衡算法 private Map<String,Integer> serverMap = new HashMap<String,Integer>(){

几种简单的负载均衡算法及其Java代码实现

什么是负载均衡 负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助.通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求.负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题,这种集群技术可以用最少的投资获得接近于大型主机的性能. 负载均衡分为软件负载均衡和硬件负载均衡,前者的代

集群负载均衡算法原理

最近打算往互联网方向发展,研究了下集群的负载均衡.其实早就应该去了解学习了.如有理解不到位的地方,还望各大神指出. 负载均衡算法是集群在调度时,选择具体调度和分发方式的逻辑. 目前流行和常用的算法有:轮询算法,Hash算法,Session,最小连接数,最大空闲等. 1.轮询算法: 实现方式:把每一次的用户请求,按顺序循环分配给集群内部的一台服务器.优点是算法简洁,无状态. 2.权重轮询算法 由于服务器的处理能力不同,可以再给服务器加权.也就是权重轮询算法. 3.Hash算法 一般就是将请求中的某

假如古代皇帝也懂负载均衡算法

本文在个人技术博客同步发布,详情可用力戳 亦可扫描屏幕右侧二维码关注个人公众号,公众号内有个人联系方式,等你来撩... ??大家都知道古代皇帝各个都是后宫佳丽三千,而皇帝身上都天然的带着雨露均沾的精神,不想单独的宠爱一人! ??溺水三千,又怎舍得只取一瓢饮?据传皇帝们晚上睡觉个个都怕冷,因此每晚都需要有人侍寝,那么这么多后宫,该翻谁牌子.怎么分配侍寝名额呢? ??还别说,皇帝行房事竟还挺讲究的!早在<春秋>就有记载"晦阴惑疾,明谣心疾,以辟六气".九嫔以下,每九人中进御一人

Citrix Netscaler负载均衡算法

众所周知,作为新一代应用交付产品的Citrix Netscaler具有业内领先的数据控制.应用交付的能力,然而作为根本内容之一的ADC功能,如果不具备强大的.多元化的均衡算法是不可能适应如此众多的应用场景,更无法做到好的应用交付产品.因此我们在此讨论一下比较常用的负载均衡算法就很有必要. 目前最新版本的Netscaler支持17种均衡算法,目前先讨论最常用的12种 1.轮询算法(Round Robin) 当NetScaler 使用轮询的负载均衡算法时,它会将来自客户端的请求轮流分配给后台中的服务

F5负载均衡算法及基本原理

原文:Intro to Load Balancing for Developers – The Algorithms 转载:http://blog.gesha.net/archives/205/ posted on Tuesday, March 31, 2009 11:02 PM Random: This load balancing method randomly distributes load across the servers available, picking one via ra

说一说负载均衡算法

    负载均衡算法可以分为两类:静态负载均衡算法,基于服务器的容量,就是高配置的服务器比低配置的服务器分配更多的请求:动态负载均衡算法根据服务器的状况,比如通过监控可以得到平均响应时间,或者CPU占用率,内存占用率按照某种方式进行计算,作为权重值 静态负载均衡算法 随机(Random):利用随机数生成算法选取一个服务器,然后把连接发送给他.虽然许多负载产品都支持该算法,但是它的有效性一直受到质疑,除非把服务器的可运行时间看的很重. 轮询(Round Robin):按顺序把每个新的连接请求分配给

负载均衡算法类型

负载均衡算法类型 随机 (Random)-- 随机分发 轮询(Round Robin) -- 将请求依次顺序循环地分发给服务器,从1到N然后重新开始.此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况. 权重(Weighted Round Robin)-- 根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求..此种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重. 动态比率(Dynamic Rou

常见负载均衡算法

一.概要 随着系统日益庞大.逻辑业务越来越复杂,系统架构由原来的单一系统到垂直系统,发展到现在的分布式系统.分布式系统中,可以做到公共业务模块的高可用,高容错性,高扩展性,然而,当系统越来越复杂时,需要考虑的东西自然也越来越多,要求也越来越高,比如服务路由.负载均衡等.此文将针对负载均衡算法进行讲解,不涉及具体的实现. 二.负载均衡算法 在分布式系统中,多台服务器同时提供一个服务,并统一到服务配置中心进行管理,如图1-1. 图1-1