- Ubiquitous Computing
- Web Services
- The Semantic Web
- Spaces Computing
- Peer-to-Peer Computing
- Collaborative Computing
- Dependable Systems
- Security
- Languages
- Pervasive Computing
- Cluster Concepts
- Distributed Agents
- Distributed Algorithms
- Distributed Databases
- Distributed Filesystems
- Distributed Media
- Distributed Storage
- Grid Computing
- Massively Parallel Systems
- Middleware
- Mobile and Wireless Computing
- Network Protocols
- Operating Systems
- Real-Time and Embedded Systems
- Commentary
- Endnotes
Cluster Concepts
NDC progress in the fitscape of cluster computing, as well as the use of cluster systems for scientific and commercial applications, involves participants (researchers, developers, and users) from academia, industry, laboratories, and commerce. Advances and trends in this area include but are not limited to the following:
-
System modeling and architecture
-
Hardware systems and networks
-
Single-system images
-
System software and tools
-
Programming models, environments, and languages
-
Algorithms and applications
-
Performance modeling and evaluation
-
Resource management and scheduling
-
High availability
-
Scalable clustered systems
-
System management and administration
Strictly speaking, clustered systems have not been traditionally thought of as networked distributed systems. Although network datacom can be a key part of the design of any cluster, what we normally think of as networks (or the middleware typically found in an arbitrary network) has not been traditionally involved. This is, however, changing. Because of competitive pressures and the need to incorporate COTS technologies into more and more areas of technology, some clusters too are starting to utilize protocols traditionally found only in less synchronization-demanding applications, even as COTS-level operating system technologies are entering the fray. Beowulf systems, for example, are high-performance clusters constructed from commodity hardware running open source operating system infrastructures, connected by private internal networks running open network protocols.[23]
Key to the notion of clustered computing is the idea of a single-system image. A cluster is generally a group of nodes that are coupled in such a way as to present the image of a single node to an application that runs on or interacts with the cluster. Clusters are designed to either scale or fail over smoothly; when one subnode in the cluster fails, another is there to take its place, with the application (including its users) hardly noticing. Hybrid clusters, those with sufficient subnodes and intelligence to fail over and scale well, are also useful.
Early clusters were more or less proprietary systems; tightly coupled CPUs that shared a common bus for memory and storage to reasonably share data at very high speeds, not very different from multiple-CPU systems. Advances in datacom capabilities have made it possible for clusters to leave the shared-bus environment, existing now across buildings and even across campus. Indeed, a cross-town cluster is not unthinkable, depending on the quality and speed of the dedicated datacom connection.
While the constraints of light speed may make it difficult for computer engineers to build a global cluster today, dedicated fiber-optic capabilities may one day make such an arrangement imaginable. A global cluster using the public Internet for datacom, however, is not so easy to imagine, given the inherent indeterminacy of the network and the state of Internet protocols today, regardless of increasing bandwidth. But there may yet be clever approaches to overcoming even those intrinsic limits.