返回顶部
首页 > 资讯 > 前端开发 > html >如何理解Apache Tomcat 8 中的 NIO2
  • 739
分享到

如何理解Apache Tomcat 8 中的 NIO2

2024-04-02 19:04:59 739人浏览 泡泡鱼
摘要

这篇文章给大家介绍如何理解Apache Tomcat 8 中的 NIO2,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Apache Tomcat 8 有一个新的基于 Nio

这篇文章给大家介绍如何理解Apache Tomcat 8 中的 NIO2,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Apache Tomcat 8 有一个新的基于 Nio 2 的连接器正接近正常的使用状态,而现在被标记成测试版。 NIO 2 不仅向 Servlet 3。1的异步IO看齐,它还不止这一个好处。

速度

首先,是一个快速的速度测试。 原生的速度使用一个Servlet写1KB的数据来衡量,使用 ab -k -c 100 (启用超过100个并发连接并保持存活) 以让其只去测量做一次快的写入和在两个请求之前保持连接。 明显这是一个可怕的环境标准,但是这个主意只是要看看 NIO 2 是不是足够快,因为在你注意到它的高级api的时候,它看起来是有点慢的。 这可能会消除NIO 2作为一个很有用的解决方案在你心目中的存在感,因为Tomcat中已经存在一个稳定的NIO连接器了,不过在可选范围的另外一端,APR是接近原生速度的。 我很高兴的像大家报告 NIO 2 显著地比 NIO 在这种纯块/轮询的压力测试上要快,要快上大约50%,并且相当于APR做这种任务的速度。

在这个关键问题有了结果之后,我们就有了一个比目前的连接器更优雅的选择,因为NIO和APR的轮询管理,NIO的阻塞IO和APR的本地代码已经被证明存在看似无休止的复杂、思索、奔溃、平台特定等诸多问题。

不过,尽管一些初步的薄弱环节已经确定可以使用jsSE和静态文件服务(见下文)来解决,其在现实世界的好处和资源消耗怎么样现在还是个未知数。 随着线程和轮询管理被完全的抽象出来,JVM最终将会把一切掌控起来,已提供优化的行为。

一个简单的API

那么它是一个简单的API吗 ? 实际上,只有阻塞IO使用NIO 2来做才非常简单。 像使用NIO一样,一次读或者写会立即返回结果,但是不同于 NIO 这种操作没必要是完整的,它还可以继续异步存在与进程中。 为了能有所显示,最基本的读/写API都使用到了一个可以在一旁被轮询(这是一个糟糕的点子)或者阻塞的Future对象。因此,简单的带有操作时效的阻塞,看起来不错。

"非阻塞"由于在Servlet 3。1中被引入,需要使用更加复杂的使用任务完成处理程序来通知操作现在已经完成的API。 那同样也是听起来很简单,但是有特殊的问题需要处理,因为NIO 2 API不会提供让处理那种问题更简单的所有东西。 一次调用可以完全是(很明显也可以不是)完全内联的,同步是不直观的 (当一个操作被挂起是,没有代码块会同步上,不过看样子一些像buffer这样的重要的对象的状态没有被定义;死的风险也还存在),不完整的操作是可能的,等等。

API 确实对一些更加重要的IO进行了优化,使用分散和集中。 我尝试去利用Tomcat中后者的优势,未来可以在其上做更多的工作。

为什么NIO 2 会更好

NIO 2看起来简单,快速且直观,但它内部的一些东西仍有待改进。

发送文件的支持

NIO 的transferTo API并不被NIO 2 异步通道所支持,并且我不认为这样是明智的。 因此,尽管NIO 2连接器的原始速度不慢,并且在大多数情况下它也足够快速,但它仍不是***效的文件服务器。 虽然无关紧要,但因为实现起来也不太费事,所以这是个不幸。

JSSE集成

与使用SSL引擎的API类似,通过NIO可以提供良好控制和非阻塞能力。 但所有人都要写相似的异步通道封装代码。 而JSSE通道代码已经被NIO 2包括了。

JSSE (无) 速度

与OpenSSL相比,JSSE仍跟以前一样慢。 虽然到目前为止你已经对这伤心事有了免疫力,JSSE 现在仍看起来是在浪费服务器资源。 然而,这个 JVM组件是可拨插的,所以我们看以后是否会有所改善。

更好的状态控制

当使用completion handler时没法做像查询操作状态这样的基本的事,除非使用Future。 待定标识可以在其他地方获得,并且实际上这个标识是一个与future(能够等候待定操作完成)共享的int类型的信号灯。 虽然这看起来挺直观也没有什么困难的,但它会导致比需要的更为复杂。

关于如何理解Apache Tomcat 8 中的 NIO2就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何理解Apache Tomcat 8 中的 NIO2

本文链接: https://lsjlt.com/news/86245.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解Apache Tomcat 8 中的 NIO2
    这篇文章给大家介绍如何理解Apache Tomcat 8 中的 NIO2,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Apache Tomcat 8 有一个新的基于 NIO ...
    99+
    2024-04-02
  • Apache Tomcat如何高并发处理请求
    目录介绍接收Socket请求Socket请求轮询请求具体处理总结参考:介绍 作为常用的http协议服务器,tomcat应用非常广泛。tomcat也是遵循Servelt协议的,Serv...
    99+
    2024-04-02
  • Linux的CentOS 7中如何搭建Tomcat 8服务器
    这篇文章给大家分享的是有关Linux的CentOS 7中如何搭建Tomcat 8服务器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 Linux CentOS 7 搭建 Tom...
    99+
    2024-04-02
  • 如何理解Java 8中时间API
    本篇文章为大家展示了如何理解Java 8中时间API,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。留意到其中Java 8预览版中将会出现新的关于日期和时间的API(遵守JSR 310规范)。对这些新...
    99+
    2023-06-17
  • 如何理解Apache配置文件中的deny与allow
    如何理解Apache配置文件中的deny与allow,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Apache配置文件中的deny与allow小结,本文着重讲解了deny和al...
    99+
    2023-06-05
  • 如何理解Java 8中的日期和时间API和JSR310
    这期内容当中小编将会给大家带来有关如何理解Java 8中的日期和时间API和JSR310,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。博客一个月没更新了,这次给大家讲下java8时间与日期API。众所周知...
    99+
    2023-06-17
  • tomcat中startup闪退如何解决
    当Tomcat启动时出现闪退或立即退出的情况,可能是由于以下原因导致:1. Java环境配置错误:确保Java环境变量已正确配置,并...
    99+
    2023-10-10
    tomcat startup
  • 如何理解Java 8异步编程CompletableFuture
    本篇内容介绍了“如何理解Java 8异步编程CompletableFuture”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本文大纲速看一、...
    99+
    2023-06-15
  • apache中不解析php7如何解决
    这篇文章将为大家详细讲解有关apache中不解析php7如何解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。解决Apache无法解析PHP问题编辑httpd.conf文件添加如下代码Loa...
    99+
    2023-06-15
  • 如何理解Java 8到Java 15的发展历程
    本篇内容介绍了“如何理解Java 8到Java 15的发展历程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!函数式编程(Java 8)在Ja...
    99+
    2023-06-15
  • IDEA中的Tomcat中文乱码问题如何解决
    这篇文章主要介绍“IDEA中的Tomcat中文乱码问题如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“IDEA中的Tomcat中文乱码问题如何解决”文章能帮助大家解决问题。1、IDEA2、VM...
    99+
    2023-07-05
  • tomcat的startup闪退如何解决
    Tomcat的startup闪退可能是由于多种原因引起的,以下是一些常见的解决方法:1. 检查日志:查看Tomcat的日志文件,通常...
    99+
    2023-09-23
    tomcat
  • HTML5 UTF-8 中文乱码如何解决
    本篇内容主要讲解“HTML5 UTF-8 中文乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML5 UTF-8 中文乱码如何解决”吧!代码如下:...
    99+
    2024-04-02
  • 在tomcat中如何配置域名解析
    在tomcat中配置域名解析的方法首先,计算机中打开系统磁盘;系统磁盘打开后,在磁盘中查找到hosts文件,hosts文件位置:C:\Windows\System32\Drivers\etc\hosts;查找到hosts文件后,使用记事本打...
    99+
    2024-04-02
  • tomcat输出中文乱码如何解决
    要解决Tomcat输出中文乱码的问题,可以参考以下几个步骤:1. 在Tomcat的配置文件server.xml中,找到Connect...
    99+
    2023-09-23
    tomcat
  • linux中Apache如何禁止解析php
    这篇文章给大家分享的是有关linux中Apache如何禁止解析php的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。如果网站有漏洞,万一有人在网站上上传一些***文件,就会存储在网...
    99+
    2024-04-02
  • LAMP中Apache如何禁止解析php
    这篇文章主要介绍了LAMP中Apache如何禁止解析php,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。    &nbs...
    99+
    2024-04-02
  • 解析PHP中8%3等于0的原理
    PHP中8%-3等于0的原理解析 在PHP中,进行数学计算是非常常见的操作。有时候,我们会遇到一些奇怪的结果,比如8%3的结果是0。为什么会有这样的结果呢?这篇文章将会解析PHP中8%-3等于0的原理。 在解析这个问题之前,我们...
    99+
    2024-01-26
    原理:在PHP中
  • 如何理解Java规则引擎Apache Camel 2.9.1
    本篇文章为大家展示了如何理解Java规则引擎Apache Camel 2.9.1,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Apache Camel 2.9.1 修复了109个bug。Apache...
    99+
    2023-06-17
  • php转utf-8中文乱码如何解决
    本篇内容主要讲解“php转utf-8中文乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php转utf-8中文乱码如何解决”吧!php转utf-8中文乱码的解决办法:1、在代码开始处加...
    99+
    2023-07-05
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作