一,什么是tomcat?
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
1,Tomcat核心组件
2,tomcat处理请求的过程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O6shtzBG-1605103536114)(en-resource://database/1225:1)]
3,tomcat重要目录
- bin :存放启动和关闭tomcat脚本
- conf: 存放tomcat不同的配置文件
- doc:存放tomcat文档
- lib:存放tomcat运行需要的库文件
- logs:存放tomcat执行时的log文件
- src:存放tomcat的源代码
- webapps:tomcat的主要web发布目录
- work :存放jsp编译后产生的class文件
二,如何理解nginx?
Nginx是一个很强大的高性能web和反向代理服务器,在连接高并发的情况下,nginx是apache服务器不错的替代品,Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一,能够支持高达50.000个并发连接数的响应。
-
Nginx是一款非常优秀的HTTP服务器软件
-
支持高达50000个并发连接数的响应
-
拥有强大的静态资源处理能力
-
运行稳定
-
内存、CPU等系统资源消耗非常低
-
目前很多大型网站都应用Nginx服务器作为后端网站程序的反向 代理及负载均衡器,提升整个站点的负载并发能力
-
nginx实现负载均衡是通过反向代理实现
-
反向代理原理
-
nginx配置反向代理的主要参数
- upstream 服务池名{}
- 配置后端服务器池,以提供相应数据
- proxy_pass http://服务池名
- 配置将访问请求转发给后端服务器池的服务器处理
- upstream 服务池名{}
三,为什么使用nginx?
在传统的web项目中,并发量小,用户使用的少,所以在低并发的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器返回消息给用户,理解如下图:
当然我们知道,为了解决高并发,可以使用负载均衡,也就是我们多增加几个tomcat服务器,当用户访问的时候,请求可以提交到空闲的tomcat服务器上
总结就是:
反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
四,动静分离实现原理
-
服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由nginx提供服务,动态资源nginx转发至后端
-
nginx静态处理优势:
- nginx处理静态页面的效率远高于Tomcat的处理能力
- 若Tomcat的请求量为1000次,则nginx的请求量为6000次
- Tomct每秒的吞吐量为0.6M,nginx的每秒吞吐量为3.6M
- nginx处理静态资源的能力是Tomcat处理的6倍
五,NGINX,Tomcat负载均衡,动静分离案例
1,案例架构:
本架构同时实现了nginx的负载均衡和动态分离,静态页面由nginx处理,动态页面由nginx进行调度,分配给后端的两台Tomcat网站服务器,权重值为1:1
Nginx负载均衡器 | 20.0.0.10 | nginx |
---|---|---|
Tomcat网站服务node1 | 20.0.0.20 | jdk,apache-tomcat |
Tomcat网站服务node2 | 20.0.0.30 | jdk,apache-tomcat |
2,NGINX部署
1,安装jdk环境
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# tar zxf jdk-8u91-linux-x64.tar.gz -C /usr/local/
[root@localhost ~]# vim /etc/profile
最后加入如下内容
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost ~]# source /etc/profile
2,安装tomcat软件,创建软连接
tar zxf apache-tomcat-8.5.16.tar.gz -C /usr/local/
cd /usr/local/
mv apache-tomcat-8.5.16/ tomcat
ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
3,创建web目录,分别为两个节点创建两个不同内容
[root@localhost local]# mkdir -pv /web/webapp1
mkdir: 已创建目录 "/web"
mkdir: 已创建目录 "/web/webapp1"
[root@localhost local]# vim /web/webapp1/index.jsp
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>动态页面</title>
</head>
<body>
<h1>动态页面01</h1>
<p>这是个动态页面01</p> ##此处节点2编辑为<p>这是个动态页面02</p>,其余相同
</body>
</html>