什么是负载均衡?
负载均衡是分布式系统中很重要的概念,今天来聊聊。
什么是负载均衡
简单说,负载均衡就是把请求分散到多台服务器上。
举个例子:
- 你一个人窗口买票,队伍排得很长
- 开10个窗口,队伍就短多了
负载均衡就是这10个窗口,把用户的请求分散开。
为什么需要负载均衡
单台服务器扛不住
一台服务器能处理的请求是有限的。双十一那么多人访问淘宝,一台服务器肯定不行。
提高可用性
如果只有一台服务器,挂了就全挂了。
有多台服务器,挂了一台还有其他的顶着。
负载均衡的策略
轮询
一个一个来,第一个请求给服务器A,第二个给B,第三个给A……
最简单的策略。
加权轮询
性能好的服务器多分一点请求,性能差的少分一点。
随机
随机分配,简单粗暴。
最少连接
哪台服务器当前连接数最少,就分给哪台。
IP哈希
根据用户IP分配,同一个用户总是访问同一台服务器。
常见的负载均衡方案
Nginx
最常用的负载均衡方案。配置简单,性能很好。
upstream backend {
server 192.168.1.1:8080;
server 192.168.1.2:8080;
server 192.168.1.3:8080;
}
server {
location / {
proxy_pass http://backend;
}
}
云厂商的负载均衡
阿里云的SLB、腾讯云的CLB、AWS的ELB。
不用自己搭,直接用,按量付费。
硬件负载均衡
F5、A10这些,很贵,一般大公司才用。
负载均衡的位置
客户端负载均衡
客户端自己决定请求发给哪台服务器。比如Spring Cloud的Ribbon。
服务端负载均衡
有一个统一的入口(比如Nginx),由它来分配请求。
面试会问
负载均衡是面试常考的内容:
- 负载均衡有哪些策略?
- Nginx怎么配置负载均衡?
- 客户端负载均衡和服务端负载均衡的区别?
最后
负载均衡的核心思想是:分散压力。
单点扛不住就加机器,请求分散到多台机器上。
这是应对高并发的基本思路。
