企业级 Web 应用服务器 Tomcat
一、Web 技术基础
C/S 与 B/S 架构:C/S 基于 TCP/UDP,需专用客户端(如 QQ);B/S 基于 HTTP 协议,通过浏览器访问,核心是动态网页技术(CGI、ASP、PHP、JSP),分前端(HTML/CSS/JS)和后端开发。
前端三大核心:HTML(超文本标记语言,定义网页结构)、CSS(层叠样式表,控制网页样式)、JavaScript(动态脚本语言,支持前后端通用,V8 引擎提升执行效率)。
同步与异步:同步需刷新整个页面,交互不友好;异步(Ajax)通过 XMLHttpRequest 实现局部更新,无需重载页面,促进前后端分离。
二、Web 架构模式
单体架构:所有功能模块打包为一个工程(如 WAR 包),部署在单台服务器,开发测试简单、部署方便,但耦合度高,修改升级需停整服务,适合小型应用。
微服务架构:拆分业务为独立服务,松耦合、独立部署,支持多语言开发,可单独扩展,但增加开发、测试、运维复杂度,需解决分布式事务和数据一致性问题,适合大型复杂系统。
主流微服务框架:Dubbo(阿里开源,Java RPC 框架,依赖 Zookeeper)、Spring Cloud(完整解决方案,基于 HTTP RESTful API)。
三、Tomcat 核心基础
核心定位:免费开源的轻量级 Web 应用服务器,是 Servlet 和 JSP 容器,支持处理 HTML 页面,仅实现 Java EE 中 Servlet、JSP 相关规范,属于不完整实现,适用于中小型系统和并发量不高的场景。
发展与版本:源于 SUN 的 Servlet 参考实现,1999 年贡献给 Apache 基金会,主流版本为 7.x 和 8.x,最新稳定版 9.x,官网:http://tomcat.apache.org/。
安装部署:
依赖 Java 环境,需先安装 JDK/JRE(推荐 1.8 版本)。
安装步骤:解压源码包→移动至指定目录(如 /usr/local/tomcat)→通过 bin 目录的 startup.sh(启动)、shutdown.sh(停止)脚本操作。
核心端口:默认 8080(HTTP 服务),启动后可通过浏览器访问http://IP:8080验证。
目录结构:
bin:启动、停止等脚本文件(如 startup.sh、shutdown.sh)。
conf:配置文件目录(核心配置 context.xml、server.xml)。
lib:依赖库目录。
logs:日志文件目录。
webapps:应用部署目录(类似 Nginx 的 html 目录)。
work:JSP 编译后的结果文件目录。
系统服务配置:
创建环境变量文件(指定 JAVA_HOME)。
编写 systemd 服务文件(/lib/systemd/system/tomcat.service),设置启动用户、执行命令,支持 systemctl 管理(启动、停止、开机自启)。
四、Tomcat 部署架构与负载均衡
常见部署方式:
单机模式(standalone):Tomcat 直接接收请求,不推荐生产环境。
单机反向代理:Nginx 作为前端,静态资源由 Nginx 处理,动态 JSP 请求转发给 Tomcat(LNMT/LAMT 架构)。
多机负载均衡:Nginx 作为负载均衡器,转发请求给多台 Tomcat,提升并发能力。
Nginx 反向代理配置:
匹配.jsp 后缀请求,通过 proxy_pass 转发至 Tomcat,示例:location ~ \.jsp$ { proxy_pass http://172.25.254.10:8080; }。
多机负载均衡配置:
Nginx 中通过 upstream 定义 Tomcat 服务器组,示例:upstream tomcat { server 172.25.254.10:8080; server 172.25.254.20:8080; }。
核心问题:HTTP 协议无状态,多台 Tomcat 间需解决 Session 共享,避免用户会话丢失。
五、Session 共享解决方案
Session 核心问题:Session 默认存储在 Tomcat 内存中,多机部署时,负载均衡会将同一用户请求分发至不同 Tomcat,导致 Session 找不到,需实现 Session 共享。
Memcached 基础:
基于 Key-Value 的内存缓存系统,不支持持久化,支持序列化数据,借助 libevent 实现高效读写,适合存储 Session,最大存储对象 1M。
安装启动:yum 安装 memcached→修改配置文件(端口 11211、最大连接数、缓存大小等)→systemctl 启动,默认监听 11211 端口。
核心命令:set/add/replace(存储 / 新增 / 修改)、get(查询)、delete(删除)、flush_all(清空)。
MSM 实现 Session 共享:
MSM(memcached session manager)是 Tomcat 的 Session 管理插件,支持将 Session 存储到 Memcached,实现高可用。
配置步骤:下载相关 JAR 包(如 msm 核心包、Kryo 序列化包、spymemcached 驱动包)→放入 Tomcat 的 lib 目录→修改 context.xml,配置 Memcached 节点、序列化方式等→Nginx 配置 hash $cookie_JSESSIONID; 实现会话绑定。
六、关键补充
HTTP 协议特性:无状态(需通过 Cookie/Session 识别用户)、基于 TCP 有连接、HTTP 1.1 支持 keep-alive 长连接,减少连接创建销毁开销。
Session 备份策略:Tomcat 实例生成 Session 后,同步备份至 Memcached 集群,某台 Tomcat 故障时,可从 Memcached 读取 Session,保障服务连续性。
更多推荐




所有评论(0)