... a research project on component-based grid programming in Münster.
Programming distributed systems in general and computational grids in particular is usually considered difficult.
Our objective is to offer a high-level programming model for grids which shields the programmer from low-level details like interactions between multiple Grid Services and the employed parallelization strategies, thus allowing to concentrate on the application logic.
Higher-Order Components (HOCs) are reusable patterns of parallelism, available to grid application programmers as a collection of Grid Services. HOCs are used as generic components, parameterized with application-specific units of code that exploit a novel mechanism for handling code mobility in grid environments. The parameters of a HOC are application-specific codes provided by users who are specialists in a specific scientific domain, e.g., biochemists, physicists or seismologists.
Our reference Implementation of a runtime environment for HOCs, the HOC Service Architecture (HOC-SA), is integrated with a portal application and standard database management systems providing a backend for dealing with data persistence issues.
The above application schema shows a client issuing an example invocation to a HOC hosted at Server Y: HOC1(A,B). Code parameters A and B were uploaded to the code service, hosted by Server X in the figure, before. Server Y instatiates HOC1 and serves the request. The remote class loader is a part of the server sided API for programming HOCs included in our reference implementation. It hides all interactions with the code service and allows the HOC developer to run code, uploaded from a client the same way as local code. Server Z represents another host and is not used in the depicted example.
HOCs simplify grid application development in two ways:
- HOCs hide from the application programmer all underlying middleware arrangements and distribution mechanisms of a particular application: the programmer selects appropriate components and constructs the application as a composition of HOCs;
- HOCs are reusable, generic components that can be customized with application-specific units of code, to adapt generic HOCs to the needs of a particular application. The customized HOCs are then used as ordinary grid services to process data in a parallel, efficient manner employing multiple servers in the grid.
All HOCs provide an interface to invoke them via SOAP, but for internal communication other protocols may also be used.
HOCs and other grid programming tools
HOCs impose no restrictions concerning a particular programming language or platform.
Customizable components like HOCs offer more potential for component reuse than components that have a fixed functionality.
The programming model for HOCs imposes a separation of concerns. The concerns regarding the implementation of a parallel algorithm in a distributed environment are an inherent part of a HOC and are therefore statically deployed into the associated services. All functional concerns regarding a particular application are expressed via units of code that are provided to a HOC at runtime in the form of mobile code parameters.
Security and failover-mechanism may be implemented by the HOC itself or handled by the runtime environment.
The reference implementation of the HOC-SA, our runtime platform for HOCs, is built on top of the Globus Toolkit.
All tools and documentation for using the HOC-SA are available via the HOC-SA Web site.
Different implementations of the HOC-model can be built, also on a middleware different than the Globus Toolkit.
The CoreGRID specification of a general Grid component model (GCM) lists support for HOCs as a requirement.
However, the HOC-SA is not part of the current GCM prototype (based on Fractal), but, if one plans to use HOCs on top of the CoreGRID GCM, the HOC-SA must be downloaded and installed as a complementary add-on.
We have experimented with using HOCs in combination with other Grid programming tools and libraries
None of these tools is required for using the Software in the HOC-SA CVS Repository.
The benefits of using the HOC-SA in conjunction with other tools and libraries are documented in our papers.
The source code for experiments which make use of HOCs and other programming tools can be requested from Prof. Dr. Sergei Gorlatch