Threaded伺服器 vs Evented 伺服器

banq發表於2010-07-26
Threaded vs Evented Servers

在伺服器端,目前共有兩種方法處理併發請求:
(1)Threaded執行緒類伺服器是使用多個並行執行緒來處理請求,每個執行緒處理一個客戶端請求,典型的是J2EE或JavaEE伺服器。

(2)Evented事件類伺服器則是迴圈執行一個事件,用來處理所有連線客戶端資訊。

執行緒類伺服器受限於CPU和執行緒界限,而事件類伺服器並不受限於執行緒方面約束,因為它只用一個執行緒,只是受限於CPU能力。

文章對多個情況下兩種模式效能比較,當我們需要執行一個後臺服務,有高延遲high-latency(無高一致性要求場合),那麼事件類伺服器模式的效能要好些。

最後一個測試情況是long polling客戶端,客戶端發出長時間拉請求,也就是通常的AJAX發出的非同步請求,事件類伺服器模式要更好些。

轉貼這篇文章想說明的是:jdonframework的domain events採取的是Evented事件類伺服器模式,這種模式非常適合AJAX發出的輪詢或高延遲的非同步請求,這種模式對CPU負載低,不象傳統同步多執行緒模式會Block堵塞住CPU。

適合事件類伺服器模式是一些無需分享狀態的應用,或者對狀態的一致性要求比較低的應用,或者可以說對狀態高一致性要求的避免使用事件類伺服器模式。


相關文章