「这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战」。
单个服务器的性能不论如何优化,都会有局限性,不能指望一台服务器撑起微信,这时候我们就需要通过多台服务器组成的集群来处理大量的请求。
但是如何将请求分配到多台服务器,这个就需要用到一个任务分配器,即负载均衡。但是需要注意的是,负载均衡的目的并不一定如字面意思所说,是为了使各个机器的负载达到一个平均的状态,不同的算法要达到的目的是不同的。
常见的负载均衡分为三类:
- dns 负载均衡 一般用来实现地理级别的均衡。原理就是不同区域的用户 ip 是不同的,所以可以解析同一个域名的时候根据不同频段的 ip,返回不同的主机 ip。流程如下:
- 访问域名,做 dns 解析,获取 ip
- 访问 ip 地址
- 获取返回的内容 dns 负载均衡的简单成本低,不需要自己开发负载均衡设备。也可以实现就近访问。但是缺点也比较明显,即 dns 缓存时间比较长,影响业务的正常使用。 扩展性差,控制权在运营商,无法灵活扩展。分配策略也简单,
-
硬件负载均衡 通过单独的设备实现负载均衡,性能强,硬件负载均衡可以达到一百万以上的并发
-
软件负载均衡 即用软件实现负载均衡,如 nginx,是应用级别的七层负载均衡,也可以在四层做负载均衡,如 lvs 等。 软件负载均衡的性能差一些,比如 nginx 是万级别的,不过成本较低,而且扩展、维护比较简单,也比较灵活。但是它的功能和性能都没有硬件负载均衡强大,一般没有防火墙及防 ddos 的功能。