碎碎念
最近在看一本关于架构的书,其中牵扯到分布式、自动伸缩、集群相关一定会提到负载均衡,随即写下这篇文章
负载均衡的基石
主要参考:
https://www.cloudflare.com/learning/performance/what-is-load-balancing/
https://aws.amazon.com/what-is/load-balancing/
https://www.ibm.com/topics/load-balancing
https://www.f5.com/glossary/load-balancer
总结下来就是说,分为两种实践方式:硬件和软件,但都是基于算法,算法又基于两大类:动态和静态(维基百科里也同样提到了)
静态算法
轮询
加权轮询
ip地址hash
动态算法
最少连接
加权最少连接
最少响应时间
最充足资源
nginx中的支持
不得不说nginx在负载均衡实践的地位,我也参考了几篇官方的负载均衡文档,写的相当不错,建议感兴趣的小伙伴去看看:
https://nginx.org/en/docs/http/load_balancing.html
不使用插件的情况下:轮询、加权轮询、ip地址hash、最少连接
小疑问:随机属于什么算法
随机属于轮询的一种,但是不够完美。
负载均衡算法的相关问题
- 加权轮询导致权重大的服务器多次被访问
平滑加权轮询 - hash算法在新增机器的情况下导致“伪“负载均衡
一致性hash算法:二叉树查找环形