深入拆解Tomcat
【课程介绍】
作为一名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的并发调优、内存调优和网络调优等。