The ability to find services or resources that satisfy some criteria is an important aspect of distributed systems. This paper presents an event-based architecture to support more dynamic discovery scenarios, including efficient discovery of resources whose attributes can change, and continuous monitoring for resources that satisfy a set of constraints. Furthermore, algorithms are developed to optimize the discovery cost by reusing results among similar concurrent discovery requests. Detailed evaluations under various workload distributions demonstrate the feasibility of the architecture and show significant benefits of the optimizations in terms of network traffic and discovery processing time. Keywords Service discovery, resource discovery, content-based publish/ subscribe, publish/subscribe applications, covering, subscription similarity