NIO 框架 talent-nio 3.0 发布
什么是talent-nio
顾名思议talent-nio是个nio框架,类似netty和mina,但使用方式与之相差很大。该框架于2010年诞生(那时还不是一个框架,是和业务代码纠缠在一起的),2011年进行了简单封装,2013年进行了深度封装。
哪些项目在使用talent-nio
由于该框架尚未推广,所以使用的项目都是本人带的俩个项目,一个是中兴的网管,一个主站要管几百个刀片的,主站和刀片用tcp长连接保持通信;另一个是给华为做的一个项目,不方便透露。这两项目中虽然用到的,但是业务代码和框架代码纠缠在一起。本框架的主体开发以及后来的封装基本都是业余时间完成的。所以本人才能在这里公开源代码哈!仔细看源代码,你会发现源代码的时间跨度很大,也有不少注释不匹配,这些都是修改的痕迹。
talent-nio性能
以前进行过3个月的拷机测试,每秒处理8M数据,没有问题的。有兴趣的朋友可以帮忙测试,我对测试不是太在行,一般是公司的测试人员帮忙测试。
talent-nio总体架构
talent-nio用到了talent-thread-pool同步线程池框架,该框架也是诞生于2010年,之后一直未动,所以在说talent-nio总体架构前先说一下同步线程池框架。
talent-thread-pool简介
talent-thread-pool是一个可以保证同一个runnable在同一时刻只会被同一个线程调用的线程池框架,它是基于jdk5内置的线程池的。下面三张图,是对该框架的简要介绍。
再回到前面说一下talent-nio对消息的处理过程,下图是接收过程(此图作于1年前,由于框架最近作了些调,所以类名可能会有出入,但处理过程是一样的,最多就是有些职责丢给应用了)
发送数据的过程,这个过程相对比较简单
附件talent-thread-pool-3.0.0-talent.jar是talent-nio依赖的线程池框架,其它依赖了一些jar,网上都有下的 <script type="text/javascript">// <![CDATA[ document.domain = "iteye.com"; var counter = parseInt(window.parent.$('attachments_counter').value) - 1; window.parent.$('attachments_counter').value = counter; if(counter > 0) window.parent.$('submit_button').value = counter + "个文件正在上传中,请等待完成后再提交"; else window.parent.$('submit_button').value = '提交'; // ]]></script>
为了验证talent-nio框架,在talent-nio的基础上实现了小部分的http协议,有兴趣的同学可以玩玩
com.talent.platform.socket.demo.server.ServerMain.main()启动监听服务,端口9898。你可以在浏览器中访问:http://127.0.0.1:9898/xx (xx可以随便写,但有几个特殊的,服务器会返回有意义的东西,可以去看源代码。)
com.talent.platform.socket.demo.client.ClientMain.main()是基于talent-nio的客户端,它会启动300个tcp长连接到9898上
大家可以用这个框架写一些tcp长连接的测试工具,还是比较方便的。
说明:
目前本框架部分API和类组织得欠妥,未来1-3个月会有大量调整。
下载地址:
推荐阅读
-
Java并行处理框架JPPF 3.0发布,开源的网格计算方案
-
DataNucleus Access Platform 3.0正式版发布,Java 数据持久化框架
-
Web 前端框架 QUI v3.0 发布
-
OpenXava 3.0发布 极简单的java应用程序框架
-
Guice 3.0 发布:Java轻量级依赖注入框架(IOC)
-
Netty 3.2.0 ALPHA1 发布,NIO client server框架
-
Grizzly 1.9发布:开源NIO框架 新增Twitter demo
-
Grizzly 2.2发布,开源Java NIO框架
-
NIO 框架 talent-nio 3.0 发布
-
山寨nio框架yanf4j发布0.50-alpha