诞生背景
软件系统发展初期由于用户量比较小,需求也相对简单,因此单体架构就可以满足需求,但是随着用户量的增加,服务器的请求量也随着增加,单体架构的弊端就显现出来了,第一弊端是访问性能下降导致访问延迟,第二个弊端是单体架构出现单点故障后会导致整个系统不可用。而为了解决上述问题,集群化部署架构应运而生,把一个软件系统同时部署在多台服务器上。架构的变化也引申出两个问题:1、客户端请求如何均匀的把请求分发到多台服务器上,2、如何检测目标服务器状态,从而不向宕机服务器发去请求。为了解决这两个问题引入了负载均衡这样的设计,而负载均衡的核心目的就是把客户端的请求合理的均匀的分发到多台服务器上,由于请求被多个几点分发,使得整个系统的性能得到提升。
如何实现负载均衡
方法一:基于DNS实现负载均衡
在DNS服务器上针对某个域名做多个ip映射,当用户访问某个网站时,会先通过DNS服务器进行域名解析,返回得到一个ip地址,然后再访问该ip,这样就实现了目标集群的请求分发。DNS也可以根据不同的地域分配就近的ip,比如郴州的小伙伴能够得到湖南范围内就近的ip,实现就近访问原则,从而缩短通讯距离提升整个网站的请求效率。
- 优点:配置简单、实现成本低、无需额外的开发和维护成本。
- 缺点:由于DNS多级缓存的特性,当我们修改DNS配置时会因为缓存导致ip变更不及时,从未影响负载均衡的效果。
方法二:基于硬件实现负载均衡
硬件负载设备我们可以简单的理解为一个网络设备,类似于网络交换机,