## 1 Introduction  
A network that connects diverse gadgets and programs is the Internet of Things (IoT) paradigm. The main objectives of the Internet of Things are to provide resources based on end-user needs and to transform the massive amounts of heterogeneous data produced by these numerous IoT devices into usable information [1]. Both industry and academia are interested in the IoT, which will improve people's daily lives [2]. As the IoT and mobile communication technologies advance, IoT devices and apps proliferate, providing end users with rich, straightforward services [3, 4]. However, IoT device computational and energy demands have increased [5, 6]. Because of their limited computing and energy capabilities, IoT devices cannot efficiently service these applications [7]. To compensate for the lack of computing resources, IoT devices can use cloud computing (CC) to outsource computing tasks to cloud servers for processing, which uses much computational power [8, 9]. In contrast, long-distance task transfer will necessitate significant transmission delays. Several obstacles, including a broad range of client requirements, a variety of device types, crucial communication requirements, restricted network bandwidth, limited computing power, operational costs, etc., affect the efficacy of the IoT network. A workable solution to the IoT resource allocation problem (IRAP) will greatly boost system performance, making it one of the most important topics. Resource scheduling and allocation are essential for managing data centers, since they aid in load balancing, resource utilization, and reducing carbon emissions [10]. Data center computers frequently process applications, and intelligent sensor data is frequently transferred to cloud data centers. Because of the ever-increasing resource requirements of IoT applications, which lead to explosively rising energy consumption and computing node performance deterioration due to data transmission and computing node movement [11], the question of how to implement IoT applications has become crucial. Fog computing shifts the processing of IoT applications to the network's edge rather than to cloud platforms. In IoT systems, the sensed data from the sensors are sent and stored in the cloud layer for further processing, but this process consumes a lot of resources, and hence the issue of latency arises. A cloud-based IoT environment cannot handle these latency-sensitive conditions [12]. Fog computing is a new paradigm of allocating processing and storage resources to resource-constrained IoT devices. In fog computing, several small devices with a small computing capacity named edge are deployed near the IoT sensor layer. The processed data is then forwarded to the cloud layer for final storage, which resolves the latency issue and provides more computing power than basic IoT sensors. All devices or sensors in a fog computing system can delegate their tasks to nearby fog nodes where high computational power or storage is required instead of forwarding them to the cloud module at a more considerable distance [13]. Fog computing can considerably cut the communication time between IoT nodes and computer servers compared to cloud computing. As a result, fog computing adoption in this sector is critical. Fog computing has become one of the most effective models for processing IoT applications as an outcome of the growth of IoT applications. IoT applications are run in the fog environment by edge computing nodes, intermediary computing nodes, and actual computers on cloud platforms [14]. This study proposed a dynamic resource allocation strategy called DEELB to facilitate dynamic load balancing for all fog and cloud computing nodes. Fog computing shifts processing capacity away from centralized data centers and closer to the network's edge to better serve IoT applications. Allocating resources to the cloud should prevent bottlenecks, maximize consumption, and lessen the impact of under and over-utilization [15].