Flink-Netty

五种IO模型

image.png

阻塞IO

优点:数据可用立刻返回,没有延迟;调用简单;
缺点:整个过程,用户进程都处于阻塞等待状态。


image.png

非阻塞IO

这种方式下,用户进程定期轮询,每次轮询都相当于一个小的阻塞(尤其是网络请求)。而在轮询间隔期间可以做其他的事情。


image.png

IO复用

在这两个过程中,select 只负责等待,recvfrom 负责从操作内核空间拷贝数据。

从这点来说多路复用跟阻塞IO很像,但因为selector可以对多个文件描述符进行阻塞监听,所以效率比阻塞IO的高。


image.png

Java NIO Selector

信号驱动IO

所谓信号驱动,其实就是提前向内核注册,然后收到通知后回调处理函数。


image.png

异步IO

异步IO有点类似信号驱动IO,区别在于

  • 信号驱动IO是由内核通知我们何时可以启动一个IO操作
  • 异步IO模型是由内核告知我们IO操作何时完


    image.png


三种并发编程模型

actor模型

reactor模型

image.png

proactor模型

image.png


常见的Reactor模型

单线程模型

image.png

多线程模型

这种模型就是现在成熟的Reactor模式。但是请求进一步增加的时候,Reactor会出现瓶颈。因为Reactor既要处理IO操作请求,又要响应连接请求


image.png

主从多线程模型

主Reactor用于响应连接请求,从Reactor用于处理IO操作请求。


image.png

Netty模型

image.png

Flink-Netty

image.png

NettyProtocol

Server.png

Client.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容