带你读《Apache Tomcat的云原生演进》——Tomcat的技术内幕和在喜马拉雅的实践(1)

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
应用实时监控服务-用户体验监控,每月100OCU免费额度
可观测监控 Prometheus 版,每月50GB免费额度
简介: 带你读《Apache Tomcat的云原生演进》——Tomcat的技术内幕和在喜马拉雅的实践(1)

Tomcat的技术内幕和在喜马拉雅的实践

1. IO Thread Model

image.png 

 

Tomcat是一个非常完整、完善、功能非常强大的开源项目。我们每个人开始做开发,接触的第一个项目可能就是Tomcat。我们今天主要介绍的就是IO和线程模型,IO包括NIONIO2

 

上图是NIO的线程模型,它负责接收连接。Tomcat创建一个端口,然后我们接受浏览器发起的请求,accept线程是block,有连接就连接,没有连接就等待新的连接请求。

 

它接收连接之后,会创建一些Socket,然后把这些Socket放到EventQueue里,通过Poller线程消费EventQueue里的Socket,注册到Selector上。Poller线程负责Selector循环,确认上面是否有读/写事件,如果有读/写事件发生,就生产一个SocketProcessor,提交到Catalina work thread pool

 

image.png 

 

Poller线程负责将读取事件注册到Selector,创建SocketProcessor提交到Catalina线程池里,从Selector注销读取事件。有一个读事件过来了,它要提交到SocketProcessor真正去处理这个请求。但是Poller线程不负责读,它只做事件触发机制。即告诉你一个事件请求过来了,你可以开始读了。

 

然后它要把这个事件unregister掉,因为一个请求需要保证只有一个Catalina work线程处理,否则就又会创建一个Socket交给另外一个线程处理。所以在Catalina work线程处理的时候,一定不能有另外一个线程去读Socket的数据,否则包就会乱掉,所以就会有unregister这个操作。

 

image.png 

 

刚刚讲了Poller线程只是告诉你有读事件可以读了,具体的IO的操作还是由Catalina work线程处理。具体的操作包括解析请求行没有阻塞、解析头无阻塞、过滤器路由器、servlet路由器、读body阻塞。


带你读《Apache Tomcat的云原生演进》——Tomcat的技术内幕和在喜马拉雅的实践(2)https://developer.aliyun.com/article/1377542

相关文章
|
2月前
|
Kubernetes Cloud Native 安全
云原生架构的演进与实践
随着云计算技术的不断发展,云原生架构已成为现代软件开发的核心趋势。本文旨在探讨云原生架构的演变历程、核心理念及在实际项目中的应用案例。通过对Kubernetes、Docker等关键技术的分析,结合微服务架构的设计原则,本文将揭示如何构建高效、可扩展且易于维护的云原生应用。
52 10
|
26天前
|
Cloud Native 持续交付 开发者
云原生技术在现代企业中的应用与实践####
本文深入探讨了云原生技术的核心概念及其在现代企业IT架构转型中的关键作用,通过具体案例分析展示了云原生如何促进企业的敏捷开发、高效运维及成本优化。不同于传统摘要仅概述内容,本部分旨在激发读者对云原生领域的兴趣,强调其在加速数字化转型过程中的不可或缺性,为后续详细论述奠定基础。 ####
|
16天前
|
Cloud Native 安全 Java
铭师堂的云原生升级实践
铭师堂完整经历了云计算应用的四个关键阶段:从”启动上云”到”全量上云”,再到”全栈用云”,最终达到”精益用云”。通过 MSE 云原生网关的落地,为我们的组织带来了诸多收益,SLA 提升至100%,财务成本降低67%,算力成本降低75%,每次请求 RT 减少5ms。
铭师堂的云原生升级实践
|
1天前
|
存储 人工智能 调度
容器服务:智算时代云原生操作系统及月之暗面Kimi、深势科技实践分享
容器技术已经发展成为云计算操作系统的关键组成部分,向下高效调度多样化异构算力,向上提供统一编程接口,支持多样化工作负载。阿里云容器服务在2024年巴黎奥运会中提供了稳定高效的云上支持,实现了子弹时间特效等创新应用。此外,容器技术还带来了弹性、普惠的计算能力升级,如每分钟创建1万Pod和秒级CPU资源热变配,以及针对大数据与AI应用的弹性临时盘和跨可用区云盘等高性能存储解决方案。智能运维方面,推出了即时弹性节点池、智能应用弹性策略和可信赖集群托管运维等功能,进一步简化了集群管理和优化了资源利用率。
|
15天前
|
Cloud Native 安全 Java
杭州铭师堂的云原生升级实践
在短短 2-3 年间,杭州铭师堂完整经历了云计算应用的四个关键阶段:从“启动上云”到“全量上云”,再到“全栈用云”,最终达到“精益用云”。也从云计算的第一次浪潮,迈过了第二次浪潮,顺利的进入到了 第三次浪潮 AI + 云。
|
2月前
|
存储 消息中间件 分布式计算
Cisco WebEx 数据平台:统一 Trino、Pinot、Iceberg 及 Kyuubi,探索 Apache Doris 在 Cisco 的改造实践
Cisco WebEx 早期数据平台采用了多系统架构(包括 Trino、Pinot、Iceberg 、 Kyuubi 等),面临架构复杂、数据冗余存储、运维困难、资源利用率低、数据时效性差等问题。因此,引入 Apache Doris 替换了 Trino、Pinot 、 Iceberg 及 Kyuubi 技术栈,依赖于 Doris 的实时数据湖能力及高性能 OLAP 分析能力,统一数据湖仓及查询分析引擎,显著提升了查询性能及系统稳定性,同时实现资源成本降低 30%。
Cisco WebEx 数据平台:统一 Trino、Pinot、Iceberg 及 Kyuubi,探索 Apache Doris 在 Cisco 的改造实践
|
15天前
|
Cloud Native
邀您参加云原生高可用技术沙龙丨云上高可用体系构建:从理论到实践
云原生高可用技术专场,邀您从理论到实践一起交流,探索云上高可用体系构建!
|
26天前
|
Kubernetes Cloud Native API
云原生入门:从理论到实践的探索之旅
本文旨在为初学者提供一个关于云原生技术的全面介绍,包括其定义、核心原则、关键技术组件以及如何将这些概念应用于实际项目中。我们将通过一个简易的代码示例,展示如何在云原生环境下部署一个简单的应用,从而帮助读者更好地理解云原生技术的实践意义和应用价值。
|
1天前
|
运维 监控 Cloud Native
云原生之运维监控实践:使用 taosKeeper 与 TDinsight 实现对 时序数据库TDengine 服务的监测告警
在数字化转型的过程中,监控与告警功能的优化对保障系统的稳定运行至关重要。本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品之一,详细介绍了如何利用 TDengine、taosKeeper 和 TDinsight 实现对 TDengine 服务的状态监控与告警功能。作者通过容器化安装 TDengine 和 Grafana,演示了如何配置 Grafana 数据源、导入 TDinsight 仪表板、以及如何设置告警规则和通知策略。欢迎大家阅读。
13 0
|
28天前
|
运维 Cloud Native 开发者
云原生技术入门与实践
在云计算的浪潮中,云原生技术以其独特的优势和魅力吸引了越来越多的开发者和企业。本文将从云原生技术的基本概念、核心组件以及实际应用三个方面进行详细介绍,帮助读者更好地理解和掌握这一新兴技术。同时,文章还将分享一些实际案例和经验教训,让读者能够更深入地了解云原生技术的应用场景和发展趋势。
39 5

推荐镜像

更多