2016-05-17 2 views
2

私はシッディに新たなんだ、と私はいくつかの質問だ:シッディCEP 3.xの初心者の質問

  1. SiddhiManagerスレッド安全ですか? JVMごとに1つのインスタンスを共有するのは良い方法ですか?
  2. 実行時にストリームを定義してクエリを追加する方法はありますか? siddhiManager.createExecutionPlanRuntime(計画)となり、新しいExecutionPlanRuntimeインスタンスが作成されます。ストリームとクエリをどのように再定義するのですか?

  3. inEventsremoveEvents QueryCallback何ですか?

     
    
    executionPlanRuntime.addCallback("query1", new QueryCallback() { 
         @Override 
         public void receive(long timeStamp, Event[] inEvents, Event[] removeEvents) { 
          EventPrinter.print(timeStamp, inEvents, removeEvents); 
         } 
        }); 
    
    ストリームとクエリがたくさんある場合、Siddhiはどのようにスケールするのですか?

ありがとう!

答えて

2
  1. はい。 SiddhiManagerはスレッドセーフであり、 をJVMごとに1つの共有インスタンスにすることをお勧めします。事実、Siddhi ManagerはWSO2 CEPで使用されている です。
  2. Siddhiストリーム定義+クエリの組み合わせでは、 実行計画と見なされます。実行計画 をSiddhiレベルで編集する専用の方法は、 createExecutionPlanメソッドを使用して再デプロイする以外にはありません。これにより新しい ExecutionPlanRuntimeオブジェクトが取得されることに注意してください。したがって、古い入力 ハンドラ参照を再利用することはできません。
  3. inEvents配列はシッディによって放出される電流・イベントや removeEventsを表しシッディ
  4. から放出された有効期限が切れ、イベントを表す
  5. あなたは、単一の 実行計画では、クエリの多くを持っている場合シッディはかなりうまくスケールします。しかし、複数の実行計画を使用してスケールアウトする場合 Siddhiはリソース のリソースが実行計画ごとに少し高いため、パフォーマンスの低下を招くため、リソースのしきい値にすぐに到達します。 最近、[1]のメールで説明した というように、この制限に対処するための改善が行われました。改善はマスター 支店で利用可能です。

[1] http://wso2-oxygen-tank.10903.n7.nabble.com/Siddhi-Making-Disruptor-configurable-td136499.html

+0

おかげで多くのことを、それは本当に便利です!実行計画を実行時に編集することをサポートする計画はありますか?あるいは、これはおそらく役に立たないと思いますか? – gembin

+0

ホットデプロイの機能は本当に便利ですが、パフォーマンスのために妥協しました。ホットクエリースワッピングをサポートする場合、スワッピングプロセス中に受け取ったイベントを失わないようにするメカニズムが必要です。これにより、クリティカルな実行パスにコードレイヤーが追加されます。運用システムで実行時に誰かが実行計画をホットスワップする可能性について考えると、それはごくわずかです。おそらくゼロであろう。だから我々は基本的にトレードオフです。これがホット展開ソリューションを追求していない理由です。 – Tishan