# Application of Neural Networks in Distribution of the Load in Cluster-Based Web Systems
## 2 Related Work and Motivations  
Cloud computing, like many other computing technologies, uses distributed systems in order to meet a very high demand for computing power. The load balancing methods [10] are used to distribute tasks and loads between nodes in the system. These methods help to improve resource utilization, shorten response times, and enable flexible scalability, which is an essential part of cloud computing [11; 12]. The load balancing mechanisms used in internet clouds can be divided into three main categories [13; 14; 10; 15; 16]: static, dynamic, and adaptive. In static load balancing, tasks are performed with the usage of deterministic or probabilistic algorithms that do not take into account the current state of the system. Simple strategies have been popular since the beginning of cluster-based internet systems and they are still being refined. An example of such a strategy is Round Robin, which assigns incoming HTTP requests to successive servers. [PERSON] and [PERSON] created a slightly more intelligent version that takes into account the load on the web server [17]. Stochastic strategies are also still being developed, and they are becoming more and more sophisticated [18; 19; 20]. In the dynamic approach, decisions are made on the basis of the current state of the system. The most popular dynamic load balancing algorithm in AWS (Amazon Web Services) [21] is Least Load, which assigns HTTP requests to nodes with the lowest value of the selected load measure. The adaptive approach is the most complex. Decisions are made not only on the basis of the state of the system. As the environment changes, the operating strategy may also change. [22]. Most adaptation strategies use technics commonly called \"intelligent approaches\". Many specialists claim that only this type of strategy can effectively ensure an acceptable access time to WWW content under the conditions of typical WWW traffic, characterized by self-similarity and burstiness [23; 24; 25; 26]. Among many artificial intelligence techniques, the Ant Colony Optimization (ACO) algorithm [27], proposed by [PERSON] et al., can be distinguished. In the algorithm, the generated ants move along the width and length of the cloud network in such a way that they know the location of both underloaded and overloaded nodes. Another interesting method of distributing HTTP requests using strategies based on natural phenomena is the artificial bee colony (ABC) [25]. It uses a decision mechanism that mimics the behavior of a bee family. Another solution based on heuristic algorithms is the particle swarm optimization (PSO) strategy for scheduling requests to individual cloud components [28]. Artificial neural networks have also been used in adaptive load distribution systems [29; 30; 31]. A good example of an energy-sensitive solution is provided by [PERSON] et al. [32]. Over the past few years, there have been many publications on machine learning as applied to fair distribution of tasks in parallel and distributed systems. For example, [PERSON] et al. [33] used reinforcement learning to maximize computational performance in distributed memory systems during particle motion simulation. [PERSON] et al. [34] used machine learning for load balancing in distributed scientific computing. [PERSON] et al. [35] used a multilayer perceptron perceptron to balance Linux workloads in accessing lower-level hardware resources. Load balancing in the cloud is also a subject of ongoing research--artificial neural networks including deep neural networks are often used in them [36; 37]. The solution we present differs from the others in that the load balancing task has been decomposed into many parts--for each server and for each type of request. In each of these parts, the neural network does only one thing--it predicts the server's response time. Another group of intelligent adaptive approaches using fuzzy neural models was proposed by [PERSON].