IoT (Internet of Things) become essential role of our day-to-day life, so the number of connected devices with internet is unpredictable rate. These IoT generated data are moved to cloud for computation. Today‘s cloud computing is not suitable for velocity volume and variety of data produced by the IoT devices. Fog computing has emerged to provide the attractive solution to the distributed application of IoT. Overhead traffic is increased as all the requests are sent to the server causing delays that cannot be accepted in many applications. While fog computing reduces data transfer latency, load balancing between fog servers still needs to be addressed for better timing performance. The challenges include a great number of tasks, customer mobility and fog server heterogeneity. To overcome this problem, consolidate fog computing resources so that requests are handled by foglets, and only essential requests for processing are sent to the cloud. Servers are locally installed in each city to manage nearby requests to make efficient use of resources along with load balancing among all servers, resulting in reduced latency and traffic cover head with improved service quality. This paper gives a comprehensive survey of fog computing with comparing other computing paradigms, issues and challenges. © 2019 ETA-Florence Renewable Energies.