Transfer Architecture: Difference between revisions

From wiki.zmanda.com
Jump to navigation Jump to search
(new link)
(add POD link)
 
Line 15: Line 15:


= API Details =
= API Details =
The most authoritative source for the architecture, particularly regarding implementation details, is the source itself - see <tt>xfer-src/</tt> in the source distribution.
For a full list of available elements and their use, see {{pod|Amanda::Xfer}}.  The most authoritative source for the architecture, particularly regarding implementation details, is the source itself - see <tt>xfer-src/</tt> in the source distribution.
* [[XFA/Using Transfers]]
* [[XFA/Using Transfers]]
* [[XFA/Xfer Mechanisms]]
* [[XFA/Xfer Mechanisms]]
* [[XFA/Writing Transfer Elements]]
* [[XFA/Writing Transfer Elements]]

Latest revision as of 19:52, 18 January 2010

The transfer architecture arises from a simple observation about Amanda: its core job is to move data around. Amanda has the Application API, which handles getting data from clients (and returning it on restores); and the Device API, which handles long-term storage of data. The transfer architecture (abbreviated XFA) connects these two APIs.

Overview

At a high level, the XFA is simple. It manages transfers, which are composed of transfer elements. A transfer has a source element, which produces data, a destination element, which consumes it, and zero or more filters, which transform the data that passes through them. Elements send messages to indicate the status of a transfer and record information like index offsets. It is similar to GStreamer, but optimized for Amanda's needs rather than those of media streaming applications.

Benefits

The transfer architecture has the following benefits:

  • Transfer elements are connected in a maximally efficient manner
  • New elements are easy to add, to support new encryption algorithms, compression utilities, compression offloading, etc.
  • DRY-compliant -- the same code is used in all data transfers, so it is better-tested and error messages are predictable

Conceptual Details

API Details

For a full list of available elements and their use, see Amanda::Xfer. The most authoritative source for the architecture, particularly regarding implementation details, is the source itself - see xfer-src/ in the source distribution.