专家或通才线程。
嗨,我正在开发一个对象经过一些步骤的系统。
第一。主要是数据库查询
第二。主要是高清I / O和xml解析
第三。主要是Webservice通信
第四。主要是Xml序列化和反序列化
第五。一些可选的工作
系统需要每小时处理数千个对象,所以我将使用大量的线程,但我的问题是,最好的方法是什么?
每个步骤的一些专家线程:每个步骤上有5个线程,一些线程在第一步获取对象,处理它们,更新这些对象的状态,因此第二步的另一个专家线程获取这些对象和就此工作。
所有通才线程,每个线程从第一步获得一些对象,直到第5步结束。
答案 0 :(得分:2)
需要考虑的一些事项
失败模式:步骤失败会怎样?执行的工作必须重试或丢弃?是否存在线程死亡并重新创建或线程永远存在的故障模式?如果必须重新开始工作,那么专家线程会更有意义,因为当失败时,对象会被读入队列。
协调:在专家线程中,如果步骤严格连续,对象通常会在共享结构中存活更长时间,可能会损害您的吞吐量。因此,如果所有步骤都是严格连续的,那么通用线程就更容易减少协调工作。
答案 1 :(得分:1)
巧合的是,我们前一段时间有过类似的讨论。我们提出了在做出决定之前应该关注的这些要点:
我记得还会在评论中添加更多内容!!
答案 2 :(得分:1)
我可以想象您可能希望限制同时进行数据库和WS调用的数量,这样您就可以在管道的不同阶段获得不同程度的同意。因此,我可能会考虑使用专家。这往往会增加解决方案的整体复杂性。所以我首先要从通用方法的构建和性能测试开始。如果你得到了你想要的吞吐量,那就保持简单,不管多好。