# I/O密集型有哪些常见操作?

WebFlux 擅长的 I/O 密集型场景,核心特征就是操作几乎不消耗 CPU,绝大部分时间都在“等”数据(等待网络传输、磁盘寻道、另一个服务的响应)。

常见的具体操作有:

# 1. 数据库访问(SQL / NoSQL)

  • JDBC / MyBatis / JPA:传统阻塞操作,属于典型 I/O 密集(等磁盘寻道、网络传输结果集)。
  • 换成响应式驱动后依然属于 I/O 密集,只是阻塞被消除了。

# 2. 调用外部 HTTP / RPC 服务

  • 调用另一个微服务的 REST API、gRPC、Dubbo 等。
  • 调用第三方平台(支付、地图、短信、OAuth 认证等)。

# 3. 消息队列的生产与消费

  • 发送或接收 Kafka、RabbitMQ、RocketMQ 等消息。
  • 大部分时间在等待 Broker 确认或新消息到达。

# 4. 缓存读写(Redis / Memcached)

  • 读取 / 写入 Redis 缓存,虽然快,依然是网络 + 内存 I/O,不是 CPU 计算。

# 5. 文件上传 / 下载(大文件)

  • 从磁盘读取文件并返回给客户端,或接收客户端上传的文件。
  • 瓶颈在磁盘 I/O 或网络带宽。

# 6. 跨数据中心的远程数据传输

  • 如日志收集、数据同步、备份恢复等。

# 7. WebSocket / SSE 长连接

  • 维持连接并推送数据,主要开销是网络 I/O 和少量的心跳处理。

# 8. 读取静态资源(图片 / JS / CSS / 视频)

  • 虽然通常由 Nginx 处理,但若 WebFlux 直接处理,也属于 I/O 密集。

一句话总结:只要你写的代码里出现 读取/写入文件发送/接收网络请求查询数据库/缓存等待另一个进程返回结果,并且这些操作占据 70% 以上执行时间,就是 I/O 密集型。

Last Updated: 6/12/2026, 4:20:22 AM