互联网研发中负载均衡算法一点探索
负载均衡在线上服务中有着很重要作用,因为一台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
扫描二维码关注:
转载于:https://www.cnblogs.com/freedommovie/p/7878683.html
互联网研发中负载均衡算法一点探索相关推荐
- Spring Cloud Alibaba - 07 Ribbon 应用篇及内置的负载均衡算法
文章目录 Ribbon整合三部曲 artisan-cloud-ribbon-order step1 搞依赖 step2 搞注解 (在RestTemplate上加入@LoadBalanced注解) St ...
- Ribbon自定义负载均衡算法
Ribbon是什么? Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接超时 ...
- ribbon的7种负载均衡算法和替换方法
一,ribbon核心组件IRule自带的7中负载均衡算法 1,轮询 com.netflix.loadbalancer.RoundRobinRule 2,随机 com.netflix.loadbalan ...
- openEuler21.09中的负载均衡算法优化
1. 参考文档 openEuler21.09内核代码 根据openEuler官网上的介绍,其内核对进程调度的负载均衡做了算法优化,来提升系统性能.我们就来看看代码到底优化了什么. 注:下面所涉及的修改 ...
- 算法高级(17)-SpringCloud中的负载均衡算法
前面讲的负载均衡技术实际上都是服务端负载均衡,一个请求需要被发送到哪台服务器做出响应,是由我们的服务器决定的.而在SpringCloud中,采用的缺是客户端负载均衡技术.那么客户端负载均衡的优势到底在 ...
- Ribbon中的负载均衡算法实现
Ribbon响应时间权重负载均衡算法,假设有3台服务器A,B,C响应时间为10,40,80ms. 算法公式:weighsofar + 总响应时长- 本服务器平均响应时长 A:0+130-10=120 ...
- 自古帝王多短命,假如皇帝也懂负载均衡算法...
" 大家都知道古代皇帝各个都是后宫佳丽三千,而皇帝身上都天然的带着雨露均沾的精神,不想单独的宠爱一人! 来自:51cto技术栈 弱水三千,又怎舍得只取一瓢饮?据传皇帝们晚上睡觉个个都怕冷,因 ...
- 后宫佳丽三千,假如古代皇帝也懂负载均衡算法...
古代皇帝,后宫佳丽三千,没法做到雨露均沾,但为了繁衍后代,子嗣繁盛,弱水三千,只取一瓢饮显然是不行的.不同的朝代有不同的宠幸妃子的方法,著名的有羊车望幸.掷筛侍寝.翻牌悬灯等等.如果皇帝懂得负载均衡算 ...
- 集群,分布式,负载均衡,负载均衡算法
集群 集群的概念 计算机集群通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接, ...
最新文章
- MATH6005 Final Assignment MATH6005 2018-19
- 使用Python PIL库实现简单验证码的去噪处理
- 零基础学python需要多久-零基础学习Python大概要多久,感悟分享?
- mongoDB-3.x启用认证
- 文献记录(part84)--A nearest neighbor-based active learning method and its application to time ...
- 威纶通定时循环操作宏_威纶通触摸屏宏指令的使用
- jquery Datatables 行数据删除、行上升、行下降功能演示
- 澜舟科技开源轻量级中文语言预训练模型——孟子模型
- MVC4 Action
- Eclipse中执行Tomcat源代码
- Java快逸报表展现demo_快逸报表展示图片—来自本地/网络的图片
- 服务器极光推送消息怎么设置,服务器极光推送消息
- Openwrt修改flash大小
- thinkcmf:Cannot redeclare cmf_get_date() (previously declared in
- phython练习1
- perfmon android 7.1,Perfmon - 脚本自动监控
- 扣哒世界发布面向中小学阶段C++信奥课程体系
- QT 中怎样实现延时 stop
- 七、ref引用与数组的常用方法
- Mac下的Kali虚拟机的安装
热门文章
- 藏在XP中的一个可以完整清除垃圾文件
- Silverlight C# 游戏开发:Flyer01开发一个有趣的游戏
- 网管日志-06.09.05
- 湖北民族学院c语言试卷,C实验参考答案(湖北民族学院计算机c语言课后习题答案).doc...
- Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)
- struts2下的helloworld(如何让第一个struts2跑起来)——struts2第一讲
- Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)
- linux下的strerror和perror
- Zephyr内核到1.5版本的改进
- UVA - 673 (括号的匹配)