文档章节

netty4.0 研究 ing ... ...

石头哥哥
 石头哥哥
发布于 2013/03/11 14:03
字数 421
阅读 2436
收藏 2

之前做过一个基于netty3.X版本的server,性能测试很不错,现在netty4.0已经出beta2版本beta3的快照也出来了,相信不久就会发布,先尝鲜,总结了一些东西:


#The shutdown process of a typical network application is composed of the following three steps:
#
#Close all server sockets if there are any,
#
#Close all non-server sockets (i.e. client sockets and accepted sockets) if there are any, and
#
#Release all resources used by ServerBootstrap or Bootstrap.


action:
#2. How do I incorporate my blocking application code with the non-blocking NioEventLoopGroup?
#
#NioEventLoopGroup contains n Threads that handle the IO of all the registered Channels.
#
#If your applicaiton's handler blocks such as (reading from a database) or is CPU intensive, the worker thread pool maybe exhausted and performance will degrade.
#
#We recommend that you implement your blocking application code in another thread pool. You can do this by adding your handler with an extra EventExecutor to the ChannelPipeline.
#
#  1 public static void main(String[] args) throws Exception {
#  2         final EventExecutor executor = new DefaultEventExecutor(8);
#
#  4         ServerBootstrap bootstrap = new ServerBootstrap();
#            bootstrap.group(new NioEventLoopGroup(), new NioEventLoopGroup());
#  6         bootstrap.childHandler(new ChannelInitializer<Channel>() {
#                @Override
#  8             public void initChannel(Channel channel) {
#                    ChannelPipeline pipeline = channel.pipeline();
# 10                 pipeline.addLast("decoder", new HttpRequestDecoder());
#                    pipeline.addLast("aggregator", new HttpChunkAggregator(65536));
# 12                 pipeline.addLast("encoder", new HttpResponseEncoder());
#                    pipeline.addLast("chunkedWriter", new ChunkedWriteHandler());
# 14
#                    // MyHandler contains code that blocks so add it with the
# 16                 // EventExecutor to the pipeline.
#                    pipeline.addLast(executor, "handler", new MyHandler());
# 18             }
#            });
# 20         ...
#
# 22         sb.bind(socketAddress);
#
# 24         // Other code
#
# 26     }
#
# 28
#        public class MyHandler extends SimpleChannelUpstreamHandler {
# 30         // Your blocking application code
#    }





netty4变化较大,不管是线程池管理还是buffer,新添加了AIO,但是建议还是用nio(个人观点),但是根据开发者帮助文档,基本上也可以快速实现一个稳定高效的服务端(TCP/IP)socket长连接。

有关netty4.0 持续关注中... ...  有时间的话 将会很快写一个基于netty4.0的server。

http://netty.io/4.0/guide/#faq.3,在上面可以找到很多资料,并且快速上手,如果你对netty3足够熟悉的话。

http://netty.io/4.0/xref/(source)

© 著作权归作者所有

共有 人打赏支持
石头哥哥
粉丝 302
博文 203
码字总数 120417
作品 2
渝中
程序员
私信 提问
C# 自定义FileUpload控件

摘要:ASP.NET自带的FileUpload控件会随着浏览器的不同,显示的样式也会发生改变,很不美观,为了提高用户体验度,所以我们会去自定义FileUpload控件 实现思路:用两个Button和TextBox控件来...

annehan
2016/05/27
0
0
不联网、不插U盘,黑客用声音直接整垮你的硬盘

2008年,一位叫 Brendan Gregg 的网红工程师,在油管上发布了一个很“鬼畜”的视频↓↓↓ 视频一开始,他在一个非常嘈杂的数据中心里告诉大家,他正在使用一款软件监测硬盘的 IOPS (Input/Ou...

郭佳
06/06
0
0
解析土豆视频下载地址以及硕鼠网原理

在讨论区看了这个问题,对这个问题蛮感兴趣的然后就研究了下。尝试了下土豆。 下面是步骤哈 1. 用ie打开www.tudou.com/programs/view/YDnzTq8gI/一个视频链接。 2.然后打开浏览器缓存文件 然...

小囧
2012/10/12
0
2
【简书交友】既见君子,云胡不喜

突然想到的很喜欢的一句“既见君子,云胡不喜”作题目,虽然放在这里有点不妥,但也懒得改了,毕竟我就是一个很懒惰的猪猪女孩呢。 突然发现像我这种身高只有 160,体重却在100斤的小个子中的...

一喵喵喵一
03/24
0
0
appcan中css和js的作用

项目组最近转手机开发,研究方案ing <meta name="viewport" content="target-densitydpi=device-dpi, width=device-width, initial-scale=1, user-scalable=no, minimum-scale=1.0, maximum-......

废柴大叔
2013/11/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

小白带你认识netty(三)之NioEventLoop的线程(或者reactor线程)启动(一)

在第一章中,我们看关于NioEventLoopGroup的初始化,我们知道了NioEventLoopGroup对象中有一组EventLoop数组,并且数组中的每个EventLoop对象都对应一个线程FastThreadLocalThread,那么这个...

天空小小
今天
2
0
PHP动态扩展Redis模块

查看已有模块 [root@test-a ~]# /usr/local/php/bin/php -m[PHP Modules]bz2Core...zlib[Zend Modules] 下载包,解压,生成configure文件 [root@test-a ~]# cd /usr/local/src/[ro......

野雪球
今天
1
0
在Ignite中使用线性回归算法

在本系列前面的文章中,简单介绍了一下Ignite的机器学习网格,下面会趁热打铁,结合一些示例,深入介绍Ignite支持的一些机器学习算法。 如果要找合适的数据集,会发现可用的有很多,但是对于...

李玉珏
今天
2
0
Mybatis应用学习——简单使用示例

1. 传统JDBC程序中存在的问题 1. 一个简单的JDBC程序示例: public class JDBCDemo {public static void main(String[] args) {Connection con=null;PreparedStatement statemen...

江左煤郎
今天
2
0
使用JavaScript编写iOS应用业务逻辑

JSAUIKitCocoa使你可以使用JavaScript编写对性能要求不高但可能变动性很大的iOS应用的业务逻辑部分,View组件、需要多线程支持的Model等则直接使用原生对象。 编写方式与React Native相似,但...

neal01
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部