Eureka is creating a resource discovery service to provide dependency
resolution for OSGi components based on Apple’s Rendezvous technology.
The OSGi specification describes a framework that provides a platform for service oriented computing via dynamically loaded components, called bundles; bundles are a packaging and delivery format for service implementations and libraries. A specific bundle may have dependencies on arbitrary packages and/or on arbitrary services. When installing a bundle, it cannot be activated until the transitive closure of all bundles providing all required packages are also installed. The OSGi specification defines how to manage package dependency resolution when bundles providing packages are installed in the local framework, but it does not specify how to find bundles to satisfy such dependencies if they are not already installed locally. The situation is worse with service dependencies, since the OSGi specification does not specify how to manage these dependencies at all and, like package dependencies, the transitive closure of all service dependencies must be satisfied in order for the bundle to function. To further complicate this scenario, bundles are intended to be retrieved via URLs and similar remote access protocols. This means that generally bundles offering required packages and/or services are not available in the local OSGi framework and must somehow be retrieved from a remote source.
This project remedies this situation by creating a resource discovery mechanism that enables both package and service dependency resolution by allowing discovery of local and/or remote bundles that provide required packages and services, respectively. Additionally, the resource discovery mechanism provides keyword searching capabilities to enable end-user searches.
In order to make the discovery of bundles possible a network of inter-connected DNS servers is established which are advertising bundle meta-data following the idea of Apple’s Rendezvous technology. The concept of Rendezvous is enhanced allowing the DNS servers to be inter-connected in order to create service discovery subnetworks which can than be searched. In this regard the Eureka server infrastructure can be seen as a mixture between a client/server and a peer-to-peer approach providing something like a peer-to-peer server network. The only thing a client has to know is one entry point. He can then discover all bundles that are published in the network. Additionally bundles may be added to one of the servers in the network or a user can startup its own server and integrate it into the Eureka Service Discovery network. Through all of this a client will be confronted with network traffic only in case a query is made or bundles are published. The rest of the time, like in a true client/server scenario, the client is stateless in regard to the network.
Apart from specifying a convention for the structuring of DNS records in order to allow DNS based service discovery, Apple’s main contribution to Rendezvous is a protocol that makes it possible to send DNS queries via IP multicast to other devices in the local network. Eureka does support this option, providing and finding bundles in local as well as in wide area networks.
Eureka itself is written in Java and is intendet, but not limited, to be used with the free OSGi implementation Oscar hosted on sourceforge (Oscar) and the Gravity project (Gravity). The project has been accepted and turned in as a diploma thesis at the Free University Berlin (Fu-Berlin).
At the moment the first public release of Eureka is prepared for the
rollout so stay tuned :-).