We present Quiver, a system that coordinates service proxies placed at the "edge" of the Internet to serve distributed clients accessing a service involving mutable objects. Quiver enables these proxies to perform consistent accesses to shared service objects, by migrating the objects to the proxies performing operations on those objects. These migrations dramatically improve performance when operations involving an object exhibit geographic locality, since migrating this object into the vicinity of proxies hosting these operations will benefit all such operations. Other workloads benefit from Quiver dispersing the compute load across the proxies, and saving the costs of transmitting operation parameters over the wide-area when these are large. Quiver also supports optimizations for single-object reads that do not involve migrating the object. We detail the protocols for implementing object operations and for accommodating the dynamic addition, involuntary disconnection and voluntary departure of Quiver proxies. We also evaluate Quiver through experiments on PlanetLab. Finally, we discuss the use of Quiver in two example settings: an e-commerce application and a distributed network traffic modeling service.
展开▼