## 2 Related Work
DRS uses Storm's streaming processing logic and demonstrates robust performance, suggesting the best resource allocation configuration, even when the underlying conditions of the queuing theory that it uses are not fully satisfied. In general, the overheads of DRS are less than milliseconds in most of the cases tested, resulting in a small impact on the system's latency. [PERSON] et al. [21] proposed a dynamic task scheduling approach that considers links between tasks and reduces traffic between nodes by assigning tasks that communicate with each other to the same node or adjacent nodes. The topology is obtained by recording the workload of nodes and communication traffic through switches a priori. They used a matrix model to describe the real-time task scheduling problem. Their processing procedure tries to reduce traffic between nodes through switches, cut off bandwidth pressure and balance the workload of nodes by selecting the appropriate host node when a trigger (either node-driven or task-driven) occurs. They evaluated their algorithm by deploying their own stream processing platform and compared their solution with algorithms built in Storm and S4 using the load balance and communication traffic through switches as indicators. As the number of jobs running in these platforms increased, the load balance improved. Moreover, less stream data flowing through switches were detected, and this traffic was reduced, relieving the bandwidth pressure of the cluster. This scheduler is based on similar ideas to that presented in our work and will be used for comparisons, as will be explained in the experimental results section. T-Storm, developed by [PERSON] et al. [20], is another attempt to minimize inter-node and inter-process traffic. Workload and traffic load information are collected at runtime by load monitors to estimate the future load using a machine learning prediction method. A schedule generator periodically reads the above information from the database, sorts the executors in descending order of their traffic load and assigns executors to slots. Executors from one topology are assigned in the same slot to reduce inter-process traffic. The total executor workload should not exceed the workers' capacity, and the number of executors per slot is calculated with the help of a control parameter. T-Storm consolidates workers and worker nodes to achieve better performance with even fewer worker nodes, enables the hot-swapping of scheduling algorithms and adjusts scheduling parameters on the fly. T-Storm's evaluation shows that it can achieve an over 84% and 27% speed-up of average processing time on lightly and heavily loaded topologies, respectively, with 30% fewer worker nodes compared to Storm. System overload is also a matter of interest for [PERSON] et al. [22]. They proposed a dynamic assignment scheduling (DAS) algorithm for big data stream processing in mobile Internet services. The authors generated a structure called the stream query graph (SQG) based on the operators and the relations between the corresponding input and output. SQG is a direct acyclic graph, and an edge between two nodes represents a task queue. The edge weight is the number of tasks in the queue. The minimum-weight edge is selected to send tuples, and a buffer list is set to store some tuples before the next scheduling. The scheduling strategy of DAS is updated continuously by every logic machine separately. By splitting the general scheduling problem into a common sub-problem for every operator, the overhead is reduced and accuracy is improved. Generally, elasticity is a matter of crucial importance in online environments, as the input rate can vary drastically in streaming applications, and operators' replication degrees need to be configured to maintain system performance. Unfortunately, most of the available solutions require users to manually tune the number of replicas per operator, but users usually have limited knowledge about the runtime behavior of the system.