Netty核心概念

  |   0 评论   |   0 浏览
netty核心概念:
1. Channel
  管道,是对Socket的封装,包含了一组API,简化直接与Socket进行操作的复杂性.

2. EventLoopGroup
   EventLoopGroup 是一个EventLoop池,包含很多EventLoop
   Netty为每个Channel分配了一个EventLoop,用于处理用户连接请求、对用户请求的处理等所有事件。EventLoop本身只是一个线程驱动,在其生命周期内
只会绑定一个线程,让该线程处理一个Channel的所有IO事件.
    一个Channel一旦与一个EventLoop相绑定,那么在Channel的整个生命周期内是不能改变的。一个EventLoop可以与多个Channel绑定。
    即Channel与EventLoop的关系是n:1, 而EventLoop与线程的关系是1:1。

3. ServerBootStrap
   用于配置整个Netty代码,或将各个组件关联起来,服务端使用的事ServerBootStrap,而客户端使用BootStrap

4. ChannelHandler 与ChannelPipeline
    ChannelHandler是对Channel中的数据的处理器,这些处理器可以是系统本身定义好的编码解码器,也可以是用户自定义的,这些处理器会被统一
    添加到一个ChannePipeline的对象中,然后按照添加的顺序对Channel中的数据进行依次处理。

5. ChannelFuture
    Netty中所有的IO操作都是异步的,所以Netty中定义了一个ChannelFuture对象作为异步操作的"代言人",标识异步操作本身.如果想获取到该
    异步操作的返回值。可以通过该异步操作对象的addListener()方法为该异步操作添加监听器,为其注册回调,当结果出来后马上调用执行.
    Netty的异步编程模型都是建立在Future与回调概念之上的。



Netty执行流程大致流程:
  1.Server启动,从parentGroup中选出一个NioEventLoop对指定port的连接进行监听。
  2.Client连接指定Server的port,创建Channel。
  3. Netty从childGroup中选出一个NioEventLoop与该Channel绑定,用于处理该Channel中所有的操作.
  4.Client通过Channel向Server发送数据包ByteBuffer
  5. Pipeline中的处理器依次对Channel中的数据包进行处理
  6. Server如需向Client发送数据,则需将数据经Pipeline中的处理器处理形成ByteBuffer数据包
  7.Server将数据包ByteBuffer通过Channel发送给Client

标题:Netty核心概念
作者:码农路上
地址:http://wujingjian.club/articles/2020/02/28/1582884331897.html