- Mechanical Solutions: Parallel Computing at the Operating System Level
- Automated Network Routing: Parallel Computing by Predetermined Logic
- Grid Computing: Parallel Computing by Distribution
- Parallel Computing for Business Applications
- The Solution: Software Pipelines
- Fluid Dynamics
- Software Pipelines Example
Grid Computing: Parallel Computing by Distribution
All of the techniques covered so far have their uses, but you can’t use them for massive scalability, and they don’t work for transaction-based, message-oriented applications. You can scale them mechanically and automatically to a certain level, at which point the overhead of maintaining shared or redundant resources limits performance gains. If you need greater scalability, grid computing is a better choice.
In grid computing the system distributes discrete tasks across many machines in a network. Typical grid architecture includes a centralized task scheduler, which distributes and coordinates tasks with other computing facilities across the network.
Grid computing can deliver far higher throughput than the automated approaches described earlier, but it puts a significant burden on the developer. You must explicitly write the code for dividing tasks, for distributing tasks, and for reassembling the processed results.
Most importantly, grid computing is primarily designed to solve the “embarrassingly parallel” problem—long-running, computation-intensive processes as found in scientific or engineering applications. Grids are very beneficial for the typical use cases, such as modeling fluid dynamics, tracing the human genome, and complex financial analytics simulations. In each of these applications you divide a massive, long-running computation among multiple nodes. This divides the problem into smaller, similar tasks, which interact predictably with computational resources. However, this is not as useful for business applications, given their transactional nature, mixed workload requirements, and ever-changing volume demands.