美文网首页
一、netty源码分析之概述

一、netty源码分析之概述

作者: 丑星星 | 来源:发表于2019-08-28 21:56 被阅读0次

    作为Java程序员,netty大家应该都或多或少的接触过。netty作为一个异步事件驱动的网络框架被广泛使用。我们从netty的官网的一张图上可以看到netty有哪些特点:


    netty

    netty的核心能力有三点:

    • 可扩展的事件模型
    • 通用的通信API
    • 有零拷贝能力的字节缓冲区

    在这三种核心能力的基础上,扩展出了对多种协议和传输服务的支持。
    当然netty的优点不仅仅如此,后面我们将会通过源码的方式来分析netty到底有哪些优势。接下来的文章已经默认了大家熟悉netty的基本使用。

    这里先贴出来一段最简单的netty创建服务端的代码(摘自netty官网https://netty.io/wiki/user-guide-for-4.x.html),接下来的分析都是基于接下来的这段代码:

    EventLoopGroup bossGroup = new NioEventLoopGroup(); // (1)
            EventLoopGroup workerGroup = new NioEventLoopGroup();
            try {
                ServerBootstrap b = new ServerBootstrap(); // (2)
                b.group(bossGroup, workerGroup)
                 .channel(NioServerSocketChannel.class) // (3)
                 .childHandler(new ChannelInitializer<SocketChannel>() { // (4)
                     @Override
                     public void initChannel(SocketChannel ch) throws Exception {
                         ch.pipeline().addLast(new DiscardServerHandler());
                     }
                 })
                 .option(ChannelOption.SO_BACKLOG, 128)          // (5)
                 .childOption(ChannelOption.SO_KEEPALIVE, true); // (6)
        
                // Bind and start to accept incoming connections.
                ChannelFuture f = b.bind(port).sync(); // (7)
        
                // Wait until the server socket is closed.
                // In this example, this does not happen, but you can do that to gracefully
                // shut down your server.
                f.channel().closeFuture().sync();
            } finally {
                workerGroup.shutdownGracefully();
                bossGroup.shutdownGracefully();
            }
    

    接下来的源码分析是基于netty的4.1.39.Final版本。

    相关文章

      网友评论

          本文标题:一、netty源码分析之概述

          本文链接:https://www.haomeiwen.com/subject/rnkvectx.html