试读《Netty权威指南(第2版)》

最近正在试用Netty,关于Netty是什么以及它能够做什么,在其 官网的“Netty口号”中说得很清楚:
 
Netty is  an asynchronous event-driven network application framework  
for rapid development of maintainable high performance protocol servers & clients.
 
这句话很多人已经翻译过了,Netty是一个异步的、事件驱动的网络应用框架,用于快速开发可维护的、高性能的服务器和客户端。补充一句,Netty封装了传输层协议,因此可以替换HttpAsyncClient等应用层协议封装组件,各Web容器也可以使用Netty实现其网络IO模块。再引作者李林锋一句:“作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用。”另外,许多开源组件也基于Netty的NIO框架构建,如HornetQ、Vert.X等。相关项目列表在 这里
 
《Netty权威指南》的作者李林锋是NIO相关领域的专家。之前曾在InfoQ上读过他的一些文章,与他的多数文章一样,试读样章既有作者自身工作中的经验教训 -- 令人信服地强调了Netty在降低原生NIO类库复杂性上的优势 -- 同时结合源码,辅以清晰的图表,详细分析了Netty服务端创建和客户端接入过程。对于没有Netty实践经验的读者,样章清晰易懂;对于Netty的初步用户,则有助于把实现过程上升到方法论的层次。
 
Netty "Hello World" 为例,对比作者所绘时序图:
public void run() throws Exception {
        EventLoopGroup bossGroup = new NioEventLoopGroup();
        EventLoopGroup workerGroup = new NioEventLoopGroup();
        try{
            ServerBootstrap b = new ServerBootstrap(); // 1. 创建ServerBootstrap实例
            b.group(bossGroup, workerGroup)  // 2. 设置并绑定Reactor线程池
                    .channel(NioServerSocketChannel.class) // 3. 设置并绑定服务端Channel()
                    .childHandler(new ChannelInitializer<SocketChannel>() {
                        @Override
                        public void initChannel(SocketChannel ch) throws Exception{
                            ch.pipeline() // 4. TCP链路建立时创建ChannelPipeline()
                            .addLast(new EchoServerHandler()); // 5. 添加并设置ChannelHandler()
                        }
                    })
                    .option(ChannelOption.SO_BACKLOG, 128)
                    .childOption(ChannelOption.SO_KEEPALIVE, true);

            ChannelFuture f = b.bind(port).sync(); // 6. 绑定监听接口
            f.channel().closeFuture().sync();

        }finally {
            workerGroup.shutdownGracefully();
            bossGroup.shutdownGracefully();
        }
    }
 

另外,章节最初的预备知识介绍对阅读非常有帮助,方便了读者根据自身情况完善知识体系,温习及回顾相关知识点。
 

猜你喜欢

转载自cwind.iteye.com/blog/2223241