Cloud computing is an emerging field. With its three key features and its natural favorable circumstances, it has had a few difficulties in the recent years. The gap between the cloud and the end devices must be reduced in latency specific applications (i.e., disaster management). Right now, fog computing is an advanced mechanism to reduce the latency and congestion in IoT networks. It emphasizes processing the data as close as possible to the edge of the networks, instead of sending/receiving the data from the data centre by using large quantity of fog nodes. The virtualization of these fog nodes (i.e., nodes are invisible to the users) in numerous locations across the data centres enabled the fog computing to become more popular. The end users need to purchase the computing resources from the cloud authorities to process their excessive workload. Since computing resources are heterogeneous and resource are constrained and dynamic in nature, allocating these resources to the users becomes an open research issue and must be addressed as the first priority.