- RAMCloud is built on the notion of distribution:there will be many storage servers, and there will also be application servers. Not all of the functionality of the system will run on the storage servers.
- Wherever it can be done efficiently, we should try to offload functionality from the storage servers to the client machines: this will increase the scalability of the storage system.
- The RAMCloud system software can include a component that runs on the client machines, so we can choose whether to implement pieces of functionality on the client or on the servers.
- For example, consider an operation that collects data and sorts it:
- Of the data will almost certainly come from multiple storage servers.
- It would probably make sense to do the final merge on the client machine, not on a storage server: the RAMCloud client software identifies the desired data, fetches pieces from various servers, and merges them together into the final sorted result.
- It might not even make sense for the storage servers to do the initial sorts of the data fragments: just collect raw data and return it for sorting on the client machine.
- What is the right boundary between RAMCloud client software and server software?
- Things that absolutely must be done on servers:
- Anything that requires trust, such as access control. Particularly in a multi-tenant environment, the client can't be trusted.
- Locking (if it potentially impacts other client machines).
Manage space
Manage content
Integrations