Service to Service Communication in Inferno
Inferno makes it easy to create simple workflows by "piping" data from one service to the next (see
InfernoExperimentProjectPlan). However, it is not literally true that the data move from one remote service to the next: in fact, the data will be piped to the user's console, from where they will be piped out to the next service. For large amounts of data, this could be rather inefficient, especially if the user is on a low-bandwidth Internet connection.
This page describes a possible alternative way of transporting data, at the expense of a greater required effort in specifying the workflow. Let's say we'd like to run the workflow:
extract < input.data | process | render > output.data
Each step reads data from its standard input and writes to its standard output. Let's assume that the "extract" service runs on a machine called "alpha", the "process" service runs on "bravo" and the "render" service runs on "charlie". The user is sitting at another machine, called "delta".
Each service exposes a namespace that looks like this:
/
|
----------------------------------
| | | |
extract output progress ...
The left-most "file" represents the executable, ("extract", "process" or "render"). When the user writes data to this "executable" (e.g.
cat input.data | extract) the service is set up to write data to its "output" file. To achieve service-to-service communication, the next executable in the chain (in this case, "process") is mounted in place of the "output" file.
--
JonBlower - 25 May 2004
Topic revision: r1 - 25 May 2004 - 17:04:00 -
JonBlower