我正在用Java编写一个需要处理大量请求/秒的Web服务。一般流程将是:
在互联网上进行研究,我发现了两种编写Web服务的通用方法:
您是否建议哪种方法通常更好,每种方法的优缺点是什么?我也很感激指向示例。
答案 0 :(得分:2)
不要以为多线程。异步思考。我碰巧编写了一个异步处理程序,在IIS中运行了大约2000个RPS和<10个线程。不知道java是如何工作的,因为我是一个.net人,但我相信他们有类似的BeginXXX / EndXXX方法。如果您生成一个线程,那么您不会考虑代码可以阻止的所有位置:数据库IO,文件I / O,Web服务等。这些是您的性能将导致您的站点变慢的地方。
异步,异步,异步。
吟唱并重复。
答案 1 :(得分:0)
除了“No Refunds No Returns”回复之外,我会说“异步思考”,因为您应该允许容器管理其部署的Web服务的多线程/可伸缩性和高可用性问题,这允许您使用应用程序容器设置诸如聚类之类的东西。
编辑:总而言之,没有这样的模式,也许您应该探索应用程序容器的可伸缩性/可用性功能......
答案 2 :(得分:0)
Asynchronism确实是正确的方法,但不要自己管理,使用支持异步Web服务调用的东西,如JAX-WS 2.0(使用Future
接口和/或Executor
框架来自java.util.concurrent
)。请参阅Asynchronous Web Service Invocation with JAX-WS 2.0。