On 7/24/07, Simon Laws <[EMAIL PROTECTED]> wrote: > > To get the distributed domain support up to a level that is suitable for > including in the next release I think we need to make the node configuration > and management more dynamic. > > Scenarios > -------------- > The current scenario being used to test distributed support is the > calculator-distributed sample where the CalculatorComponent runs in nodeA > and the AddComponent and SubtractComponent run on NodeB and NodeC > respectively. This is a simple stand alone application and I think we should > continue with it. > > There has also been conversation on the list about how the distributed > domain can help when working in a web app environment. What are the salient > points here we need to consider? > > SCA Binding > ------------------ > Currently the code uses JMS to implement the default remote SCA binding. > The remote SCA binding is used when the system finds that two components > that are wired together locally are deployed to separate Nodes. As an > alternative it would be good to support web services here also and have this > fit in with the new SCA binding mechanism that Simon Nash has been working > on. > > To make a web services SCA binding work we need an EndpointLookup > interface so that components out there in the distributed domain can locate > other components that they are wired to. > > Node Management > --------------------------- > Currently each node runs in isolation and starts a local SCA domain > configured from .topology and .composite files. It would be good to define > NodeMaganement interfaces so that this information can be provided remotely > and so that the node can expose remotely accessible management interfaces, > for example. > Join a domain > Start/Stop domains and components in domains > Retrieve domain topology and topology changes relevant to the node > Retrieve default domain URIs for this node > Record any events that occur in the domain (could be offered as a feed) > > > The domain management interface Ant has recently been added that may help > us shape this. Also Sebastien's work to allow local domains to be modified > more dynamically should help make this work. > > Distributed Domain Management > ----------------------------------------------- > The notion of a distributed domain running across a series of nodes gives > us the opportunity to provide some centralized control, for example > Accept configuration changes > Notify interested nodes/domains that configuration changes are > available > Record the endpoints of services offered by each Node/Domain > Collect together events that occur in nodes (again could be offered as > a feed) > > For both NodeManagment and DistributedDomainManagement, SCA itself seems > to provide a good foundation for implementing the various management > services that are required. This is how the implementation to date > implements its component registry. Defining such components allows us to > provide different implementations, for example, we could retain the file > based management we have now for batch operation and create network based > management components for dynamic runtime environments. > > Anyhow, if anyone has any thoughts about what is required or wants to get > involved in moving this forward then you are most welcome > > Simon > A few more thoughts
I am building a few interfaces to formalize the messages involved in getting the distributed runtime going in its more dynamic guise. Generally I want to accommodate the case where the nodes of the distributed domain can run based either on configuration from file or from a central distributed domain management function. So I want the interfaces to be implementable in each node or to be proxyable to a distributed domain management function. The flexibility in the way that the distributed domain runs should be achievable by choosing different implementations for the management components. I say should as I don't have an end to end demo working of this dynamic approach yet. All help gratefully received;-) SCABinding ------------------ Ant has started work on making the WebService binding work without WSDL which will make the work on getting the remote SCABinding up much easier. For endpoint discovery we need something like ServiceDiscovery - FindServiceEndpoint(distributedDomainUri, serviceName) - RegisterServiceEndpoint(distributedDomainUri, serviceName, url) This could also be bought into play in the special case of each Node discovering the endpoint of the distributed domain management function. In the case where that configuration is not available locally you would expect a remote endpoint to be provided Node Management --------------------------- The minimum interface for node management could look something like Node - start(nodeName) - stop() - JoinDomain(distrbutedDomainUri) - DomainNodeConfigurationChange(distributedDomainUri) So the node operation can be started or stopped. Starting a node would cause it to go and discover and register with the distributed domain management service. The node can be asked to join a domain and it can be notified if there are any domain configuration changes that affect it. Changes would be retrieved by the node form the distributed domain. Changes would be provided to the domain implementation at the node though an interface like DomainNode - createDomainNode(distributedDomainUri) - SetBaseUri(distributedDomainUri, protocol, uri) - AddContribution(distributedDomainUri, contributionUri) - RemoveContribution(distributedDomainUri, contributionUri) - AddComponent(distributedDomainUri, componentUri) - RemoveComponent(distributedDomainUri, componentUri) - StartDomainNode(distributedDomainUri, distrbutedDomainUri) - StopDomainNode(distributedDomainUri, distributedDomainUri) - StartComponent(distributedDomainUri, componentUri) - StopComponent(distributedDomainUri, componentUri) I'm not sure how much of this interface should be offered remotely by a node. Initially the configuration will be offered en masse and only the node will be interested in pushing configuration through this interface and on into the various interfaces offered by Tuscany already. I'm a little confused by the granularity that is intended for incremental updates but that is a separate thread. Distributed Domain Management ----------------------------------------------- Distributed Domain - GetDomainNodeConfiguration(distributedDomainUri, nodeUri) - RegisterNode(nodeUri) This is minimal as currently I expect the distributed domain management to simply accept node registrations and then provide their configuration on request. I.e. no incremental updates in the first instance. I'll implement these interfaces in the distributed package and welcome any feedback. Simon
