Nginx负载均衡的算法怎么实现的?Nginx 有哪些负载均衡策略?Nginx为什么要做动静分离?
面试题
Nginx负载均衡的算法怎样完成的?Nginx 有哪些负载均衡战略?Nginx为什么要做动态别离?
面试官心思分析
首要是看应聘人员对Nginx的基本原理是否了解,需求应聘人员能够依据实践事务场景挑选适宜的负载均衡(转发)战略。其次,在网站建造上,了解 Nginx 的优劣势,能够找到补偿其缺乏的办法,使得企业的事务到达***拜访状况。
问题分析
1. Nginx负载均衡的算法怎样完成的?战略有哪些?
负载均衡是 Nginx常用的一个功用,当一台服务器在单位时刻内的拜访量越大时,服务器压力就越大,大到超越本身承受才能时,服务器就会溃散。
为了防止服务器溃散,咱们会经过负载均衡的方法来分管服务器压力。将对台服务器组成一个集群,当用户拜访时,先拜访到一个转发服务器,再由转发服务器将拜访分发到压力更小的服务器。
Nginx负载均衡完成的战略有以下五种:
(1) 轮询(默许)
每个恳求按时刻鸡飞蛋打逐个分配到不同的后端服务器,假如后端某个服务器宕机,能主动除掉毛病体系。
- upstreambackserver{
- server192.168.0.12;
- server192.168.0.13;
- }
(2) 权重 weight
weight的值越大分配到的拜访概率越高,首要用于后端每台服务器功能不均衡的情况下。其次是为在主从的情况下设置不同的权值,到达合理有用的地使用主机资源。
- upstreambackserver{
- server192.168.0.12weight=2;
- server192.168.0.13weight=8;
- }
权重越高,在被拜访的概率越大,如上例,分别是20%,80%。
(3) ip_hash( IP绑定)
每个恳求按拜访IP的哈希成果分配,使来自同一个IP的访客固定拜访一台后端服务器,而且能够有用处理动态网页存在的session同享问题
- upstreambackserver{
- ip_hash;
- server192.168.0.12:88;
- server192.168.0.13:80;
- }
(4) fair(第三方插件)
有必要装置upstream_fair模块。
比照 weight、ip_hash愈加智能的负载均衡算法,fair算法能够依据页面巨细和加载时刻长短智能地进行负载均衡,呼应时刻短的优先分配。
- upstreambackserver{
- serverserver1;
- serverserver2;
- fair;
- }
哪个服务器的呼应速度快,就将恳求分配到那个服务器上。
(5) url_hash(第三方插件)
有必要装置Nginx的hash软件包
按拜访url的hash成果来分配恳求,使每个url定向到同一个后端服务器,能够进一步进步后端缓存服务器的功率。
- upstreambackserver{
- serversquid1:3128;
- serversquid2:3128;
- hash$request_uri;
- hash_methodcrc32;
- }
2. 为什么要做动态别离?
Nginx是当下最热的Web容器,网站优化的重要点在于静态化网站,网站静态化的要害点则是是动态别离,动态别离是让动态网站里的动态网页依据必定规矩把不变的资源和常常变的资源区别开来,动态资源做好了拆分今后,咱们则依据静态资源的特色将其做缓存操作。
让静态的资源只走静态资源服务器,动态的走动态的服务器
Nginx的静态处理才能很强,可是动态处理才能缺乏,因而,在企业中常用动态别离技能。
- 关于静态资源比方图片,js,css等文件,咱们则在反向代理服务器Nginx中进行缓存。这样浏览器在恳求一个静态资源时,代理服务器nginx就能够直接处理,无需将恳求转发给后端服务器tomcat。
- 若用户恳求的动态文件,比方servlet,jsp则转发给Tomcat服务器处理,然后完成动态别离。这也是反向代理服务器的一个重要的宠爱。