First I was told that my application need only perform keyed aggregation of 
streaming IoT data on a sliding window. Flink seemed the obvious choice.

Then I was told that the window size must be configurable, taking on one of 5 
possible values, anywhere from 5-60 minutes. Oh and configuration changes 
should take effect immediately. No biggie - I just opted to perform aggregation 
against all 5 possible window durations and let the post-processor worry about 
which outputs were of interest.

Now the latest requirement (and the interesting part): if the IoT devices lose 
connectivity, they will buffer many days worth of data until connectivity is 
restored at which point all of that buffered data will be transmitted to my 
application. I believe this implies that event time (as determined by each 
individual device) must now be taken into consideration but...

Question 1: is Flink really the right choice for this application now? Assuming 
the memory requirements for allowing such late data wouldn't be a deal-breaker, 
is Flink even capable of tracking event time on a per device/key basis?
Question 2: Assuming a solution with Flink is suitable, what constructs would I 
need to leverage? Custom windows maybe? Custom triggers and evictors?

Reply via email to