ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] > ### `Nginx`与`Tomcat`比较 * `tomcat`是根据`Servlet`和`JSP`规范执行的。`tomcat`对静态文件、高并发文件的处理比较弱。 * `nginx`配置文件简单;能根据域名、URL的不同将`HTTP`请求分发到不同的后端服务器集群;负载均衡;反向代理;内置健康检查;节省带宽。支持`GZIP`压缩;支持热部署。 <br/> > ### `nginx`热部署的实现 * Nginx涉及Master进程和Worker进程;master读取并验证配置文件nginx.conf;管理worker进程;每一个Worker进程都维护一个线程(避免线程切换),处理连接和请求。 ![](https://i.loli.net/2019/03/14/5c892b0f2d982.png) * 修改配置文件nginx.conf后,重新生成新的worker进程,当然会以新的配置进行处理请求,而且新的请求必须都交给新的worker进程,至于老的worker进程,等把那些以前的请求处理完毕后,kill掉即可。 <br/> > ### `Nginx`如何做到高并发 * `Nginx`采用了`Linux`的`epoll`模型,`epoll`模型基于事件驱动机制,它可以监控多个事件是否准备完毕,如果OK,那么放入`epoll`队列中,这个过程是异步的。`worker`只需要从epoll队列循环处理即可。 <br/> > ### 高可用、负载均衡 * `Keep-Alive` ![](https://i.loli.net/2019/03/14/5c89c90097fa4.png) * `HAProxy` * `LVS + Keep-Alive` * `Linux Virtual Server` * `F5` <br/> > ### `nginx`的负载均衡策略 * 1、轮询(默认) * 2、指定权重轮询 * 3、`ip_hash`(ip绑定),每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 * 4、`url_hash`(第三方),按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 * 5、`fair`(第三方),按后端服务器的响应时间来分配请求,响应时间短的优先分配。 <br/> *** 参考 [深入浅出搞懂Nginx](https://zhuanlan.zhihu.com/p/34943332) [Nginx&Keepalived 实现高可用](https://juejin.im/post/5b645b6ff265da0f955ceddf)