Geo-Distribution of Actor-Based Services (Preliminary TechReport) - Bernstein, Phil; Burckhardt, Sebastian; Bykov, Sergey; Crooks, Natacha; Faleiro, Jose; Kliot, Gabriel; Kumbhare, Alok; Rahman, Muntasir Raihan; Shah, Vivek; Szekeres, Adriana; Thelin, Jorgen (Microsoft, 2017)
(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.