nginx常见面试题:负载均衡有哪些算法?

描述

大家好,我是小林

很多同学简历的项目都有用到 nginx,今天我们来聊聊 nginx 常见的两个面试题:

反向代理是什么?

负载均衡有哪些算法?

正向代理和反向代理

负载均衡

图片

01 正向代理(Forward Proxy)

正向代理是位于用户设备和互联网之间的服务器。它代理的是客户端,是站在用户一方的。其真实客户端对于服务器不可见

正向代理通常用于:

保护客户端,隐藏客户端真实 IP,免受攻击。

避免网络浏览限制(科学上网)。

阻止访问某些内容。

提高访问速度。通常代理服务器会有较大的硬盘缓冲区,将一些响应结果缓存在服务器端,以便后续用户取用。

02 反向代理(Reverse Proxy)

反向代理是一种服务器,它接受客户端的请求,将请求转发给网络服务器,然后将结果返回给客户端,就像代理服务器处理了请求一样。

反向代理代理的是服务器,是和网络服务器站在一方的。其真实服务器对于客户端不可见。这就是它叫“反向”的原因。

反向代理可用于:

保护服务器,隐藏服务器真实 IP。

负载均衡,根据访问流量和服务器负载情况,将请求分发到不同服务器上。

缓存静态内容以及部分短时间的大量动态请求。

作为应用层防火墙提供防护。

加密/解密 SSL 通信。

负载均衡算法

负载均衡将网络流量或一组任务以某种算法合理分配给各个处理节点,使得节点得到平等的使用,并及时可靠地返回结果给用户。

负载均衡广泛应用于各种硬件软件系统中,比如:

根据 IP 地址进行网络流量负载均衡。在服务进行维护时,可以方便将网络流量切换到临时节点或降级的服务上。

根据 HTTP 头信息或请求字段进行应用程序负载均衡,用户得到响应的时间更短,并且可以提供分层服务,也方便服务扩容时加入新的节点。

CDN 根据流量的来源,将流量导入相邻地区的服务器,以获得更短的响应时间和更高的可用性。

下图显示了 6 种常见算法。

负载均衡

图片

01 静态算法

循环(Round Robin)

客户端请求按顺序发送到不同的服务实例。通常要求服务是无状态的。这种算法最简单,但是也无法处理某个节点变慢或者客户端操作有连续性的情况。

粘性循环(Sticky Round Robin)

这是对循环算法的一种改进。如果 Alice 的第一个请求发送到服务 A,那么接下来的请求也会发送到服务 A。这种负载均衡可以确保一个用户的请求都发往同一个服务节点,适合客户端操作有连续性的情况。有时候该服务节点上会保存该用户的一些状态,避免去后端数据库查询。

加权循环(Weighted Round Robin)

管理员可以指定每个服务的权重。权重高的服务会比其他服务处理更多请求。

散列(IP/URL Hash)

该算法对传入请求的 IP 或 URL 应用哈希函数。根据哈希函数的结果将请求路由到相关服务。

02 动态算法

最少连接(Least Connections)

新请求会发送到并发连接最少的服务节点。

响应时间最少(Least Time)

新请求会发送到响应时间最快的服务节点。这样,某个服务节点变慢就不会阻塞后续请求处理了。

审核编辑:黄飞

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分