Service discovery is a well-known but important aspect of dynamic servicebased systems, which is rather unsolved for megascale systems with a huge number of dynamically appearing and vanishing service providers. In this paper first requirements for service discovery in megascale systems are identified from three perspectives: provider, client and system architecture side. Existing approaches are evaluated along these lines and it becomes apparent that modern solutions make advances with respect to the distributed system architecture but fail to support many aspects of client side requirements like persistent queries and elaborate query definitions. Based on these shortcomings a novel solution architecture is presented. It is based on the idea that service description data can be subdivided into static and dynamic properties. The first group remains constant over time while the second is valid only for shorter durations and has to be updated. Expressive service queries rely on both, e.g. service location as example for the first and response time for the latter category. In order to deal with this problem, our main idea is to also subdivide the architecture into two interconnected processing levels that work independently on static and dynamic query parts. Both processing levels consist of interconnected peers allowing to auto-scale the registry dynamically according to the current workload. The implementation using the Jadex middleware is explained and the approach is empirically evaluated using an example scenario.