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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
可观测链路 OpenTelemetry 版,每月50GB免费额度
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 带你读《Apache Tomcat的云原生演进》——Tomcat的技术内幕和在喜马拉雅的实践(3)

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

image.png

 

接下来做一个比较,看一看到底哪个更合适我们的业务场景使用。

 

NIO2NIO相比,优势是连接一过来,它就可以主动去读这个数据,这样就减少了很多的注册和取消的事件。像NIO它就会先注册一个读事件,然后等数据来了,再把注册取消掉,最后交给后面的Catalina work线程处理这个请求。此外,它的性能模型更简单,它少了Poller线程。

 

NIO2NIO相比,缺点是容易受慢客户端影响。刚开始有事件过来的时候,它用Poller线程来读,然后回调Catalina work线程让它继续读后面的数据。但是如果是没有Poller线程的情况下,body就会阻塞,而且这个时候是Catalina work线程。假如你设了100个线程值,但读body都阻塞了,那么后面Poller线段就会连接一个新的连接,然后提交一个任务到Catalina work线程来处理。但这个时候就会导致没有线程来处理新的连接事件的请求。

 

EPoll read 容易成为瓶颈。因为IO拷贝操作是poll线程的,所以如果是并发量比较大/body比较大的情况下,很容易使copy的进度比较慢,还可能会影响你的建连效率

 

增加了复杂性。与NIO相比,它的复杂性确实增加了很多,它有各种的回调。因为它是通过异步模拟的NIO写代码的方式。

 

此外,还有一点,NIO2文件发送没有基于应用操作系统这种拷贝模式,直接通过操作系统发到连接缓存的channel里去。但还是用了普通的IO 把它读出来,然后再把它写到channel里面去。相比NIO反而增加了它拷贝的次数。

 

那么到底怎么选呢?

 

Tomcat 910默认的还是NIO。通过官方的配置我们也能看得出来,它建议的还是NIO。虽然切换次数减少了,系统调用次数减少,系统的切换减少了。但是性能在我们平时功能可能感觉不到,所以对于稳定还是NIO这种模式。

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

相关文章
|
1天前
|
运维 Cloud Native Devops
云原生技术:构建弹性、高效和可扩展的现代应用
在当今数字化时代,企业面临着日益复杂的市场需求和技术挑战。为了满足这些需求,许多企业转向了云原生技术。云原生是一种以云计算为基础的架构和方法论,旨在构建弹性、高效和可扩展的现代应用程序。本文将深入探讨云原生技术的核心概念、优势以及实施过程中的关键步骤,帮助读者更好地理解和应用这一前沿技术。
13 6
|
1天前
|
Cloud Native Devops 持续交付
云原生技术:构建现代应用的新范式##
在当今数字化时代,企业正面临着前所未有的挑战和机遇。随着云计算技术的不断发展,越来越多的企业开始采用云原生架构来构建和部署应用程序。本文将探讨云原生技术的关键概念、优势以及如何利用这些技术来推动业务创新和增长。我们将从微服务架构、容器化、持续集成/持续部署(CI/CD)等方面深入分析云原生技术的核心原理,并分享一些成功案例,帮助读者更好地理解和应用云原生技术。 ##
|
4天前
|
设计模式 Cloud Native API
云原生时代的微服务架构实践
【9月更文挑战第23天】在这篇文章中,我们将深入探讨云原生环境下的微服务架构设计原则、优势以及实施策略。文章不仅涉及理论概念,还结合具体的代码示例,帮助读者理解如何在实际项目中应用微服务架构。通过阅读本文,你将获得构建、部署和管理微服务的实用知识,为你的云原生项目奠定坚实的基础。
|
1天前
|
运维 Cloud Native 安全
云原生技术在企业数字化转型中的作用
随着云计算技术的不断演进,云原生(Cloud Native)技术成为了推动企业数字化转型的重要驱动力。本文将深入探讨云原生技术的核心概念、主要特点及其在实际应用中的优势和挑战,旨在帮助读者了解如何通过云原生技术实现更高效、灵活和创新的IT架构。
|
2天前
|
Cloud Native 持续交付 Docker
云原生技术入门与实践:Docker容器化部署示例
【9月更文挑战第25天】在数字化转型的浪潮下,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,为初学者揭示云原生技术的核心概念及其应用价值。我们将以Docker容器为例,逐步引导读者了解如何将应用程序容器化,并在云端高效运行。这不仅是对技术趋势的跟随,更是对资源利用和开发效率提升的探索。
12 4
|
2天前
|
运维 Cloud Native API
探索云原生技术:构建现代应用的新范式
在当今这个数字化时代,云原生技术正迅速成为推动企业数字化转型的关键力量。它不仅重新定义了应用的构建、部署和运行方式,还为企业带来了前所未有的灵活性、可扩展性和弹性。本文旨在深入探讨云原生技术的精髓,通过解析其核心概念、关键技术和实践案例,揭示云原生如何引领我们进入一个更加高效、智能的应用开发新时代。不同于传统的技术综述,本文将以通俗易懂的语言,结合条理清晰的逻辑结构,带领读者一同领略云原生技术的奥秘与魅力。
|
2天前
|
运维 Cloud Native Devops
云原生技术:构建现代应用的基石
本文深入探讨了云原生技术的核心概念、主要特点及其在现代软件开发和运维中的重要性。通过分析云原生技术的十二要素、微服务架构以及DevOps实践,揭示了云原生如何助力企业实现高效、灵活和可扩展的应用部署。同时,本文还讨论了云原生技术在实际应用中的优势与挑战,并展望了其未来的发展趋势。
13 4
|
4天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用开发中的实践与思考
【9月更文挑战第23天】本文将深入探讨云原生技术如何革新现代应用的开发流程。通过分析云原生的核心概念、优势以及实际应用案例,我们旨在揭示这一新兴技术范式如何助力开发者和企业更高效、灵活地构建和部署应用程序。文章还将提供具体代码示例,展示云原生技术在实际项目中的应用,帮助读者更好地理解和掌握该技术。
|
2天前
|
Kubernetes Cloud Native 持续交付
云原生技术:构建现代应用的基石
想象一下,如果我们的应用程序像水一样流动,自由地在各种环境中穿行,不受任何限制。这就是云原生技术的承诺——提供一种更加灵活、高效和可扩展的方法来构建和运行应用程序。本文将深入探讨云原生的核心概念、关键技术以及它如何改变我们的开发和部署方式,揭示这一技术如何成为现代应用不可或缺的基石。
|
2天前
|
Kubernetes Cloud Native 安全
云原生技术:构建高效、灵活的现代应用架构
本文深入探讨了云原生技术的核心概念、主要特点及其在现代应用开发中的重要性。通过分析云原生技术的实际应用案例,揭示了其如何帮助企业实现应用的快速迭代、弹性扩展和高可用性。同时,文章还讨论了采用云原生技术时面临的挑战及相应的解决策略,为读者提供了一套完整的云原生技术实践指南。

推荐镜像

更多