Stefan Egli created SLING-2827:
----------------------------------

             Summary: discovery.impl: a resource based implementation of the 
discovery.api
                 Key: SLING-2827
                 URL: https://issues.apache.org/jira/browse/SLING-2827
             Project: Sling
          Issue Type: New Feature
          Components: Extensions
            Reporter: Stefan Egli


This ticket is about contributing a resource based implementation of the 
discovery api (see [0]) named discovery.impl to Sling. The implementation is 
attached as a .tar.gz - its md5 hash is d8891e5401114b2a629d3ff01044a1d6


Short description of the discovery.impl:

The discovery.impl is an out-of-the-box implementation of the discovery.api 
using standard features of Sling. The discovery.api provides a view of a 
topology consisting of a number of individual sling-instances. The instances 
are loosely coupled, except for being part of the topology they do not 
implicitly or necessarily share anything else. For those instances though that 
form a cluster - ie when connected to the same repository - the api has an 
abstraction called ClusterView.

The discovery.impl uses two mechanisms for discovering other instances:

 * it stores information about the local instance at a unique location in the 
repository. Thus allowing other instances that access the same repository to 
see and recognize each other.
 * it connects to 'remote' instances via a plain HTTP POST, announcing the 
instances that it can see, and getting back the instances of the counterpart

All of the above is done regularly using a heart-beat - thus allowing to get a 
view of the currently live instances.

The discovery.api additionally supports leader-election within a cluster: it 
ensures that one and only one instance is elected leader and stays leader until 
it disappears/shuts down/dies. The discovery.impl uses repository-based voting 
between the instances of a cluster to establish a common 'cluster view'. Based 
on an established view, the discovery.impl is then able to deterministically 
elect one of the instances of the view as the leader (namely the one with the 
lowest 'id').

Also, to support the PropertyProvider concept of the discovery.api, the 
properties of each instance are propagated to the other instances using the 
heartbeat as piggyback (either via the repository or via HTTP POSTs for remote 
instances).

To get an idea of the discovery.impl build and add and start the two bundles 
(org.apache.sling.discovery.api and org.apache.sling.discovery.impl) to your 
sling installation and open the browser to the provided, simplistic 'topology 
webconsole' at

http://localhost:4502/system/console/topology


Please let me know if anything needs further explanation, details. Looking 
forward to having this included in Sling!


Cheers,
Stefan
--
[0] http://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/discovery/api

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to