Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

...