Tomcat 一种轻量级的WEB容器,它的适用场景中小型系统或者并发量不高的系统
它是apache平台与Sun公司一起合作开发出来的,专门支持Servlet的一种WEB容器!
Tomcat 单位时间1S钟范围内,一般最多可以支持到500的并发(QPS),当超过500以后,性能将急速下降。当超过最大承受量以后,系统可能返回:Server is too Busy!
问题:当系统的并发量(QPS)很高,怎么办?
需要使用到集群
**集群:**当单台服务器性能较低时,我们去购买更多的服务器,集中起来组成一个群体,统一对外听相同的服务
集群可以提高系统的:整体响应性能,以及整体的可用性
可用性:任何时间范围内容,系统都是正常的。按理来说,应该是:100%的时间
但是业界中,能做到:99%的都不多,做的最好的:阿里 ,腾讯 (99.99%)
当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。其意思就是分摊到多个操作单元上进行执行。
采用的apache + tomcat 来实现
**Apache存在的问题:**集成的模块太多,采用同步,阻塞式的处理方法,配置繁杂!(一般的程序员配不了)
当Nginx出来之后,由于它更轻量,配置更简单,采用异步,非阻塞式的处理方案,来处理HTTP请求
负载均衡的常见算法(面试题):
**轮训:**采用轮流执行请求的机制,完成对请求的派发
**随机:**采用随机派发请求的机制,完成对请求的派发
**最少连接:**需要Apache/Nginx判断集群中服务器,谁当前处理的请求最少,就派发给谁
**权重:**设置服务器处理请求的比例,按照比例来完成对请求的派发
**IP黏贴:**相同IP地址的客户发送的请求,统一的派发到同一台服务器上
Nginx跟apache一样,都是HTTP服务器,但是它也有它自己的特点
1、Nginx 是一种反向代理服务器。也是一个IMAP/POP3/SMTP/STOMP的服务器。
2、Nginx提供负载均衡功能(跟apache一样),可以HTTP服务器对外提供服务
3、处理静态资源文件,甚至可以提供对静态资源文件的缓存
4、支持模块化的结构配置
国内很多大厂都在使用Nginx,如:百度,京东,新浪,网易,腾讯,阿里……
中小厂,就更喜欢用!
从外网到内网的访问就是:反向代理
**反向代理(Reverse Proxy):**Nginx接收用户的请求,然后再将用户的请求转发给内部网络服务器,并从内部服务器身上得到结果,然后再把结果再转发给客户端。 此时:Nginx向对于Tomcat来讲,它就是一台对外的代理服务器
从内网到外网的访问就是:正向代理 例如:VPN(翻墙)
1、处理静态资源,也可以自动索引文件
2、反向代理,让外部可以访问内部资源,并提供多种负载均衡算法和容错机制
3、提供基于IP和域名的虚拟主机服务
4、提供了模拟化的结构,同一个Proxy请求的多个子请求并发处理
5、IMAP/POP3/SMTP 代理服务
6、支持FLV (Flash视频)
7、基于客户端 IP 地址和 HTTP 基本认证的访问控制;
**整体思想方向:**前端部署nginx服务器,后端部署tomcat应用。用户访问nginx服务器,对于静态资源nginx服务器直接返回到浏览器展示给用户,对动态资源的请求被nginx服务器转发(分配)到tomcat应用服务器,tomcat应用服务器将处理后得到的数据结构返回给nginx服务器,然后返回到浏览器展示给用户
对于静态资源nginx服务器直接返回到浏览器展示给用户,对动态资源的请求被nginx服务器转发(分配)到tomcat应用服务器,tomcat应用服务器将处理后得到的数据结构返回给nginx服务器,然后返回到浏览器展示给用户