Federated learning (FL), as a machine learning framework, has garnered substantial attention from researchers in recent years. FL makes it possible to train a global model through coordination by a central server while ensuring the privacy of data on individual edge devices. However, the data on edge devices that participate in FL training are not independently and identically distributed (IID), resulting in challenges related to heterogeneity data. In this paper, we introduce the challenges generated by non-IID data to FL and provide a detailed classification of non-IID data. Then, we summarize the existing solutions to non-IID data in FL from the perspectives of data and process. To the best of our knowledge, despite the considerable efforts achieved by many researchers in solving the non-IID problem, some issues remain unsolved. This paper provides researchers with the latest findings and analyzes the potential future directions for solving non-IID in FL.