## 1 Introduction
Users of today's parallel, distributed, and virtualized computing systems are becoming increasingly interested in cloud computing. It seems to be a popular choice for giving affordable and straightforward access to particular IT resources. Because of virtualization, cloud computing may use the same physical infrastructure to service a big client base with diverse processing needs [20]. The major issue with the cloud environment is the latency that can not be suitable for time-critical systems such as healthcare. Edge computing tries to move the processing capabilities at the edge node instead of depending on the cloud layer. Another paradigm, named fog computing, has been proposed to resolve the latency issue in cloud-based IoT systems. There are many suggestions that fog computing is an implementation of edge computing [21], and some researchers consider fog computing as an advanced setup of edge computing [22]. Fog computing is a decentralized setup that acts as an intermediary between the cloud and IoT sensor layers. Fog computing can provide storage and processing capabilities to the IoT layer in a decentralized manner that is closer to the sensors. The fog layer can process and temporarily store the sensed data before transmitting it to the cloud layer for final storage and processing, which helps greatly in reducing the time delay and solves the latency problem [22]. Still, the fog systems can suffer the same bottleneck if a single node is requested for more and more services compared to other nodes; when a heavy load comes, it will create a similar latency issue as that discussed for cloud computing. Load balancing is the solution to avoid heavy dependence on a single fog node and distribute the task properly [23]. A \"load balancing\" process involves distributing a heavier processing load among a smaller number of processing nodes to improve system performance. It is the practice of distributing load among many distributed system nodes in a distributed system environment to increase resource utilization and task response time. A good load-balancing algorithm should avoid overloading or underloading nodes. Due to extra restrictions like security, reliability, throughput, and other factors, choosing a load-balancing technique in a cloud computing environment is challenging. In order to reduce job response times, a load-balancing method for cloud computing distributes the entire system load. The algorithm must also guard against overloading any node [24]. In order to achieve a high level of user satisfaction and proper resource utilization, load balancing assists in the equitable allocation of computing resources. Low resource consumption is made possible by effective load balancing and high resource utilization. Fault tolerance can be implemented with the help of this. Load balancing is a technique that has assisted networks and resources in providing the highest throughput while having the shortest response time. In cloud computing, load balancing occurs on two levels. * A mapping is created at the virtual machine level between applications loaded in the cloud on the virtual machine. The load balancer assigns the required virtual machine to actual machines to balance the load on various PC programs [25]. * A virtual machine-to-host resource mapping that enables the host to handle numerous incoming application requests.