  Stream applications are widely deployed on the cloud. While modern
distributed streaming systems like Flink and Spark Streaming can schedule and
execute them efficiently, streaming dataflows are often dynamically changing,
which may cause computation imbalance and backpressure. We introduce AutoFlow,
an automatic, hotspot-aware dynamic load balance system for streaming
dataflows. It incorporates a centralized scheduler which monitors the load
balance in the entire dataflow dynamically and implements state migrations
correspondingly. The scheduler achieves these two tasks using a simple
asynchronous distributed control message mechanism and a hotspot-diminishing
algorithm. The timing mechanism supports implicit barriers and a highly
efficient state-migration without global barriers or pauses to operators. It
also supports a time-window based load-balance measurement and feeds them to
the hotspot-diminishing algorithm without user interference. We implemented
AutoFlow on top of Ray, an actor-based distributed execution framework. Our
evaluation based on various streaming benchmark dataset shows that AutoFlow
achieves good load-balance and incurs a low latency overhead in highly
data-skew workload.
