Service and resource discovery has become an integral part of modern networked systems. In this survey we give an overview of the existing solutions for service and resource discovery for a wide variety of network types. We cover techniques used in existing systems, as well as recent developments from the research front. We also provide taxonomy for discovery systems and architectures, and review the various algorithms and search methods applicable for such systems. Peer-to-peer overlays are discussed in detail and solutions for non-IP-based networks are also included in the review. We also specifically comment on issues related to wireless networks, and give an overview of the various issues and complications that should be considered in future work in this domain.