0

我正在尝试了解反应式编程以及事件循环的工作原理。只要我能理解新的 HTTP 请求何时发送到应用程序,该请求就会拆分为事件。每个事件都由这个事件循环处理,并且为每个事件注册一个回调。此事件完成后,将结果返回给请求。但是有多少线程处理这个请求以及这个事件循环中有多少线程。

4

1 回答 1

2

默认情况下,spring web Flux 使用 reactor-netty 作为底层 Http 客户端库,它本身是著名的 Netty 客户端事件循环实现的反应式实现。要了解有关其工作原理的更多信息,您可以在此处参考详细信息https://livebook.manning.com/book/netty-in-action/chapter-7/

您可以认为所有请求都由有限的线程处理,通常是实际处理器线程的 2 或 4 倍,每个 http 客户端请求都包装在一个对象中,每个事件循环线程都可以从 Java 堆中获取对象并做一些工作并添加对象回内存。

一旦在端口上收到响应,事件循环再次从内存(连接池)中提取对象,并使用 Jackson 将响应数据从 ByteBuffers 反序列化到 Object。

事件循环在每个操作系统中相应地实现,例如 linux 的 epoll、macOS 的 kqueue 和 Java NIO 作为与操作系统无关的默认实现。

于 2021-11-19T02:22:49.750 回答