aio-enhance v1.0.1 发布,Java AIO 内核增强类库
aio-enhance(音译:硬汉) 是一款无侵入式的 Java AIO 内核增强类库(注意:这不是一款通信框架),解决原生 AIO 架构设计中存在的缺陷,提供更高效、更稳定的通信能力。
aio-enhance 采用了 NIO 技术实现了一套全新的异步 IO 模型,兼容完整的 Java AIO 接口。用户可自由选择 Java 原生提供的,或者 aio-enhance 增强的 AIO 实现,架构如下图。
一、项目背景
2.1 解决平台兼容性问题。
Java 原生 AIO 在 Mac 操作系统下存在兼容性问题,进行性能压测会偶发性的系统崩溃。
2.2 修复官方 AIO 架构缺陷
Java 原生 AIO 在底层架构设计上存在缺陷(参考:Java AIO通信模型)。多核 CPU 环境下处理高并发请求,会引发比较严重的锁竞争现象,以致无法充分发挥机器性能。
普通4核机器竞争压力不大,AIO 的运行表现实测优于NIO。但随着 CPU 核数的增加,AIO 的性能优势逐渐下降。
2.3 优化 AIO 线程模型
Java AIO 相较于 NIO 多了一层异步线程模型,极大降低了开发人员的编程难度。但是通信过程中的 accept、connect、read、write 等事件都是复用同一组线程资源,容易造成读写回调进入死锁状态。 AIO通信框架在设计上需要特别关注这一点,但如果引入 aio-enhance 则无此顾虑。
二、适用场景
如果您符合以下几个条件,aio-enhance 会是一个不错的选择。
- 基于 Java AIO 实现的通信框架,如:smart-socket;
- 对高并发实时性有严苛要求;
- 多核CPU环境(至少4核以上)
三、更新内容
- bugfix:修复通道关闭时,写操作的 SelectionKey 接口调用错误问题。
- 优化:集成启动 aio-enhance 时打印版本号信息。
- 优化:移除 selectionKey 关注事件前判断是否持有该事件关注,避免无意义调用。
- 优化:处理 selectionKey 事件之前判断 key 的有效性。
- 其他编码风格上的小优化。
四、集成
步骤一:依赖
引入增强包:aio-enhance.jar。可以通过maven方式引入依赖,亦可直接下载 jar 包并导入classpath。
<dependency> <groupId>org.smartboot.aio</groupId> <artifactId>aio-enhance</artifactId> <version>1.0.1</version> </dependency>
步骤二:启动
可以通过硬编码的方式设置系统属性,如下:
System.setProperty("java.nio.channels.spi.AsynchronousChannelProvider", "org.smartboot.aio.EnhanceAsynchronousChannelProvider");
也可在 java 启动命令行中设置,如下:
java -Djava.nio.channels.spi.AsynchronousChannelProvider=org.smartboot.aio.EnhanceAsynchronousChann

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Python 3.8.4 正式发布
Python 3.8.4 正式发布了,这是 Python 3.8 的第四个维护版本。 此版本比前三个版本要小很多,一共有 162 处更改,与前三个版本的平均值相比,几乎减少了 20%。有关版本 3.8.4 中所做更改的详细信息,可以在其更改日志中找到。 与 3.8.3 相比,版本 3.8.4 还包含 3.8.4rc1 中引入的更改。 3.8 系列的维护版本将每两个月定期更新一次,3.8.5 版本计划于 2020 年 9 月中旬发布。 有关 3.8 系列的功能等更多信息,可查看 “What’s New in Python 3.8” 文档。 更新说明:https://pythoninsider.blogspot.com/2020/07/python-384-is-now-available.html 下载地址:https://www.python.org/downloads/release/python-384/
- 下一篇
IBM 招聘广告要求应聘者具备至少 12 年 Kubernetes 使用经验
IBM 全球技术服务部门近日发布了一则招聘广告,其中一条招聘说明要求应聘者“拥有 12 年以上 Kubernetes 使用经验”。 Kubernetes(通常称为 K8s) 是来自 Google 云平台的开源容器集群管理系统,用于自动部署、扩展和管理容器化(containerized)应用程序。该系统基于Docker构建一个容器的调度服务。 这条要求有点令人迷惑,因为 Kubernetes 项目在 GitHub 的初次提交时间为2014年6月7日,直到2015年5月22日才宣布 1.0 版本进入功能冻结阶段,也就是说诞生至今才 6 年,试问如何在一个6 年前发布的项目中积累十几年的经验。 Kubernetes 作为谷歌创建的开源项目,因此除非是谷歌内部工程师,或是有人使用了时空旅行技能,否则不可能有人拥有 12 年的 Kubernetes 使用经验。 不过如果“工作四年,但加班让我拥有了六年的工作经验”这种情况能接受,那么相信 IBM 很快就能招到合适的人。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程