Recently, the rapid proliferation of the Internet of Things (IoT) has led to a massive increase in the volume of digital data. The widespread utilization of cloud computing technology has several limitations to support smart things. To provide seamless service for the distributed IoT devices, Fog computing has emerged, is an extension of cloud computing. The distributed fog computing architecture enables the distribution of computing, storage, communication, control, management, and decision-making closer to the data origin. The main objectives of fog computing include ensuring improved efficiency and a reduced amount of data outsourced to the cloud for storage and processing. Fog computing provides potential benefits to low cost and low latency service needed IoT applications. It provides better results in a cloud-based execution environment by offering deeper insight and control across the distributed fog nodes. The popular real-time applications rely on fog computing, including smart cities, smart buildings, wind energy, smart transportation, and surveillance.