Pet*_*ter 9 java spring webflux
我试图了解反应式编程以及事件循环的工作原理。只要我能理解何时向应用程序发送新的 HTTP 请求,该请求就会分解为事件。每个事件都由该事件循环处理,并且为每个事件注册一个回调。此事件完成后,结果将返回到请求。但是有多少线程处理此请求以及此事件循环中有多少线程。
小智 12
默认情况下,Spring Web Flux 使用 Reactor-Netty 作为底层 Http 客户端库,它本身是著名的 Netty 客户端事件循环实现的反应式实现。要了解有关其工作原理的更多信息,您可以参阅此处的详细信息https://livebook.manning.com/book/netty-in-action/chapter-7/。
您可以认为所有请求都由有限的线程处理,通常是实际处理器线程的 2 或 4 倍,每个 http 客户端请求都包装在一个对象中,每个事件循环线程可以从 Java 堆中获取该对象并执行一些工作并添加对象回到内存中。
一旦在端口上收到响应,事件循环就会再次从内存(连接池)中获取对象,并使用 Jackson 将响应数据从 ByteBuffer 反序列化为对象。
事件循环在每个操作系统中相应地实现,例如 Linux 的 epoll、macOS 的 kqueue 和 Java NIO 作为与操作系统无关的默认实现。
| 归档时间: |
|
| 查看次数: |
5798 次 |
| 最近记录: |