Chapter 5. Managing Many Simultaneous Client Connections
If everyone helps to hold up the sky, then one person does not become tired. | ||
--Tshi Proverb |
Maintaining a high level of throughput while managing thousands of simultaneous client transactions in the unpredictable and "bursty" environment of networked software is one expectation developers have for their Node implementations. Given a history of failed and unpopular solutions, the problem of concurrency has even been assigned its own numeronym: "The C10K problem". How should network software confidently serving 10,000 simultaneous clients be designed?
The question of how to best build high concurrency systems has provoked much theory over the last several decades, with the debate mostly between two alternatives, threads and events:
Threading allows programmers to write straight-line code and rely on the operating system to overlap computation and I/O by transparently switching across... |