[英]Pattern for designing a scalable web service
我正在用Java編寫一個Web服務,它需要處理大量的請求/秒。 一般流程將是:
在互聯網上研究,我發現了兩種編寫Web服務的通用方法:
您是否建議哪種方法通常更好,每種方法的優缺點是什么? 我也很感激指向示例的指針。
不要以為多線程。 異步思考。 我碰巧編寫了一個異步處理程序,在IIS中運行了2000 RPS,其中包含<10個線程。 不知道java是如何工作的,因為我是一個.net人,但我相信他們有類似的BeginXXX / EndXXX方法。 如果您生成一個線程,那么您不會考慮代碼可以阻止的所有位置:數據庫IO,文件I / O,Web服務等。這些是您的性能將導致您的站點變慢的地方。
異步,異步,異步。
吟唱並重復。
除了“No Refunds No Returns”響應之外,我會說“異步思考”,因為您應該允許容器管理它已部署的Web服務的多線程/可伸縮性和高可用性問題,這允許您可以使用應用程序容器設置聚類等內容。
編輯:總而言之,沒有這樣的模式,也許您應該探索應用程序容器的可伸縮性/可用性功能...
異步確實是正確的方法,但不要自己管理,使用支持異步Web服務調用的東西,如JAX-WS 2.0(它使用Future
接口和/或java.util.concurrent
的Executor
框架)。 請參閱使用JAX-WS 2.0進行異步Web服務調用 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.