Deployment Topologies

Fabric3 supports two deployment topologies: a single-VM domain where a runtime operates in isolation and a distributed domain where runtimes operate in unison as part of a domain. For an overview, see The Domain.

Single VM Domain

The single VM domain is the default configuration. Contributions are deployed to the same runtime instance that hosts components: 

 

In addition to single-host deployments, a single-VM configuration can be used to run a shared-nothing Fabric3 cluster.

Distributed Domains

Fabric3 supports two distributed domain topologies: peer-to-peer node-based and controller-based. The recommended topology for the Fabric3 standalone server and Tomcat host is the node-based configuration. When run in other host environments such as WebLogic, Fabric3 will use the controller-based topology.  

The node topology is zero-configuration: as runtimes are booted they will auto-discover and converge in the domain. Nodes are partitioned into zones which are homogenous clusters. That is, each runtime in a zone has the same configuration and hosts replicas of the same services. Starting a node runtime is simple - configure its domain name and zone as described below and execute: java -jar server.jar node.

Configuring the Runtime Mode

The runtime mode is configured using the mode attribute of the <runtime> element:

<config>
    <runtime mode="node"/>
</config>

Valid values are: vm, node, participant, and controller.

Configuring the Domain Name

If more than one domain is run on the same physical network, it is necessary to create unique domain names. The domain name is configured using the domain attribute of the <runtime> element:

<config>
    <runtime domain="mydomain"/>
</config> 
The domain name must be a valid URI host and not contain characters such as ":" or "/". The default domain name is domain.

Configuring Cluster Communications

Cluster communication is handled by JGroups. The JGroups protocol stack can be configured by using the federation element in systemConfig.xml:

<config>
   <federation>
      <config>
         <!-- JGroups XML configuration -->
      </config>
   </federation>
</config>