
作为一名 Java Web 开发工程师,不知道你是否有过下面这些经历:
- 对一些 Java 技术感觉似懂非懂?
- 不知道怎么把 Java 技术用到实际的项目中?
- 给你一个业务场景,拿不出靠谱的设计方案?
- Spring 框架层面的问题不知道如何定位和修复?
- 性能调优没思路?
这其中的很多问题其实最终都指向经验不足、设计能力有待提高,没有深刻理解 Web 的工作原理。而 Web 容器 Tomcat 或 Jetty,作为重要的系统中间件,连接着浏览器和你的 Web 应用,并且支撑着 Web 程序的运行,可以说,弄懂了 Tomcat 和 Jetty 的原理,Java Web 开发对你来说就毫无秘密可言。
那么再换个角度,从一名 Java Web 开发工程师的成长来看,每个人都会经历:
- 维护老项目;
- 实现一个小模块;
- 独立设计一个子系统;
- 负责整体的架构方案。
你会发现其中个人的成长可能都会从 Tomcat 或 Jetty 开始,逐步积累经验,提高设计能力,最终成长为一名架构师。而且作为初学者,想要找准方向突破深度,Tomcat 和 Jetty 也是非常好的选择。
当然,如果你现在是一名运维或者中间件开发乃至架构师,同样的,每天的工作多少都离不开与 Tomcat 或 Jetty 打交道,它总是会在不同场合以不同问题的形式出现在我们面前。
所以不管你是初学、已经在使用或是认为自己已经非常熟悉它们,都有必要重新深入进去,掌握其中的设计精髓,并为自己所用。
在这个专栏里,李号双将会详细剖析 Tomcat 和 Jetty 的架构设计和原理,梳理实践中经常遇到的问题,深入分析并提供解决方法;还会带你学习大神们如何“用”Java 技术,帮你提升设计思维,解决你 Java Web 后端开发的“痛点”。
专栏分为 6 个模块。
模块一,帮你重新理解 HTTP 协议和 Servlet 规范,为深入学习 Servlet 容器 Tomcat 和 Jetty 打下基础。
模块二,带你深刻掌握 Tomcat 和 Jetty 的整体架构,提炼它们的组件化设计要点,实战优化 Tomcat 启动速度。
模块三,深入讲解连接器的详细设计和工作原理,和你一起了解 Tomcat 如何实现非阻塞和异步 I/O 通信、如何扩展 Java 原生线程池、如何支持 WebSocket;详解 Jetty 的线程策略 EatWhatYouKill;总结 Tomcat 和 Jetty 的对象池技术以及高并发高性能之道。
模块四,详细分析容器的设计和工作原理,讨论 Tomcat 的热加载热部署、类加载机制、Web 应用的隔离以及如何实现 Servlet 规范、如何实现异步 Servlet;探讨 Jetty 如何实现带有上下文信息的责任链;总结 Tomcat 和 Jetty 运用的设计模式。
模块五,介绍通用组件的设计和工作原理,包括日志组件、Session 管理组件和集群通信组件。
模块六,从实战出发,介绍 JVM 调优的原理、Tomcat 性能监控以及如何对 Tomcat 进行调优,包括线程池和 I/O 的并发调优、内存调优和网络调优等。
开篇词 | Java程序员如何快速成长? 01 | Web容器学习路径 02 | HTTP协议必知必会 03 | 你应该知道的Servlet规范和Servlet容器 04 | 实战:纯手工打造和运行一个Servlet 05 | Tomcat系统架构(上): 连接器是如何设计的? 06 | Tomcat系统架构(下):聊聊多层容器的设计 07 | Tomcat如何实现一键式启停? 08 | Tomcat的“高层们”都负责做什么? 09 | 比较:Jetty架构特点之Connector组件 10 | 比较:Jetty架构特点之Handler组件 11 | 总结:从Tomcat和Jetty中提炼组件化设计规范 12 | 实战:优化并提高Tomcat启动速度 13 | 热点问题答疑(1):如何学习源码? 14 | NioEndpoint组件:Tomcat如何实现非阻塞I/O? 15 | Nio2Endpoint组件:Tomcat如何实现异步I/O? 16 | AprEndpoint组件:Tomcat APR提高I/O性能的秘密 17 | Executor组件:Tomcat如何扩展Java线程池? 18 | 新特性:Tomcat如何支持WebSocket? 19 | 比较:Jetty的线程策略EatWhatYouKill 20 | 总结:Tomcat和Jetty中的对象池技术 21 | 总结:Tomcat和Jetty的高性能、高并发之道 22 | 热点问题答疑(2):内核如何阻塞与唤醒进程? 23 | Host容器:Tomcat如何实现热部署和热加载? 24 | Context容器(上):Tomcat如何打破双亲委托机制? 25 | Context容器(中):Tomcat如何隔离Web应用? 26 | Context容器(下):Tomcat如何实现Servlet规范? 27 | 新特性:Tomcat如何支持异步Servlet? 28 | 新特性:Spring Boot如何使用内嵌式的Tomcat和Jetty? 29 | 比较:Jetty如何实现具有上下文信息的责任链? 30 | 热点问题答疑(3):Spring框架中的设计模式 31 | Logger组件:Tomcat的日志框架及实战 32 | Manager组件:Tomcat的Session管理机制解析 33 | Cluster组件:Tomcat的集群通信原理 特别放送 | 如何持续保持对学习的兴趣? 34 | JVM GC原理及调优的基本思路 35 | 如何监控Tomcat的性能? 36 | Tomcat I/O和线程池的并发调优 37 | Tomcat内存溢出的原因分析及调优 38 | Tomcat拒绝连接原因分析及网络优化 39 | Tomcat进程占用CPU过高怎么办? 40 | 谈谈Jetty性能调优的思路 41 | 热点问题答疑(4): Tomcat和Jetty有哪些不同? 结束语 | 静下心来,品味经典 结课测试 | 这些Tomcat&Jetty的知识你都掌握了吗?


评论0