Server Pools
Use a set of processes (server pool or server class) to emulate multithreading
- Better protection and fault isolation than multithreading
- Avoids problems of user-level multithreading - blocking operations and conflicts between scheduling levels
How to dispatch calls?
- Randomly select a server
- Server class shares a dispatch queue. Clients enqueue, servers dequeue.
- Use a dispatch process (adds a context switch per call)
Number of servers is proportional to number of active transactions, so not too many processes