面试官最常用小心思:说说你的项目并发量多大?负载均衡怎样做?
在开始今天的文章之前,先抛一个面试题出来:
你接触过的单机最大并发数是多少?
你认为当前正常配置的服务器物理机最大并发数可以到多少?
说说你的了解和分析。
假如你能很好地在心里总结一下答案,那您可以好好地享受您的周末了,就不占用您太多时间了
假如你略微的有点迷茫,不知道怎样答复,那占用您几分钟的时间看一下下面的内容,由于这个问题可扩展性挺大哦
理想情况
理想情况下,并发量简单来说就是看源IP和源Port数量,针对单机来说,可能这个数值真的不大,但是假如你真的这么想了的话,那你可能要回炉重造了或者者你没接触过实际的生产环境。
分析一下,前面的我说的是针对单个服务器或者者用户端的,但是实际上每个服务器会应对全网的所有用户端,那么从服务端看,源IP和源Port的数量是非常大的。
理论上服务端可以接受的用户端IP是232(按照IPv4计算),端口数是216,这么看是真的挺大的,如同用起来可供选择的也不少,但是,开头也说了,这是理想情况呀
面试官最常用小心思:说说你的项目并发量多大?负载均衡怎样做?
实际情况
天下没有免费的午餐。
每一条连接都是要消耗系统资源的,所以这个理论最大并发数是不可能达到的,在日常的开发过程中,我们一般会设置一个最大并发数来控制。
实际中并发数和业务是直接相关的,像Redis这种内存型的服务端并发十几万都是没问题的,大部分来讲几十/几百/几千/几万等是存在的。
用户端最大连接数
了解了服务器的最大并发数是2^48,那么用户端最多可以连接多少服务器这个问题该怎样答复呢?
面试官最常用小心思:说说你的项目并发量多大?负载均衡怎样做?
对于用户端来说,当然可以借助于多网卡多IP来添加连接能力,我们依然假定用户端只有1张网卡1个IP,因为端口数的限制到2^16,再去掉系统占用的端口,剩下可用的差不多64000。
面试官最常用小心思:说说你的项目并发量多大?负载均衡怎样做?
也就是说,用户端的理论最大连接数是2^16,含系统占用端口。
NAT环境下的用户端
处理前面的两个问题之后,来看另外一个问题:
一个公网出口NAT服务设施最多可同时支持多少内网IP并发访问外网服务?
毕竟公网IP都是有限并且要花钱的,我们大部分机器都是在局域网中结合NAT来进行外网访问的,所以这个场景还是很熟习的。
来看下内网机器访问外网时的IP&端口替换和映射复原的过程,就明白了:
面试官最常用小心思:说说你的项目并发量多大?负载均衡怎样做?
由于这时的用户端是NAT设施,所以NAT环境下最多支持65535个并发访问外网。
怎样样,看完上面的内容不知道大家对于刚开始的几道问题的答复能否清楚了呢?但是,我也说了,这道题有点意思,并发量的增大,对应的就是处理方案,这里由于篇幅起因,也没有办法讲解太多,就说一个最常用的吧——Nginx
Nginx负载均衡、限流、缓存、黑白名单
一、静态代理商
Nginx擅长解决静态文件,是非常好的图片、文件服务器。把所有的静态资源的放到nginx上,可以使应用动静分离,性能更好。
二、负载均衡
Nginx通过反向代理商可以实现服务的负载均衡,避免了服务器单节点故障,把请求按照肯定的策略转发到不同的服务器上,达到负载的效果。常用的负载均衡策略有,
面试官最常用小心思:说说你的项目并发量多大?负载均衡怎样做?
1、轮询
将请求按顺序轮流地分配到后台服务器上,它均衡地对待后台的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
2、加权轮询
不同的后台服务器可能机器的配置和当前系统的负载并不相同,因而它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其解决更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地解决这一问题,并将请求顺序且按照权重分配到后台。
3、ip_hash(源地址哈希法)
根据获取用户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是用户端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的用户端,当后台服务器列表不变时,它每次都会映射到同一台后台服务器进行访问。
4、随机
通过系统的随机算法,根据后台服务器的列表大小值来随机选取其中的一台服务器进行访问。
5、least_conn(最小连接数法)
因为后台服务器的配置不尽相同,对于请求的解决有快有慢,最小连接数法根据后台服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来解决当前的请求,尽可能地提高后台服务的利用效率,将负责正当地分流到每一台服务器。
三、限流
Nginx的限流模块,是基于漏洞算法实现的,在高并发的场景下非常实用。
面试官最常用小心思:说说你的项目并发量多大?负载均衡怎样做?
1、配置参数
1)limit_req_zone定义在http块中,$binary_remote_addr 表示保存用户端IP地址的二进制形式。
2)Zone定义IP状态及URL访问频率的共享内存区域。zone=keyword标识区域的名字,以及冒号后面跟区域大小。16000个IP地址的状态信息约1MB,所以示例中区域可以存储160000个IP地址。
3)Rate定义最大请求速率。示例中速率不能超过每秒100个请求。
2、设置限流
burst排队大小,nodelay不限制单个请求间的时间。
四、缓存
1、浏览器缓存,静态资源缓存用expire。
面试官最常用小心思:说说你的项目并发量多大?负载均衡怎样做?
2、代理商层缓存
面试官最常用小心思:说说你的项目并发量多大?负载均衡怎样做?
五、黑白名单
1、不限流白名单
面试官最常用小心思:说说你的项目并发量多大?负载均衡怎样做?
2、黑名单
面试官最常用小心思:说说你的项目并发量多大?负载均衡怎样做?
上面就是nginx几个常用功能,动静分离、负载均衡、限流、缓存、黑白名单等,你都理解了吗,不理解的话还可以关注我等待后续升级nginx深入知识哦(没办法,我试过,由于篇幅起因,附完整得知识讲解,太多了,不好心思各位,看我下次分享)。
面试官最常用小心思:说说你的项目并发量多大?负载均衡怎样做?
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 面试官最常用小心思:说说你的项目并发量多大?负载均衡怎样做?