Replicates
Last updated
Last updated
Discovering which are the best k spots from N possible spots.
Selecting the best spot from N possible spots for which the average distance to the clients is minimum. After that, choose the best server. Repeat the process k times. (costly)
Select the k biggest autonomous systems and place a server in the best-connected computer. (costly)
Place nodes in a d-dimensional space, where the distance reflects the latency. Identify k regions with the greatest density and place a server in each. (cheap)
Distinguish the different processes:
Permanent replicates: Process/machine has always a replicate.
Server-initiated replicates: The process can, dynamically, host a replicate by request of the server.
Client-initiated replicates: The process can, dynamically, host a replicate by request of a client (client cache).
Keep the number of accesses by file, and aggregate by server.
The number of accesses drops below D -> erase file.
The number of accesses surpasses R -> replicate file.
The number of accesses is between D and R -> migrate file.
Considering only client-server:
Propaget only the notification/invalidation of an update (caches).
Transfer data from one copy to another (distributed DB): passive replication.
Propagate an update operation to other copies: active replication.
Push updates: initiated by the server, the update is propagated independent of the fact whether the destination has requested it or not.
Pulling updates: initiated by the client, where the client asks for the updates.
It is possible to commutate between the two modes through leases: a contract in which the server promises to push the updates to the client until the contract expires.
Server state
List of replicates in the clients and caches
N/A
Exchanged messages
Update (and possibly a fetch-update if there was an invalidation)
Poll and Update
Client's response time
Immediate (or the time of a fetch-update)
Time of a fetch-update
The time of the lease must be dependent on the behavior of the system:
Age-based leases: From an object that is not altered in a long time, it is not expected to be altered in soon, so the lease time should be long.
Renewal-frequency leases: Clients that frequently ask for an object, should have a larger expiration time.
State leases: The bigger the load on the server, the shorter the periods should be.