Streaming systems, such as Spark Streaming, Google Dataflow with FlumeJava, adopt the aforementioned BSP model. They implement streaming by creating a micro-batch of duration T seconds. During the micro-batch, data is collected from the streaming source, processed through the entire DAG of operators and is followed by a barrier that outputs all the data to the streaming sink, e.g. Kafka. Thus, there is a barrier at the end of each micro-batch, as well as within the micro-batch if the DAG consists of multiple stages, e.g. if it has a group-by operator.