Geo-Distribution of Actor-Based Services (Preliminary TechReport)
- Phil Bernstein ,
- Sebastian Burckhardt ,
- Sergey Bykov ,
- Natacha Crooks ,
- Jose Faleiro ,
- Gabriel Kliot ,
- Alok Kumbhare ,
- Muntasir Raihan Rahman ,
- Vivek Shah ,
- Adriana Szekeres ,
- Jorgen Thelin
MSR-TR-2017-3 |
Published by Microsoft
(This technical report is now redundant, see our conference publication)
Many service applications use actors as a programming model for the middle tier, to simplify synchronization, fault-tolerance, and scalability. However, efficient operation of such actors in multiple, geographically distant datacenters is challenging, due to the very high communication latency.
We present Geo, an open-source geo-distributed actor system that improves performance by caching actor states in one or more datacenters, yet guarantees the existence of a single latest version by virtue of a distributed cache coherence protocol. Geo supports both volatile and persistent actors, and supports updates with a choice of linearizable and eventual consistency. Our evaluation on several workloads shows substantial performance benefits, and confirms the advantage of supporting both replicated and single-instance coherence protocols as configuration choices. For example, replication can provide fast, always-available reads and updates globally, while batching of linearizable storage accesses at a single location can boost the throughput of an order processing workload by 7x.