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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
可观测监控 Prometheus 版,每月50GB免费额度
简介: 带你读《Apache Tomcat的云原生演进》——Tomcat的技术内幕和在喜马拉雅的实践(5)

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

3. Classload Feature

image.png

Tomcat一直比servlet多,classload机制,它打破了双亲委派模型。我们JDKclassload一般都是一层一层先问,我们先问他的附近有没有交代,一直到最顶上去。Tomcat的整个原理是,首先classpath指定,然后这两个,CommonClassLoader有自己的class。它主要做了WebAppClassLoader,因为Tomcat支持部署多个服务,我们一般还能做多个业务。

 

那么它怎么隔离呢?

 

每个应用都有一个WebAppClassLoader,它会进入JDK里面加载一下。然后它这里两个顺序,一个是从WEB-INF下的Class,这个是我们自己写代码的ClassPath,还有一个我们依赖包。而且它还分顺序,需要先加载class,这就是为什么我们能把我们依赖的第三方框架重写,还能加载的有序。因为Tomcat先加载了class,我们编译的class里面的路径代码,再加的依赖包里面的路径。

4. Performance Optimization

image.png

 image.png

 

我们的实践基本上都是用Tomcat来做的,不论是通过Tomcat部署的,还是SpringBoot嵌套的,全部默认的是Tomcat容器。

 

此外,还有一些个性化配置:

 

线程数,阻塞web服务可以2k:我们所有的web都是IO型的,你要读数据库、调rpc、调各种远程服务都是偏阻塞型的。web服务你基本都可以设定很大的线程数,要不然很容易不饱满。

 

Backlog,连接队列1024gc影响建连:因为TPC以后,你需要先到Backlog里面等到accept建连,所以我们设置成1024,你在gc可能会影响你的建连。

 

maxHeepAliveRequests 1024,提升连接复用次数:Tomcat连接多少次是有限制的,默认最多100次,比如请求往里发送100次之后,它就会把你close,如果不close就会报错。所以我们会把次数调的比较大,让连接尽可能复用,减少建连的开销。

 

maxHttpHeaderSize 32k,和网关一致,减少400code:如果你公司会经过网关,

 

经过Tomcat,一些头比较大的时候,可能会等你400排查是哪里的问题。因为我们碰到很多这种case,所以我们尽快把全链路设置的一样大,减少配置的问题。

 

对象池技术,下面两张图是Tomcat用的最多的链接池,和每个请求相关:

 

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

相关文章
|
9天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
22天前
|
消息中间件 存储 监控
构建高可用性Apache Kafka集群:从理论到实践
【10月更文挑战第24天】随着大数据时代的到来,数据传输与处理的需求日益增长。Apache Kafka作为一个高性能的消息队列服务,因其出色的吞吐量、可扩展性和容错能力而受到广泛欢迎。然而,在构建大规模生产环境下的Kafka集群时,保证其高可用性是至关重要的。本文将从个人实践经验出发,详细介绍如何构建一个高可用性的Kafka集群,包括集群规划、节点配置以及故障恢复机制等方面。
57 4
|
23天前
|
Cloud Native 前端开发 JavaScript
前端开发者必看:不懂云原生你就OUT了!揭秘如何用云原生技术提升项目部署与全栈能力
【10月更文挑战第23天】随着云计算的发展,云原生逐渐成为技术热点。前端开发者了解云原生有助于提升部署与运维效率、实现微服务化、掌握全栈开发能力和利用丰富技术生态。本文通过示例代码介绍云原生在前端项目中的应用,帮助开发者更好地理解其重要性。
55 0
|
7天前
|
运维 Kubernetes Cloud Native
云原生技术入门及实践
【10月更文挑战第39天】在数字化浪潮的推动下,云原生技术应运而生,它不仅仅是一种技术趋势,更是企业数字化转型的关键。本文将带你走进云原生的世界,从基础概念到实际操作,一步步揭示云原生的魅力和价值。通过实例分析,我们将深入探讨如何利用云原生技术提升业务灵活性、降低成本并加速创新。无论你是云原生技术的初学者还是希望深化理解的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
21天前
|
存储 数据挖掘 数据处理
巴别时代使用 Apache Paimon 构建 Streaming Lakehouse 的实践
随着数据湖技术的发展,企业纷纷探索其优化潜力。本文分享了巴别时代使用 Apache Paimon 构建 Streaming Lakehouse 的实践。Paimon 支持流式和批处理,提供高性能、统一的数据访问和流批一体的优势。通过示例代码和实践经验,展示了如何高效处理实时数据,解决了数据一致性和故障恢复等挑战。
100 61
|
9天前
|
运维 Cloud Native 安全
云原生技术在现代软件开发中的实践与挑战####
【10月更文挑战第21天】 本文将深入探讨云原生技术在现代软件开发中的应用,分析其带来的优势及面临的挑战。通过案例分析和数据支持,揭示云原生化转型的关键因素,并展望未来发展趋势。 ####
28 7
|
9天前
|
Cloud Native 持续交付 云计算
云原生技术入门与实践
【10月更文挑战第37天】本文旨在为初学者提供云原生技术的基础知识和实践指南。我们将从云原生的概念出发,探讨其在现代软件开发中的重要性,并介绍相关的核心技术。通过实际的代码示例,我们展示了如何在云平台上部署和管理应用,以及如何利用云原生架构提高系统的可伸缩性、弹性和可靠性。无论你是云原生领域的新手,还是希望深化理解的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
|
7天前
|
弹性计算 Kubernetes Cloud Native
云原生技术的实践与思考
云原生技术的实践与思考
22 2
|
8天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用架构中的实践与思考
【10月更文挑战第38天】随着云计算的不断成熟和演进,云原生(Cloud-Native)已成为推动企业数字化转型的重要力量。本文从云原生的基本概念出发,深入探讨了其在现代应用架构中的实际应用,并结合代码示例,展示了云原生技术如何优化资源管理、提升系统弹性和加速开发流程。通过分析云原生的优势与面临的挑战,本文旨在为读者提供一份云原生转型的指南和启示。
24 3
|
7天前
|
边缘计算 Cloud Native 安全
云原生技术的未来发展趋势
云原生技术的未来发展趋势
23 1

热门文章

最新文章

推荐镜像

更多