The component architecture toolkit
Dennis B. Gannon, Juan E. Villacis · 1999
Metacomputing is concerned with the exploitation of large-scale distributed computing over the Internet using high-performance networks and computing resources. Metacomputing is important to scientific computing for several reasons. First, many scientific problems exhibit some degree of parallelism, and hence may be solved more efficiently on a network of computers, or “metacomputer”, than on a single computer. Second, problems whose resource requirements exceed the capacity of a single computer can take advantage of the potentially unbounded capacity of a metacomputer. Third, problems which require access to local or specialized resources would benefit from the distributed aspect of a metacomputer. Metacomputing also extends the feasibility range of existing scientific problems. The Grid is a software infrastructure for implementing metacomputing. Grid systems such as Globus and Legion provide sophisticated service layers which allow users to access and manage distributed hardware and software resources. However, building distributed applications by programming directly to low-level Grid APIs is not easy. End users who wish to solve problems using the GrK tend to first think in terms of higher-level, problem-centric concepts, such as determining which software resources are applicable, and then designing and building an application using those resources. Low-level details such as process instantiation, machine or network characteristics, and so forth typically come at a later stage of the application building process. This dissertation presents the Component Architecture Toolkit (CAT), a system enabling end users to build component-based applications in a metacomputing environment. The CAT contributes the following: a model capturing the principles used to build a scalable component system; an extensible framework design that can be retargeted to different Grid systems; a set of framework libraries for developing components and a runtime environment for deploying them; and a set of end user tools for locating and instantiating components, as well as tools for building, controlling and analyzing the performance of component-based applications. Scientific computing issues addressed by the CAT design and implementation are discussed. The application of the CAT to a particular scientific problem domain, as well as the performance analysis of an example component-based application is also presented.