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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 带你读《Apache Tomcat的云原生演进》——Tomcat的技术内幕和在喜马拉雅的实践(4)

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


2. Memory Model

image.png

 

接下来介绍一下Tomcat的内存模型。在平时的开发中,Tomcat确实做的太优秀了,几乎感觉不到它里面的buff建连过来到它读出来再到我们。Tomcat是基于servlet规划实现的web容器,所以我们拿到的第一个Tomcat的接口API是Servlet API。

 

它里面屏蔽了很多种内存,到底是操作系统读出来,读出来它里面是怎么copy的,到我们拿到的request参数和url它中间经历了多少复制,以及中间是怎么管理的,我们平时几乎没有机会去了解。这是我们之前做API网关的时候,我们压测到性能问题的时候发现的,所以我们就对它们整个内部原理进理解了一下。总结出了这张图,它内存buff的原理。

 

首先它缓存了请求行和请求头,从内核端到用户端我们一直拷贝,因为Tomcat也支持APR协议,这个协议是堆外内存的,所以它不需要那么多拷贝。但我们默认的http协议默认都是内存的,所以必须要通过从内核端到用户端,通过内存的转换再到它的整个包,这中间有两个拷贝。

 

拷贝过来以后中间有一个ByteBuffer,它的请求行还没写成原则,请求行的headermethodurlquerystring的协议都缓存在ByteBuffer里面。整个头有一个结束的标志叫HeadEndOffset,因为这些是不变的,我们在读body数据是时候,不会把前面的数据给覆盖掉了。

 

因为body可能就不到512k或者256k就够了,但body可能是一个大的Pod请求,可能要发几k数据。因为Socketsize默认是8k,如果你的post请求是16k,你可能要拷贝多少次。它就会再对外出来,再拷贝到ByteBuffer里面,从HeadEndOffset那里重新写数据,再整个上到上面的PostDataByte。所以如果整个拷贝出来,要经过三次的拷贝我们的Post请求。

 

image.png

写模型我们一般是GetPutBufferOutPutBuffer,里面我们的那些请求,CharBuffer里面是响应行和响应头,再写到ByteBuffer里面去。


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

相关文章
|
7天前
|
监控 Cloud Native 持续交付
构建未来:云原生技术驱动的云计算平台
【5月更文挑战第52天】 随着数字化转型的不断深化,企业对于敏捷性、可扩展性和成本效益的需求日益增长。本文探讨了如何通过采纳云原生技术来构建和优化云计算平台,以支持不断变化的业务需求。文章首先概述了云原生技术的核心概念及其优势,随后详细分析了在设计云平台时应考虑的关键要素,并通过案例研究展示了云原生实践在实际中的应用效果。最后,文章提出了面向未来的云平台发展趋势和挑战。
|
2天前
|
Java 数据库连接 Apache
深入理解Apache Commons Pool2池化技术
深入理解Apache Commons Pool2池化技术
|
4天前
|
人工智能 运维 Cloud Native
活动回顾丨云原生技术实践营 Serverless + AI 专场 (深圳站) 回顾 & PPT 下载
云原生技术实践营 Serverless + AI 专场 (深圳站) 回顾。
|
8天前
|
人工智能 运维 Cloud Native
云端融合:探索云原生技术的未来趋势
【6月更文挑战第19天】 在数字化时代的浪潮中,云原生技术如同一颗耀眼的星辰,引领着软件开发和运维的新方向。本文将深入探讨云原生技术的核心概念、优势以及面临的挑战,并通过案例分析展现其在实际应用中的成效。我们将一窥云原生技术如何推动企业IT架构的现代化转型,以及它在未来可能带来的行业变革。
|
5天前
|
运维 Cloud Native 开发者
云原生技术演进:从微服务到无服务器计算
【6月更文挑战第22天】 云原生技术如同一场持续的演化之旅,它不断重塑着应用的开发与部署方式。本文将探讨云原生技术如何从微服务架构演变至无服务器计算,以及这一转变对开发者和运维人员带来的深远影响。通过分析容器化、持续集成/持续部署(CI/CD)、微服务治理等关键概念,我们将揭示云原生技术如何在提高应用的可伸缩性、灵活性和可靠性的同时,也提出了新的挑战和机遇。
|
2天前
|
运维 Cloud Native 持续交付
云原生技术在现代企业中的应用与挑战
云原生技术,作为一种新兴的云计算范式,正在引领着企业IT架构的变革。它的核心在于构建和运行可弹性扩展的应用程序,充分利用云平台的灵活性和可扩展性。然而,云原生技术的引入并非一帆风顺,企业在享受其带来的便利的同时,也面临着一系列挑战。本文将从云原生技术的定义、优势、应用场景以及面临的挑战等方面进行探讨,旨在为企业在云原生转型过程中提供参考和借鉴。
|
4天前
|
运维 Cloud Native 持续交付
云原生技术的崛起与应用前景
在当今快速发展的科技领域中,云原生技术作为一种革命性的开发和部署方式,正以其灵活性和效率优势改变着软件开发和运维的面貌。本文将探讨云原生技术的定义、关键特性以及在现代软件开发中的应用前景,旨在帮助读者深入理解这一新兴技术的重要性和实际价值。
14 3
|
2天前
|
存储 运维 OLAP
抖音集团基于 SelectDB 内核 Apache Doris 的实时数据仓库实践
在直播、电商等业务场景中存在着大量实时数据,这些数据对业务发展至关重要。而在处理实时数据时,我们也遇到了诸多挑战,比如实时数据开发门槛高、运维成本高以及资源浪费等。
抖音集团基于 SelectDB 内核 Apache Doris 的实时数据仓库实践
|
8天前
|
Java 应用服务中间件 Apache
安装和配置Apache Tomcat是部署Java Web应用程序的常见任务
安装和配置Apache Tomcat是部署Java Web应用程序的常见任务
37 7
|
4天前
|
人工智能 Cloud Native Serverless
云原生技术实践营 · 深圳站:Serverless + AI 专场开启报名!
“云原生技术实践营 · 深圳站 ——Serverless + AI 应用开发专场”是一场以 Serverless 为主题的技术活动,通过一个下午的时间增进对 Serverless 技术的理解,快速上手,活动受众以关注 Serverless 技术的开发者、企业决策人、云原生领域创业者为主,活动形式为演讲、动手实操。

推荐镜像

更多