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)
新请求会发送到响应时间最快的服务节点。这样,某个服务节点变慢就不会阻塞后续请求处理了。


联发科公布第三季度财报,创历史新高
PC游戏掌机“Smach Z”升级迄今为止最强悍嵌入式锐龙 整体性能焕然一新
常用的区块链词汇你知道多少个
一款真正意义的“简单易用”的智能手机
Teradyne:预计全球5G部署将推动大量的测试需求
nginx常见面试题:负载均衡有哪些算法?
基于LNK564DN的5V,350 mA(1.75 W)反激
中国家庭燃气报警器市场增加了探测器功能方面的要求
最终用户战略供应商成为中国存储系统厂商新目标
PM2.5粉尘传感器在工地扬尘在线监测系统的实际应用
七彩虹推两款高端SSD:慧荣SM2260主控 自带呼吸灯
采用VC++的制瓶机微机控制系统的串口通信
关于光电扫描测量网络信号采集模块的设计
不讲武德的红米Note 9 4G:体验性丝毫没掉队
倒计时3天|开源开发者的技术年末盛典即将开启
TDA4行泊一体打开智能驾驶新篇章
深南电路发布投资者调研相关活动 探讨5G通信PCB领域的优势
罗姆开发出4Gbit/秒的高速光无线接口技术
MXene-石墨烯复合材料实现自我修复
在Pixel智能手机方面,Google必须做出一些让步