Netty 权威指南:Linux 网络 -I-O- 模型简介,分享我在 Java 开发中走的一些弯路

110 篇文章 2 订阅
63 篇文章 4 订阅

最常用的 I/O 模型就是阻塞 I/O 模型,缺省情形下,所有文件操作都是阻塞的。我们以套接字接口为例来讲解此模型:在进程空间中调用 recvfrom,其系统调用直到数据包到达且被复制到应用进程的缓冲区中或者发生错误时才返回,在此期间一直会等待,进程在从调用 recvfrom 开始到它返回的整段时间内都是被阻塞的,因此被称为阻塞 I/O 模型,如图 1-1 所示。

(2)非阻塞 I/O 模型:

recvfrom 从应用层到内核的时候,如果该缓冲区没有数据的话,就直接返回一个EWOULDBLOCK错误,一般都对非阻塞 1/O 模型进行轮询检查这个状态,看内核是不是有数据到来,如图 1-2 所示。

(3) I/O 复用模型:

Linux 提供select/poll, 进程通过将一 一个或多个 fd 传递给 selectpoll 系统调用,阻塞在select 操作.上,这样select/poll 可以帮我们侦测多个 fd 是否处于就绪状态。select/poll是顺序扫描 fd 是否就绪,而且支持的 fd 数量有限,因此它的使用受到了一些制约。Linux 还提供了一个epoll系统调用,epoll 使用基于事件驱动方式代替顺序扫描,因此性能更高。当有 fd 就绪时,立即回调函数rollback,如图 1-3 所示。

(4)信号驱动 I/O 模型:

首先开启套接口信号驱动 I/O 功能,并通过系统调用sigaction执行一个信号处理函数(此系统调用立即返回,进程继续工作, 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 它是非阻塞的)。当数据准备就绪时,就为该进程生成-一个 SIGIO 信号,通过信号回调通知应用程序调用recvfrom来读取数据,并通知主循环函数处理数据,如图 1-4 所示。

Kafka 实战笔记

关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图

  • Kafka 入门

  • 为什么选择 Kafka

  • Karka 的安装、管理和配置

  • Kafka 的集群

  • 第一个 Kafka 程序

afka 的生产者

  • Kafka 的消费者

  • 深入理解 Kafka

  • 可靠的数据传递

  • Spring 和 Kalka 的整合

  • Sprinboot 和 Kafka 的整合

  • Kafka 实战之削峰填谷

  • 数据管道和流式处理(了解即可)

  • Kafka 实战之削峰填谷

 

小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。

 

原文出处:xie.infoq.cn/article/5262af44e89d73907efa43dcf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值