[英]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.