IO的几种模型

五种网络IO模型

对于一个应用程序即一个操作系统进程来说,它既有内核空间(与其他进程共享),也有用户空间(进程私有),它们都是处于虚拟地址空间中。用户进程是无法访问内核空间的,它只能访问用户空间,通过用户空间去内核空间复制数据,然后进行处理

  • 阻塞IO(同步)
  • 非阻塞IO(同步IO)
  • IO复用(同步IO)I/O是指网络I/O,多路指多个TCP连接(即socket或者channel),复用指复用一个或几个线程。意思说一个或一组线程处理多个连接。比如课堂上学生做完了作业就举手,老师就下去检查作业。(对一个IO端口,两次调用,两次返回,比阻塞IO并没有什么优越性;关键是能实现同时对多个IO端口进行监听,可以同时对多个读/写操作的IO函数进行轮询检测,直到有数据可读或可写时,才真正调用IO操作函数

  • 信号驱动IO(同步IO)事先发出一个请求,当有数据后会返回一个标识回调,这时你可以去请求数据。好比银行排号,当叫到你的时候,你就可以去处理业务了(复制数据时阻塞)

  • 异步IO 

Netty的核心组件

  • channel

  • 回调

  • Future

  • 事件 和ChannelHandler

EventLoop EventLoopGroup channel 和 thread 四者之间的关系

  • 一个EventLoopGroup 包含一个或者多个EventLoop
  • 一个EventLoop 生命周期只和一个Thread绑定
  • Channel 生命周期只注册一个EventLoop
  • ChannelHandler 安装到channelPipeline的过程
  • ChannelInitializer 的实现被注册到ServerBootstrap中
  • 当ChannelInitializer .initChannel() 被调用时,Initializer 将pipeline中安装一组自定义的ChannelHandler
  • ChannelInitializer 从pipeline中移除

Handler模型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值