The resource lookup requirements in applications such as web caching, web content search, content distribution, resource sharing, network monitoring and management, and e-commerce have caught the attention of peer-to-peer (P2P) distributed systems researchers. Over the past few years, several decentralized P2P lookup system designs have been proposed for addressing these requirements. Most of these early designs are targeted at specific applications. Unfortunately, the variations in the operating environments and lookup characteristics across applications restricts the applicability of such specialized designs. In this paper, we present an architecture for P2P systems that identifies the functions necessary for designing resource lookup systems with wide applicability. We demonstrate the usefulness of the functions included in the architecture by illustrating their use in developing diverse lookup techniques.