Netty源码分析——准备

之前在工作中应用过netty,现在有一次用到,彻底的总结一下源码,加深理解。

Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.

这是Netty官网介绍的Netty框架,netty框架的优势这里不过多介绍,用过netty的自然知道,本系列针对对netty有个应用经验的开发人员

学习netty框架源码,需要几个前提

  • Java基础
  • Socket网络编程经验,最好明白nio原理
  • 多线程基础
  • 常用设计模式

由于netty框架系统庞大,不可能直接从头到尾梳理,为了更好的学习和理解,我将netty拆分成了几个子流程。Netty系统设计的代码紧凑,重用性高,因此代码有些地方不太容易理解,即使拆分成几个子流程,流程之间的前后关联因为是非常紧密的。遇到不太明白的地方可以暂时跳过,重要把握主体脉络,最终融会贯通。

我会从一个简单的服务器端代码,开始介绍。代码如下

 1 public class NettyServer {
 2 
 3     public static void main(String[] args) {
 4 
 5         EventLoopGroup boss = new NioEventLoopGroup(1);
 6         EventLoopGroup worker = new NioEventLoopGroup();
 7 
 8         try {   
 9             ServerBootstrap serverBootstrap = new ServerBootstrap()
10                     .group(boss, worker)
11                     .channel(NioServerSocketChannel.class)
12                     .childHandler(new ChannelInitializer<SocketChannel>() {
13 
14                         @Override
15                         protected void initChannel(SocketChannel ch) throws Exception {
16                             ch.pipeline().addLast(new ServerHandler());
17                         }
18                     });
19                 
20 
21             ChannelFuture channelFuture = serverBootstrap.bind(6666).sync();
22             channelFuture.channel().closeFuture().sync();
23 
24         } catch (Exception e) {
25             // TODO Auto-generated catch block
26             e.printStackTrace();
27         } finally {
28             boss.shutdownGracefully();
29             worker.shutdownGracefully();
30         }
31 
32     }
33 }

不废话了,开始啃。
具体子流程包括:

后面详细讲解每一个子流程。

 

posted @ 2020-03-22 11:44  OptimisticCoder  阅读(316)  评论(0编辑  收藏  举报