2011-06-16 21 views
2

ドロフルの設定をmaxThreadsに増やそうとすると処理時間が短縮されるかどうか疑問に思っていますか?私は次の設定でStatelessKnowledgeSessionを使用しています現時点では:多くのパフォーマンスを向上させるように思われませんDroolsの並列処理

Drools: 5.1.0.M1 
-XX:MaxPermSize=256m 
-Ddrools.maxThreads=5 
-Ddrools.conflictResolver=org.drools.conflict.FifoConflictResolver 
-Ddrools.shadowproxy=false 

、それらなしで同じであるように思われます。助言がありますか?

答えて

2

maxThreadsプロパティは、フレームワークを内部的に使用するためのもので、パーティションに分割できる膨大なルールセットがある場合に便利です。ここで

を使用すると、データ処理上のよりスケーラブルになりたい場合は、あなたが何ができるかの例です:

アイデアはKnowledgeAgentやナレッジベースが(それはあなたの使用に依存)、スレッドセーフであるということです。 これは、複数のスレッド間で共有できることを意味します。各スレッドでは、ローカルになるSession(ステートレスまたはステートフル)を呼び出すことができます。セッションはスレッドセーフではないことに注意してください。これにより、膨大なデータ負荷がある場合にスケーラビリティが向上します。

たとえば、Droolsに対してスケーラビリティを実装する場合は、Producer/Consumerデザインパターンを使用できます。