Does this question belong on cstheory or cs?
Suppose that one has a choice of two systems:
- A single, centralized system that can process $X$ requests per second
-
A distributed system with $N$ servers, each of which can process $Y$ requests per second.
- Each small server costs $Q$ dollars
- $Y < X$, but $N * Y > X$. This models the common case where one can choose between one large server or many smaller servers, which together are more powerful than the large server.
- The servers are connected by a network (or networks) with bandwidth $B$ and latency $T$. You can choose any reasonable topology for the network, but it must be realistic (as in used in practice).
Suppose also that:
- Profit is proportional to the rate $R$ at which we can accept messages (so we want to maximize that).
- Messages arrive (on average) uniformly at each server.
- this is the key point: each message requires a database query. The data is stored on the servers. Storage for the servers (both small and large) costs $C$ per unit size up to a limit $S$ for the small servers and $L$ for the large one, with $S < L$. The data can all fit on the large server, but must be distributed among the small servers.
The question is: When is it better to use the single large server (vs. the larger server), in terms of throughput?