我試圖了解反應式編程以及事件回圈的作業原理。只要我能理解何時向應用程式發送新的 HTTP 請求,該請求就會拆分為多個事件。每個事件都由這個事件回圈處理,并且為每個事件注冊一個回呼。完成此事件后,將結果回傳給請求。但是有多少執行緒處理這個請求以及這個事件回圈中有多少執行緒。
uj5u.com熱心網友回復:
默認情況下,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 作為與作業系統無關的默認實作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/360874.html
