Hi Leo,

Let me add couple of words as well


On Mon, Mar 10, 2014 at 9:16 AM, Sriskandarajah Suhothayan <s...@wso2.com>wrote:

> Thanks for you interest in WSO2 CEP & Siddhi
>
> Sorry for the late reply, I some how missed the mail
>
>
> On Fri, Mar 7, 2014 at 4:48 AM, Leo Romanoff <romix...@yahoo.com> wrote:
>
>> Hi,
>>
>> I've started playing with WSO2 CEP recently and after some experiments
>> with it I collected a few questions, which I cannot answer by reading the
>> docs.  Hopefully I'll have them answered by posting them on this list.
>>
>> First of all, some background information. I have some previous
>> experience with Esper and Drools. Currently, I'm mostly interested in using
>> Siddhi in embedded mode, i.e. as a library. I could built a few small test
>> projects using it without any serious problems. But now I'm trying to
>> understand some more complex things about it.
>>
>> So, here are my questions:
>>
>> 1) How many rules/queries can be defined in one engine. How does it
>> affect performance?
>>
>>    For example, can I define (tens of) thousands of queries using the
>> same (or multiple) instance of SiddhiManager? Would it make processing much
>> slower? Or is the speed not proportional to the number of queries? E.g.
>> when a new event arrives, does Siddhi test it in a linear fashion against
>> each query or does Siddhi keep an internal state machine that tries to
>> match an event against all rules at once?
>>
>
> SiddhiManager can have many queries, and if you chain the queries in a
> liner fashion then all those queries will be executed one after the other
> and you might see some performance degradation, but if you have have then
> parallel then there wont be any issues.
>
>
>>
>> 2) Is it possible to easily disable/enable some queries?
>>
>> In my use-cases I have a lot of queries. Actually, I have a lot of
>> tenants and each tenant may have something like 10-100 queries. Rather
>> often (e.g. few times a day), tenants would like to disable/enable some of
>> their queries. What is a proper way to do it? Is it a costly operation,
>> i.e. does Siddhi need to perform a lot of processing to disable or enabled
>> a query?
>> Is it better to keep a dedicated SiddhiManager instance per tenant or is
>> it OK to have one SiddhiManager instance which handles all those tenants
>> with all their queries?
>>
>> The general norm is, you have to use a SiddhiManager per scenario, where
> each scenario might contain one or more queries, with this modal its easy
> if any tenant want to add a remove a scenario and it will not affect other
> queries and tenants.
>
> 3) What is the semantics of distributed execution? I have found that
>> Siddhi supports it by means of Hazelcast. But what does distributed
>> execution means? E.g. what happens when I feed in an event at one of the
>> instances? How can this distributed execution be controlled besides
>> enabling/disabling it?
>>
>> Currently Siddhi share its states among its different nodes via
> Hazelcast. We are currently working on alternative ways to improve its
> distribution capability.
>

We found hazelcast is too slow for distributed processing. We are working
on a storm based model, see "WSO2 CEP/Siddhi Storm Integration" thread some
time back. This should come out Q2/Q3.

>
> 4) What is the semantics of async processing? I have found
>> "setAsyncProcessing" method, but what would be the effect of enabling this
>> kind of processing as compared to the usual way of operation? What are the
>> benefits and what are the drawbacks? When should it be used?
>>
>
> By default Siddhi uses the request thread to do the event processing, but
> if you want to handover the data to another thread process then you can
> enable async processing. Its useful if you are doing very complex time
> consuming process using Siddhi.
>

If you do this, event are processed by placing them in a queues between any
two queries and assigning threads to queries. However, we found often
single thread (async model is faster).

>
>> 5) I figured out that Siddhi can persist its state and later on restore
>> it. This is a cool feature, but I'd like to understand better what kind of
>> information is being persisted. Is it only events whose processing is not
>> finished yet? Does it include a set of queries currently defined in a
>> given SiddhiManager? Does it include all of SiddhiManager's settings? What
>> kind of information is restored and what kind of information should be
>> provided again in addition to restored one? What is a typical situation
>> when Siddhi persistence could/should be used?
>>
>>
>> It only stores the state information of the processing, E.g the current
> running Avg of the average calculation. This will be used when server
> recovers from a failure.
>
>
>> I hope that most of my questions are pretty simple to answer for those,
>> who are familiar with Siddhi's architecture and its inner workings.
>>
>>
> Hope these information is very useful.
>
>
> Regards,
> Suho
>
> Thanks,
>>    Leo
>> _______________________________________________
>> Architecture mailing list
>> Architecture@wso2.org
>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>
>
>
>
> --
>
> *S. Suhothayan*
> Associate Technical Lead,
>  *WSO2 Inc. *http://wso2.com
> * <http://wso2.com/>*
> lean . enterprise . middleware
>
>
> *cell: (+94) 779 756 757 <%28%2B94%29%20779%20756%20757> | blog:
> http://suhothayan.blogspot.com/ <http://suhothayan.blogspot.com/> twitter:
> http://twitter.com/suhothayan <http://twitter.com/suhothayan> | linked-in:
> http://lk.linkedin.com/in/suhothayan <http://lk.linkedin.com/in/suhothayan>*
>
>
> _______________________________________________
> Architecture mailing list
> Architecture@wso2.org
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>


-- 
============================
Srinath Perera, Ph.D.
   http://people.apache.org/~hemapani/
   http://srinathsview.blogspot.com/
_______________________________________________
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to