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 :-).