2010-10-13 42 views
2

這是在客戶端應用程序詢問Web服務器「檢查更新」時創建快速響應的最佳方法。如何爲「檢查更新」創建一個超快的網絡服務器?

Skype例如需要約1秒鐘來回答。如何實現相同?

+2

對於大多數現代Web服務器來說,響應時間應該不會超過一秒。什麼是問題? – driis 2010-10-13 09:30:44

+0

儘可能地使用底層操作系統。例如,如果您使用的是Windows和IIS 7或更高版本,那麼沒有更好的方法來減少響應時間,增加吞吐量和卸載系統,而不是讓核心IIS緩存處理* whole *請求。 – bzlm 2010-10-13 09:48:58

+2

用幾百臺Web服務器創建一個服務器園區。 :-) Google和Skype都使用很多強大的硬件來獲得大量的性能。 – 2010-10-13 10:05:58

回答

3

我假設您正在運行一個或多個Web服務器和一個或多個後端服務器(具有業務邏輯)。我所看到的

一個可行的方法:保持變更計數器在網絡服務器和當後端狀態的變化,讓業務邏輯與通知新的變化計數器的值所有Web服務器

每個網絡瀏覽器定期輪詢計數器值爲的網絡服務器,並將該值與以前的值進行比較。在old_value!= new_value的情況下,Web瀏覽器進入並向Web服務器詢問新內容。

這使得定期輪詢可以是超快速(1ms)和便宜的。只有真正改變了瀏覽器纔會要求更多資源昂貴的內容生成。

另一種選擇是使用一些異步HTTP魔術(cometd),但上面概述的方法是更簡單,更容易理解,更容易排除故障

+0

是的,謝謝你的想法,我會試試看。 – LaBracca 2010-10-13 11:54:32

1

根據您的用戶數量,使用大型的分佈式系統。讓您的網絡服務器更貼近客戶,避免更長的延遲。使用羣集和負載平衡軟件來提高性能。使用反向代理來緩存數據。 但是,「檢查更新」的速度真的很重要嗎?您也可以檢查後臺線程。我會提高其他任務的性能。

+0

是檢查更新只是一個例子,這個特定的情況肯定會更好地在後臺線程中處理。 – LaBracca 2010-10-13 11:54:16

3

簡單的方法是在服務器上只有一個平面文本或XML文件,其中包含最新版本的詳細信息。客戶端應用程序通過http GET獲取它,比較版本,並作出相應的反應。 http服務器只是返回一個小文件,這是http服務器設計的目的。您應該能夠以這種方式每秒處理數百個請求。

+0

這是「檢查更新」的非常好的技巧。謝謝。 – LaBracca 2010-10-13 12:58:38

+0

這就是我的做法。我只是返回一個純文本文件,其中包含我的應用程序的最新版本。你甚至可以看到它:http://services.rejbrand.se/algosim/update/ver.asp – 2010-10-13 17:19:50

相關問題