As we can reduce the number of event transfers with event batching, I think
the advantage of using a single event stream is to reduce number of disk
writes at DAS side. But as Nuwan mentioned, dealing with null fields can be
a problem in writing analytics scripts.

Regards,
Chathura

On Tue, Mar 29, 2016 at 10:40 AM, Nuwan Dias <nuw...@wso2.com> wrote:

> Having to publish a single event after collecting all possible data
> records from the server would be good in terms of scalability aspects of
> the DAS/Analytics platform. However I see that it introduces new challenges
> for which we would need solutions.
>
> 1. How to guarantee a event is always published to DAS? In the case of API
> Manager, a request has multiple exit points. Such as auth failures,
> throttling out, back-end failures, message processing failures, etc. So we
> need a way to guarantee that an event is always sent out whatever the state.
>
> 2. With this model, I'm assuming we only have 1 stream definition. Is this
> correct? If so would this not make the analytics part complicated? For
> example, say I have a spark query to summarize the throttled out events
> from an App, since I can only see a single stream the query would have to
> deal with null fields and have to deal with the whole bulk of data even if
> in reality it might only have to deal with a few. The same complexity would
> arise for the CEP based throttling engine and the new alerts we're building
> as well.
>
> Thanks,
> NuwanD.
>
> On Sat, Mar 26, 2016 at 1:22 AM, Inosh Goonewardena <in...@wso2.com>
> wrote:
>
>> +1. With combined event approach we can avoid sending duplicate
>> information to some level as well. For example, in API analytics scenario
>> both request and response streams have consumerKey, context, api_version,
>> api, resourcePath, etc properties which the values will be same for both
>> request event and corresponding response event. With single event approach
>> we can avoid such.
>>
>> On Fri, Mar 25, 2016 at 1:23 AM, Gihan Anuruddha <gi...@wso2.com> wrote:
>>
>>> Hi Janaka,
>>>
>>> We do have event batching at the moment as well. You can configure that
>>> in data-agent-config.xml [1]. AFAIU, what we are trying to do here is to
>>> combine several events into a single event.  Apart from that, wouldn't be a
>>> good idea to compress the event after we merge and before we send to DAS?
>>>
>>> [1] -
>>> https://github.com/wso2/carbon-analytics-common/blob/master/features/data-bridge/org.wso2.carbon.databridge.agent.server.feature/src/main/resources/conf/data-agent-config.xml
>>>
>>> On Fri, Mar 25, 2016 at 11:39 AM, Janaka Ranabahu <jan...@wso2.com>
>>> wrote:
>>>
>>>> Hi Srinath,
>>>>
>>>> On Fri, Mar 25, 2016 at 11:26 AM, Srinath Perera <srin...@wso2.com>
>>>> wrote:
>>>>
>>>>> As per meeting ( Paricipants: Sanjiva, Shankar, Sumedha, Anjana,
>>>>> Miyuru, Seshika, Suho, Nirmal, Nuwan)
>>>>>
>>>>> Currently we generate several events per message from our products.
>>>>> For example, when a message hits APIM, following events will be generated.
>>>>>
>>>>>
>>>>>    1. One from HTTP level
>>>>>    2. 1-2 from authentication and authorization logic
>>>>>    3. 1 from Throttling
>>>>>    4. 1 for ESB level stats
>>>>>    5. 2 for request and response
>>>>>
>>>>> If APIM is handling 10K TPS, that means DAS is receiving events in
>>>>> about 80K TPS. Although data bridge that transfers events are fast, 
>>>>> writing
>>>>> to Disk ( via RDBMS or Hbase) is a problem. We can scale Hbase. However,
>>>>> that will run to a scenario where APIM deployment will need a very large
>>>>> deployment of DAS.
>>>>>
>>>>> We decided to figure out a way to collect all the events and send a
>>>>> single event to DAS. Basically idea is to extend the data publisher 
>>>>> library
>>>>> such that user can keep adding readings to the library, and it will 
>>>>> collect
>>>>> the readings and send them over as a single event to the server.
>>>>>
>>>>> However, some flows might terminated in the middle due to failures.
>>>>> There are two solutions.
>>>>>
>>>>>
>>>>>    1. Get the product to call a flush from a finally block
>>>>>    2. Get the library to auto flush collected reading every few
>>>>>    seconds
>>>>>
>>>>> I feel #2 is simpler.
>>>>>
>>>>> Do we have any concerns about going to this model?
>>>>>
>>>>> Suho, Anjana we need to think how to do this with our stream
>>>>> definition as we force you to define the streams before hand.
>>>>>
>>>> ​Can't we write something similar to JDBC batch processing where the
>>>> code would only do a publisher.addBatch() or something similar. The data
>>>> publisher can be configured to flush the batched requests to DAS when they
>>>> hit a certain threshold.
>>>>
>>>> Ex:- We define the batch size as 10(using code or config xml). Then if
>>>> we have 5 streams, the publisher would send 5 requests to DAS(for each
>>>> stream) instead of 50.
>>>>
>>>> IMO, this would allow us to keep the existing stream definitions and
>>>> reduce the number of calls from a server to DAS.
>>>>
>>>> WDYT?
>>>>
>>>> Thanks,
>>>> Janaka​
>>>>
>>>>>
>>>>> --Srinath
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> ============================
>>>>> Blog: http://srinathsview.blogspot.com twitter:@srinath_perera
>>>>> Site: http://home.apache.org/~hemapani/
>>>>> Photos: http://www.flickr.com/photos/hemapani/
>>>>> Phone: 0772360902
>>>>>
>>>>> _______________________________________________
>>>>> Architecture mailing list
>>>>> Architecture@wso2.org
>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> *Janaka Ranabahu*
>>>> Associate Technical Lead, WSO2 Inc.
>>>> http://wso2.com
>>>>
>>>>
>>>> *E-mail: jan...@wso2.com <http://wso2.com>**M: **+94 718370861
>>>> <%2B94%20718370861>*
>>>>
>>>> Lean . Enterprise . Middleware
>>>>
>>>> _______________________________________________
>>>> Architecture mailing list
>>>> Architecture@wso2.org
>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>
>>>>
>>>
>>>
>>> --
>>> W.G. Gihan Anuruddha
>>> Senior Software Engineer | WSO2, Inc.
>>> M: +94772272595
>>>
>>> _______________________________________________
>>> Architecture mailing list
>>> Architecture@wso2.org
>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>
>>>
>>
>>
>> --
>> Thanks & Regards,
>>
>> Inosh Goonewardena
>> Associate Technical Lead- WSO2 Inc.
>> Mobile: +94779966317
>>
>> _______________________________________________
>> Architecture mailing list
>> Architecture@wso2.org
>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>
>>
>
>
> --
> Nuwan Dias
>
> Technical Lead - WSO2, Inc. http://wso2.com
> email : nuw...@wso2.com
> Phone : +94 777 775 729
>
> _______________________________________________
> Architecture mailing list
> Architecture@wso2.org
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>
_______________________________________________
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to