/
DDF Architecture
DDF Architecture
Architecture Diagram
As depicted in the architectural diagram above,
DDF
runs on top of an OSGi Framework, a Java Virtual Machine, several choices of Operating Systems and the physical hardware infrastructure. The items within the dotted line represent theDDF
out-of-the-box.DDF
is a customized and branded distribution of Apache Karaf.DDF
could also be considered to be a more lightweight OSGi distribution as compared to Apache ServiceMix, FUSE ESB, or Talend ESB, all of which are also built upon Apache Karaf. Similar to its peers,DDF
incorporates additional upstream dependencies.DDF
as a framework hostsDDF
Applications, which themselves are extensible by adding components via OSGi. The best example of this is the DDF Catalog (API), which offers extensibility via several types of Catalog Components. TheDDF
Catalog API serves as the foundation for several Applications and resides in the Applications tier.The Catalog Components consist of Endpoints, Plugins, Catalog Frameworks, Sources, and Catalog Providers. Customized components can be added to
DDF
.Nomenclature
- Capability - A general term used to refer to an ability of the system
- Application - One or more features that together form a cohesive collection of capabilities
- Component - Represents a portion of an Application that can be extended
- Bundle - Java Archives (JARs) with special OSGi manifest entries.
- Feature - One or more bundles that form an installable unit; Defined by Apache Karaf but portable to other OSGi containers.
OSGi Core
DDF
makes use of OSGi v4.2 to provide several capabilities:- A Microkernel-based foundation, which is lightweight due to its origin in embedded systems.
- Enables integrators to easily customize components to run on their system.
- Software applications are deployed as OSGi components, or bundles. Bundles are modules that can be deployed into the OSGi container (Eclipse Equinox OSGi Framework by default).
- Bundles provide flexibility allowing integrators to choose the bundles that meet their mission needs.
- Bundles provide reusable modules that can be dropped in any container.
- Provides modularity, module-based security, and low-level services such as Hypertext Transfer Protocol (HTTP), logging, events (basic publish/subscribe), and dependency injection.
- Implements a dynamic component model that allows application updates without downtime. Components can be added or updated in a running system.
- Standardized Application Configuration (ConfigurationAdmin and MetaType)
OSGi is not an acronym, but if more context is desired the name Open Specifications Group Initiative has been suggested.
More information is available on OSGi at http://www.osgi.org/.
Built on Apache Karaf
Apache Karaf is a FOSS product that includes an OSGi Framework and adds extra functionality, including:
- Web Administration Console - useful for configuring bundles, installing/uninstalling features, and viewing services
- System Console - provides command line administration of the OSGi container. All functionality in the Web Administration Console can also be done via this command line console.
- Logging - provides centralized logging to a single log file (data/logs/ddf.log) utilizing log4j
- Provisioning - of libraries or applications
- Security - provides a security framework based on Java Authentication and Authorization Service (JAAS)
- Deployer - provides hot deployment of new bundles by dropping them into the <INSTALL_DIR>/deploy directory
- Blueprint- provides an implementation of the OSGi Blueprint Container specification that defines a dependency injection framework for dealing with dynamic configuration of OSGi services.
DDF
uses the Apache Aries implementation of Blueprint. More info at http://aries.apache.org/modules/blueprint.htm
- Spring DM - An alternative dependency injection framework.
DDF
is not dependent on specific dependency injection framework. Blueprint is recommended.
Additional Upstream Dependencies
DDF
is a customized distribution of Apache Karaf, and therefore includes all the capabilities of Apache Karaf.DDF
also includes additional FOSS components to provide a richer set of capabilities.Integrated components include their own dependencies, but at the platform level,
DDF
includes the following upstream dependencies:- Apache CXF - Apache CXF is an open source services framework. CXF helps build and develop services using front end programming APIs, like JAX-WS and JAX-RS. (More info at http://cxf.apache.org)
- Apache Commons - provides a set of reusable Java components that extends functionality beyond that provided by the standard JDK (More info available at http://commons.apache.org)
- OSGeo GeoTools - provides spatial object model and fundamental geometric functions, used by
DDF
spatial criteria searches. (More info available at http://geotools.org/) - Joda Time - provides an enhanced, easier to use, version of Java date and time classes (More info available at http://joda-time.sourceforge.net)
For a full list of dependencies view the Software Version Description Document.
Recommended Hardware
Because of its modular nature,
DDF
can require many or few system resources depending on which bundles and features are deployed. In general,DDF
will take advantage of available memory and processors. A 64 bit JVM is required, and a typical installation is on a single machine with 16GB of memory and 8 processor cores., multiple selections available,