内容简介:aio_enhance 是一款无侵入式的 Java AIO 内核增强类库(注意:这不是一款通信框架),解决 Oracle 官方 Java AIO 的设计缺陷,提供更高效、更稳定的通信能力。 aio_enhance 采用了 NIO 技术,再结合自研的异步线程...
aio_enhance 是一款无侵入式的 Java AIO 内核增强类库(注意:这不是一款通信框架),解决 Oracle 官方 Java AIO 的设计缺陷,提供更高效、更稳定的通信能力。
aio_enhance 采用了 NIO 技术,再结合自研的异步线程模型重写了 AIO 实现逻辑,100% 兼容官方定义的接口。用户可自由选择 Oracle 官方提供的,或者 aio_enhance 增强的 AIO 实现,架构如下图。

除了线程模型的设计,我们还对 IO 调度模型做了一些改进。经由 aio_enhance 增强的通信服务,相较于官方 Java AIO 的吞吐能力会有 100% ~ 400% 的提升幅度。而相较业界主流 NIO 框架,aio_enhance 的性能表现高出 50% 以上。
一、项目背景
1.1 解决平台兼容性问题。
Java 原生 AIO 在 Mac 操作系统下存在兼容性问题,进行性能压测会偶发性的系统崩溃。
1.2 修复官方 AIO 架构缺陷
Java 原生 AIO 在底层架构设计上存在缺陷(参考:Java AIO通信模型)。多核 CPU 环境下处理高并发请求,会引发比较严重的锁竞争现象,以致无法充分发挥机器性能。
普通4核机器竞争压力不大,AIO 的运行表现实测优于NIO。但随着 CPU 核数的增加,AIO 的性能优势逐渐下降。
1.3 优化 AIO 线程模型
Java AIO 相较于 NIO 多了一层异步线程模型,极大降低了开发人员的编程难度。但是通信过程中的 accept、connect、read、write 等事件都是复用同一组线程资源,容易造成读写回调进入死锁状态。 AIO通信框架在设计上需要特别关注这一点,但如果引入 aio-enhance 则无此顾虑。
二、适用场景
如果您符合以下几个条件,aio-enhance 会是一个不错的选择。
- 基于 Java AIO 实现的通信框架,并且想要获得卓越的性能表现。如:smart-socket;
- 对高并发、低延迟有严苛要求;
三、更新内容
- bugfix:修复同步 IO 模式下可能引发的线程死锁问题。(感谢网友 @想你所想 反馈)
- 优化:优化 IO 调度,性能提升约 7%。
四、集成
步骤一:依赖
引入增强包:aio-enhance.jar。可以通过maven方式引入依赖,亦可直接下载 jar 包并导入classpath。
<dependency> <groupId>org.smartboot.aio</groupId> <artifactId>aio-enhance</artifactId> <version>1.0.5</version> </dependency>
步骤二:启动
可以通过硬编码的方式设置系统属性,如下:
System.setProperty("java.nio.channels.spi.AsynchronousChannelProvider", "org.smartboot.aio.EnhanceAsynchronousChannelProvider");
也可在 java 启动命令行中设置,如下:
java -Djava.nio.channels.spi.AsynchronousChannelProvider=org.smartboot.aio.EnhanceAsynchronousChann
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
移动互联网商规28条
王吉斌、彭盾、程成 / 机械工业出版社 / 2014-6 / 49.00
每一次信息技术革命都会颠覆很多行业现有的商业模式和市场规则,当前这场移动互联网变革的波及面之广和蔓延速度之快,完全超出我们的想象。行业的边界被打破并互相融合,在此之前,我们只面临来自同行业的竞争,但是今天,我们不知道竞争对手会来自哪里。也许今天我们还是行业的巨人,但是明天就会被踩在脚下,当我们的体温犹热时,新的巨人已经崛起。诺基亚等传统科技巨头的衰退告诉我们,企业在一个时代的优势,到了另外一个新时......一起来看看 《移动互联网商规28条》 这本书的介绍吧!
