深入拆解Tomcat & Jetty
李号双
eBay技术主管
立即订阅
6067 人已学习
课程目录
已完结 44 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | Java程序员如何快速成长?
免费
模块一 必备基础 (4讲)
01 | Web容器学习路径
02 | HTTP协议必知必会
03 | 你应该知道的Servlet规范和Servlet容器
04 | 实战:纯手工打造和运行一个Servlet
模块二 整体架构 (9讲)
05 | Tomcat系统架构(上): 连接器是如何设计的?
06 | Tomcat系统架构(下):聊聊多层容器的设计
07 | Tomcat如何实现一键式启停?
08 | Tomcat的“高层们”都负责做什么?
09 | 比较:Jetty架构特点之Connector组件
10 | 比较:Jetty架构特点之Handler组件
11 | 总结:从Tomcat和Jetty中提炼组件化设计规范
12 | 实战:优化并提高Tomcat启动速度
13 | 热点问题答疑(1):如何学习源码?
模块三 连接器 (9讲)
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):内核如何阻塞与唤醒进程?
模块四 容器 (8讲)
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框架中的设计模式
模块五 通用组件 (4讲)
31 | Logger组件:Tomcat的日志框架及实战
32 | Manager组件:Tomcat的Session管理机制解析
33 | Cluster组件:Tomcat的集群通信原理
特别放送 | 如何持续保持对学习的兴趣?
模块六 性能优化 (8讲)
34 | JVM GC原理及调优的基本思路
35 | 如何监控Tomcat的性能?
36 | Tomcat I/O和线程池的并发调优
37 | Tomcat内存溢出的原因分析及调优
38 | Tomcat拒绝连接原因分析及网络优化
39 | Tomcat进程占用CPU过高怎么办?
40 | 谈谈Jetty性能调优的思路
41 | 热点问题答疑(4): Tomcat和Jetty有哪些不同?
结束语 (1讲)
结束语 | 静下心来,品味经典
深入拆解Tomcat & Jetty
登录|注册

11 | 总结:从Tomcat和Jetty中提炼组件化设计规范

李号双 2019-06-04
在当今的互联网时代,我们每个人获取信息的机会基本上都是平等的,但是为什么有些人对信息理解得更深,并且有自己独到的见解呢?我认为是因为他们养成了思考和总结的好习惯。当我们学习一门技术的时候,如果可以勤于思考、善于总结,可以帮助我们看到现象背后更本质的东西,让我们在成长之路上更快“脱颖而出”。
我们经常谈敏捷、快速迭代和重构,这些都是为了应对需求的快速变化,也因此我们在开始设计一个系统时就要考虑可扩展性。那究竟该怎样设计才能适应变化呢?或者要设计成什么样后面才能以最小的成本进行重构呢?今天我来总结一些 Tomcat 和 Jetty 组件化的设计思想,或许从中我们可以得到一些启发。

组件化及可配置

Tomcat 和 Jetty 的整体架构都是基于组件的,你可以通过 XML 文件或者代码的方式来配置这些组件,比如我们可以在 server.xml 配置 Tomcat 的连接器以及容器组件。相应的,你也可以在 jetty.xml 文件里组装 Jetty 的 Connector 组件,以及各种 Handler 组件。也就是说,Tomcat 和 Jetty 提供了一堆积木,怎么搭建这些积木由你来决定,你可以根据自己的需要灵活选择组件来搭建你的 Web 容器,并且也可以自定义组件,这样的设计为 Web 容器提供了深度可定制化。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深入拆解Tomcat & Jetty 》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(14)

  • 王超
    非常赞,这样的总结让人醍醐灌顶,触类旁通!期待后续精彩分享
    2019-06-04
    14
  • 苏忆
    老师,您出源码分析的书吧,感觉讲解的是我见过源码分析最好的,把原理设计说的特别好。
    2019-09-26
    4
  • QQ怪
    非常赞,总结的非常到位,并且又对设计模式回温了下,感谢老师的分享!
    2019-06-04
    3
  • Demter
    老师还要开别的专栏吗啊

    作者回复: 目前没打算,写专栏真的挺累的😄

    2019-08-14
    1
    1
  • 秋天
    面向接口编程和模板方法模式 都是经典的模式,模板方法模式用来抽象高层执行的一个骨架,对于每个变化的点 放到子类取实现 做到开闭原则
    2019-07-17
    1
  • Geek_00d567
    tomcat,jetty共同点:
    1.组件化及可配置
    2.生命周期
    3.组件骨架抽象类,模板模式
    4.观察者模式
    5.责任链模式



    敏捷开发中,很少用到设计模式,需求变化太快。。。稳定的需求,或者系统的核心逻辑,可以考虑。
    2019-06-06
    3
    1
  • 代码搬运工
    这些扩展点被定义成一个个接口,只要你的 Bean 实现了这些接口,Spring 就会负责调用这些接口,老师,spring是怎么判断这些接口被实现了,就调用接口的方法。
    还有就是好多扩展原理都是创建一个类去实现接口,然后会自动调用接口的方法,比如springMVC的lan jie (敏感词)器,这个原理是怎么实现的呢?组件是怎么判断这个接口被实现了,就可以被调用?

    作者回复: Java里有个isinstanceof.

    2019-06-04
    1
  • 往事随风,顺其自然
    怎么自己编写一个jetty 服务器,像spring boot 内嵌式的

    作者回复: https://github.com/jetty-project/embedded-jetty-jsp 这里有例子

    2019-06-04
    1
  • 靠人品去赢
    这个对比Spring和web容器的比较很赞,我之前知道spring加载类,web应用加载类,但是从没想到过,这个spring的类加载是靠着web应用的类加载器来加载的,那是不是没有web应用,spring是不是不能实现实例化和注入了?这部分是不是也在spring的framework包里,那部分?
    2019-09-25
  • 张德
    springboot优化的时候 是在bootstrap.yml里面配置上文中的参数吗??李老师

    作者回复: 官方文档有介绍
    https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-web-servers.html

    2019-06-21
  • 欠债太多
    关于源代码的阅读,老师有什么好的建议或方法么?

    作者回复: 13篇会详细介绍

    2019-06-05
  • breezeQian
    老师好,最近也在看 tomcat 的源码,对 tomcat 的 StandardService 类中的 executors 字段不太理解,这个东西有什么作用吗?

    作者回复: executor是线程池,加了s表示一个service有多个线程池,一个Connector一个。

    2019-06-04
  • Royal
    您好,请问该栏目会涉及JAX-RS的内容么?我想请教下关于这块javax.ws.rs.container.AsyncResponse的内容

    作者回复: 有相关的部分,异步Servlet。

    2019-06-04
  • 朱晋君
    spring bean生命周期那张图,右下第二应该是postprocessAfterinitialization吧

    作者回复: 是的是的,我更正一下,谢谢指出。

    2019-06-04
收起评论
14
返回
顶部