In a cloud computing paradigm, allocation of various virtualized ICT resources is a complex problem due to the presence of heterogeneous application (MapReduce, content delivery and networks web applications) workloads having contentious allocation requirements in terms of ICT resource capacities (resource utilization, execution time, response time, etc.). This task of resource allocation becomes more challenging due to finite available resources and increasing consumer demands. Therefore, many unique models and techniques have been proposed to allocate resources efficiently. However, there is no published research available in this domain that clearly address this research problem and provides research taxonomy for classification of resource allocation techniques including strategic, target resources, optimization, scheduling and power. Hence, the main aim of this paper is to identify open challenges faced by the cloud service provider related to allocation of resource such as servers, storage and networks in cloud computing. More than 70 articles, between year 2007 and 2020, related to resource allocation in cloud computing have been shortlisted through a structured mechanism and are reviewed under clearly defined objectives. Lastly, the evolution of research in resource allocation techniques has also been discussed along with salient future directions in this area.