2010-06-17 52 views
1

我最近遇到一些情況,其中服務器將分發包含所有聽衆完全相同數據的事件流,例如「最近活動」框。快速單線程彗星服務器,可能嗎?

我發現像Apache這樣的服務器運行線程處理和查詢包含相同數據的每個彗星流的數據庫是相當奇怪和低效的。

我會爲那些全局(而不是每個用戶)數據流做的事是運行一個連續發送數據的線程,併爲每個新的請求輸出一個新的(綠色)線程,然後'合併'到主線。

一個線程可以爲多個套接字提供服務,或者多個客戶端可以收聽同一個套接字嗎?

一個例子

O =事件

 # threads received 
| a b # 3 
o// # 3  - 
|/_/ 
|  # 1 
o c # 2  a, b 
|/
o/  # 2  a, b 
o  # 1  a, b, c 
|  #     connection b closed 
o  # 1  a, c 

難道這樣的事情存在嗎?它會起作用嗎?有可能嗎?

聲明:我不是服務器專家。

回答

1

檢出node.js - 單線程,事件驅動的服務器。使用JavaScript作爲獎勵。

+0

看起來不錯:)會扭曲做同樣的?他們在某處提到它。 – Pepijn 2010-06-17 13:52:59

1

如果您正在使用ASP.NET,以下職位應該是有用的

http://beta.codeproject.com/KB/aspnet/CometAsync.aspx

順便說一句,這是可以實現彗星服務於每線程多個客戶,但只有一個線程對於所有的客戶似乎不夠?

+0

我更喜歡Python和Clojure – Pepijn 2010-06-17 13:51:41

0

您正在討論適用於Comet的「異步Web請求」,有些像「異步Comet」。

在我看來,這種方式現在非常流行,是deeply flawed