...
Run a node exe giving it a a runtime name and a node name. The node exe will embed a Tuscany runtime.
stopping a node
Stop a node exe
...
All domain compnents are stopped
Configure a domain
Domain comfiguration is provided including
assignment of components to runtime nodes
description of base URLs for schemes for each node
adding a contribution
The domain (each node in the domain) reads the contribution and makes assigned components ready for use
...
All components assoicated with the contribution are stopped and removed
assignComponent
node failure
A new node is started and is configured to match the failed node
configuring endpoints
Service endpoints are configured based on the specified algorithm
choosing a component instance
If a component is assigned to multiple nodes then the runtime is responsible for selecting the appropriate node
based on, scope, conversational status of target component and also non specified goals such as load balancing
Likely to be implemented as a cluster hosting solution
Incremental Steps
Stage 1 - 1st pass simple scenario (done)
- Domain Configuration - a text editor
- Events - runtime startup, i.e. just starting the runtime executable
- Configuration - a file system
- Messages - JMS
Stage 2 - More efficient SCABinding implementation and endpoint resolution
- Domain Configuration - a centralised model parallels the model in each node and
allows a restarted node to determine, based on node name,
started domains and loaded contributions - Events - doman start
add contribution
remove contribution
domain stop - Configuration - a file system
- Messages - a point protocol, e.g. JSONRPC supported by and endpoint registry
stage 3 - More dynamic configuration of distributed domain
- ???
SCA Binding
The SCABinding is the default binding used within an SCA assembly. In the runtime in a single VM case it implies local connections. In the distributed runtime case it hides all of the complexity of ensuring that nodes wired between runtimes are able to communicate.
When a message oriented binding is uses used here we benefit from the abstract nature of the endpoints, I.e queues can be created given runtimeId/ServiceID and messages can be targetted at these queues without knowledge of where the message consumers are physically.
...
No Format |
---|
SCADomain Name (DomainA) BaseURI Domain Level Composite Component (ComponentA) implementation composite Service Reference Installed Contributions Initial Package Contribution (file system, jar, zip etc) URI (ContributionA) /META-INF/ sca-contribution.xml deployable (composite QName) import (namespace, location) export (namespace) sca-contribution-generated.xml deployable (composite QName) import (namespace, location) export (namespace) deployables *.composite *.composite URI Component (ComponentA) Service Reference Other Resources URI Dependent Contributions Contribution snapshot Deployment-time Composites *.composite Over and above the contributed information we need to associate components with runtime nodes. Runtime name (runtimeA) Node name (runtimeAnodeeA) DomainA scheme http://localhost:8080/acbd scheme https://localhost:442/abcd ComponentA |
...
Managing The Distributed Domain
Incremental Steps
Stage 1 - 1st pass simple scenario
- Domain Configuration - a text editor
- Events - runtime startup, i.e. just starting the runtime executable
- Configuration - a file system
- Messages - JMS
Stage 2 - More efficient SCABinding implementation
...
Stage 3 - Integration with management/provisioning
?
Stage 4 - Dynamic configuration
- Domain Configuration - A tool for creating changes and events
- What sort of events should be supported here
- Events - initial startup and changes
- Configuration - repository
- Messages - a faster point to point protocol, e.g. JSONRPC, required some endpoint registry
...
Code Changes
Currently the runtime has the following structure
...