Netty系列教程之一-----Netty基本工作原理

Netty基本介绍

Netty是一个NIO的客户服务端框架,提供了简单与容易的API,能够帮助我们更快和更简单的开发客户端与服务端通信的应用。

Netty框架架构

从netty官网我们可以看到下面这个netty的架构图,从图中我们可以看到netty主要分为三部分.

  1. 核心部分(Core)
    a. 提供了零拷贝的ByteBuffer(Zero-Copy-Capable Rich Byte Buffer)去操作数据,从而提高代码的运行效率,
    b. 提供可扩展的事件模型(Extensible Event Model)
    c.
  2. 与网络数据处理相关的Transport Service
    封装了TCP/UDP通信底层实现,同时提供了HTTP通道处理
  3. 协议支持(Protocol Support)
    提供了常见的数据协议的封包与解包,同时将网络数据解析成相关的数据,如http数据.
    在这里插入图片描述

Reactor模式

  1. 事件驱动模型
    a. 事件监听器监听某一事件,当事件发生时进行相应的逻辑处理
    b.事件源是事件产生的入口,由事件源触发事件,最终调用事件监听器进行处理
    在这里插入图片描述
  2. Reactor模式(Reactor Pattern)架构
    在这里插入图片描述
组件描述
Handle即操作系统中的句柄fd,是对资源在操作系统层面上的一种抽象,可以是CONNECT事件,也可以是READ、WRITE、CLOSE事件等。事件的发源地,即相当与事件驱动模型的事件源
Synchronous Event Demultiplexer(同步事件多路分离器)阻塞等待被监听的事件集fd_set中的事件发生。一般使用I/O复用技术实现,在linux系统上一般是select、poll、epol_waitl等系统调用,用来等待一个或多个事件的发生。调用者会被阻塞,直到分离器的描述符集上有事件发生。
Initiation Dispatcher(事件调度器)即Reactor角色,主要用于管理Event Handler,负责注册、移除EventHandler,是Reactor模式的入口,调用Synchronous Event Demultiplexer的select方法阻塞直到阻塞返回时,根据Handle找到相对应的Event Handler进行处理,即回调EventHandler中的handle_event()方法
Event Handler(事件处理器)事件处理的接口类。这些模板函数描述了和应用程序相关的对某个事件的操作,用户需要继承它来实现自己的事件处理器,即具体事件处理器。因此,事件处理器中的回调函数一般声明为虚函数,以支持用户拓展
Concrete Event Handler(具体的事件处理器)是事件处理器接口的实现。它实现了应用程序提供的某个服务。每个具体的事件处理器总和一个描述符相关。它使用描述符来识别事件、识别应用程序提供的服务
  1. IO Reactor三种模式
    a. 单线程Reactor模式
    在这里插入图片描述
    b. 多线程IO Reactor模式
    在这里插入图片描述

c. 多Reactor多线程模式
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值