对于科学计算来说,它无疑是重要的。对于企业应用而言,目前我个人还没遇到此类需求。目前的应用服务器用单个线程来处理一个request,这对于大多数应用都是合适的,只要响应时间在容许范围之内就没有问题。这种情况下用细粒度的并行并不经济,细粒度的并行需用更多的线程间同步,在系统负载较大时反而会降低吞吐量。
而对于耗时特别长的处理,有时可以用long run的方式解决问题。即用户先提交请求后就直接返回,等计算执行完再通知用户或直接发送结果给用户。
那么如果计算量大,又不能等待呢?Google的搜索是一个很好的例子。把大计算量的任务并行,响应时间自然就短了。不过这样的工作负载也许没有应用服务器什么事。应用服务器把计算任务交给类似Cell Broadband Engine这样的特殊机器也许更合适。
如果单个线程确实需要在本地进行细粒度的并行处理,J2EE规范和WebSphere Application Server 7也提供了相应的支持,参见
1. Service Data Objects, WorkManager, and Timers
2. The Work Manager API: Parallel Processing Within a J2EE Container
最后,不要自己创建线程,那样会干扰应用服务器的运行。
Wednesday, April 15, 2009
Subscribe to:
Post Comments (Atom)

0 comments:
Post a Comment