我正在嘗試使用反應式web框架。我對於它如何工作有一定的疑問。Spring反應式Web框架客戶端
在典型的應用程序中,我們有數據存儲(Relational or No SQL)。 應用層(控制器)連接以存儲和獲取數據。 客戶端層(調用您的API端點)並獲取數據。
據我所知,沒有異步或反應驅動程序發佈Vendors.Only蒙戈和可能是卡桑德拉反應驅動程序)。 控制器層將使用單聲道或通量或單通道回傳數據。
客戶端層將使用此數據。
由於HTTP本質上是同步的,客戶層或應用程序如何從Spring中的反應式支持中受益。
問題:讓我們說在JSON中有10條記錄來自我的Flux響應。這意味着,我的客戶端將獲得數據流還是整個數據集將首先在客戶端獲取,然後消耗它的過程將會在本質上是反應性的。目前,我們有InputStream作爲服務調用的響應,由於HTTP協議的設計,它本質上是阻塞的。
問題:當典型的Web應用程序具有反應式體系結構時,如果我們要獲得響應的非常中等的程度是Blocking in Nature,那麼它是否有意義。
Spring Web Reactive使用Servlet 3.1非阻塞I/O並在Servlet 3.1容器上運行。它也運行在非Servlet運行時(如Netty和Undertow)上。每個運行時都適用於一組共享的,被動的ServerHttpRequest和ServerHttpResponse抽象,這些抽象將請求和響應體作爲Flux公開,並在讀取和寫入方面提供完全背壓支持。