负载均衡
1.什么是负载均衡
简单地说,就是将请求(或者说流量)按照既定规则分发给多个真实后端服务器的过程。
2.为什么需要负载均衡
2.1 没有负载均衡的应用架构
会有什么问题?
用户通过浏览器直接访问后端服务。当请求量过于庞大,超出了服务器处理请求的极限, 或者服务器因其他原因导致宕机时,都会导致用户的访问速度变慢甚至无法访问。(单点故障)
解决办法:Scale out 水平扩展
Scale up垂直扩展虽然可以增强单机处理能力,但是依旧会出现单点故障导致服务不可用。因此可以通过Scale out水平扩展增加服务器数量来减小因单点故障导致的服务不可用。
2.2 水平扩展
水平扩展后,即使一台服务器宕机,用户请求也会访问到其他正常的服务器上。
会有什么问题?
由哪台服务器处理用户请求呢?总不能每一台都去处理吧?
解决办法:负载均衡
2.3 负载均衡应用架构
添加了负载均衡服务器,就可以将用户的请求按照既定的算法转发到对应的后端server节点上。
好处
1、解决并发压力,提高应用处理性能
2、提供故障转移,实现高可用
3、可扩展性(水平扩展)
4、安全防护。(黑白名单等)
需要注意的是
服务器应设置成无状态的,即不存储请求上下文,这样子每个服务器节点对于用户的请求返回的结果都是相同的。换言之,用户不需要每次都请求到同一服务器,也减小了相同用户对单一服务器的压力。
3.负载均衡的种类
3.1 DNS负载均衡
DNS服务器中会存储域名到ip地址的映射关系。
请求-响应流程
1、用户在浏览器上输入访问域名 www.bilibili.com
2、浏览器向DNS服务器发起请求
3、DNS服务器通过轮询算法,找到www.bilibili.com的服务器ip地址(119.3.77.172)
4、DNS服务器将解析出来的ip返回给浏览器(119.3.77.172)
5、浏览器拿着从DNS服务器那获取到的ip地址,去访问真实服务器
6、服务器处理完请求后,返回响应。
优点
部署简单、成本低、服务器可以位于互联网的任意位置
缺点
1、DNS缓存导