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

    负载均衡在线上服务中有着很重要做用,由于一台web服务好比tomcat,可以处理qps(每秒处理请求数)前端

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

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

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

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

归。固然国内对于Linux内核进行贡献代码人不少,之后有机会能够介绍下那些牛人。数据库

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

       Apache、Nginx能够进行软件负载,软件负载性能没有硬件负载性能高,但优点是配置灵活而且能知道浏览器

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

来知足业务须要。软件负载成本低效果也能知足线上性能须要,软件负载在互联网企业有着普遍用途。服务器

 

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

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

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

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

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

       dubbo微服务自己也是经过软件负载来分配客户端请求,与web差别点是一:负载是在客户端进行处理

而不是服务端。二是负载是负载请求次数而不是链接,由于当下微服务都是经过netty来实现长链接,负载

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

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

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

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

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

调整权重配置。

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

服务上session共享问题,当前session共享也能够经过共同存储,好比将session存储到数据库或者将session

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

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

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

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

化资源利用率。

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

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

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

给后台服务增长不少请求形成服务不可用。再有就是负载均衡算法成熟,要避免bug致使服务击穿,而且产生洪

泛效应,将全部服务节点均打垮最终致使服务不可用。

        对于每个技术都要掌握原理,很好的去使用它,发挥它最大优点,勿在浮沙筑高台,但愿对你们有帮助。

 

微信搜索:debugme123

        扫描二维码关注:

相关文章
相关标签/搜索