单体架构早期的互联网,只需要一台高可配的服务器,就可以满足需求。但是这种会带来一个问题,如果同时有很多用户试图访问服务器,超过了其能处理的极限,就会出现加载速度特别缓慢或根本无法连接的情况。或者服务器宕机的话,所有的用户都没办法访问服务器。
集群因此就引入了负载均衡概念。当一台机子宕机或者不健康的时候,会转发当前的请求到其他服务器上。保证服务是可以正常访问。
常见的负载均衡有三种实现
- 基于DNS实现
- 基于硬件实现
- 基于软件实现
基于DNS实现负载均衡
image.png针对某个域名做多个IP的映射。当用户访问域名的时候,首先会通过dns的解析,随机给用户分配一个ip地址。DNS是最简单的,无需要做额外的开发。但是有dns的缓存策略,会导致修改DNS配置的时候,导致的IP变更不及时。
硬件的负载均衡
有一台性能特别高的交换机,可以处理百万级请求。它可以支持不同的复杂均衡算法,配置。这种一般成本比较高,常用于政府,银行等机构。F5设备。
软件负载均衡
目前大部分的互联网企业使用的方法。免费而且都是开源,可以支持二次开发,不同企业对负载均衡的需求都不一样,可以根据需求,来开发配置负载均衡的特性。常见入 Nginx,LVS ,HAProxy。
负载均衡算法
负载均衡算法决定了后端的哪些健康服务器会被选中。几个常用的算法:
- Round Robin(轮询):为第一个请求选择列表中的第一个服务器,然后按顺序向下移动列表直到结尾,然后循环。
- Least Connections(最小连接):优先选择连接数最少的服务器,在普遍会话较长的情况下推荐使用。
- Source:根据请求源的 IP 的散列(hash)来选择要转发的服务器。这种方式可以一定程度上保证特定用户能连接到相同的服务器。
网友评论