Fabric3 is a platform for building distributed applications and integrating loosely coupled systems. Perhaps the best way to describe Fabric3 is to contrast it with other middleware technologies:
The following section explains key concepts necessary to understand when designing, deploying and maintaining distributed applications with Fabric3.
pa
In SCA, a domain is a realm of control and administration. Specifically, a domain is a set of Fabric3 runtimes that act in that host applications and are managed together. A domain may be large, comprising multiple runtime instances on separate physical machines, or small, consisting of a single runtime. In a domain, policy and contributions may be shared.
It is often convenient to partition large domains into a set of smaller regions, or zones. For example, an organization may decide to deploy one application to a set of runtimes and another application to a different set of runtimes. If the organization assigned the applications to different domains, they would not be able to share policies or contributions.
Zones partition a domain into smaller managed units. A zone is a set of one or more runtimes where applications (contibutions) are deployed. A domain always has at least one zone and may contain more.
While a domain may be heterogeneous (i.e. it may be composed of many different runtime types), a zone is homogenous. All runtimes in a zone are the same. Furthermore, all runtimes in a zone host replicas of the same applications.
A distributed domain is composed of runtimes that perform several different roles: the controller, participant, and zone manager.
The controller manages the domain, including contributions in a repository and deployment to zones. A participant runtime hosts application components for the zone it is a member of. Each zone also has a dynamically elected zone manager which is responsible for coordinating with the domain controller for operations such as deployment. A Fabric3 domain is segmented such that the controller only communicates directly to zone managers, which in turn are responsible for managing individual participants.
Fabric3 uses JGroups (http://www.jgroups.org) as its underlying communications technology, although this may be substituted by alternative technologies.
Deployment plans are XML files that specify zones components in a contribution should be deployed to. They may also contain deployment-specific configuraton. Deployment plans can be installed in the domain as part of a contribution or separately. In addition, contributions may be deployed multiple times using different deployment plans.
Clustering is provided through zones. When components in a contribution are deployed to a zone, they are replicated to all runtimes configured as part of the zone.
Using this architecture, it is possible to construct domain topologies that are easy to manage and scale. A domain may span multiple runtime types (e.g. different application servers). However, it is also important to note that this architecture scales down. A domain can be confined to one runtime instance, in which case the controller and participant runtime are the same.
Setting up a distributed domain requires the Fabric3 standalone distribution. Note that each runtime must be booted from a separate file system directory.