@techreport{bernstein2017geo-distribution, author = {Bernstein, Phil and Burckhardt, Sebastian and Bykov, Sergey and Crooks, Natacha and Faleiro, Jose and Kliot, Gabriel and Kumbhare, Alok and Rahman, Muntasir Raihan and Shah, Vivek and Szekeres, Adriana and Thelin, Jorgen}, title = {Geo-Distribution of Actor-Based Services (Preliminary TechReport)}, institution = {Microsoft}, year = {2017}, month = {January}, abstract = {(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.}, url = {https://www.microsoft.com/en-us/research/publication/geo-distribution-actor-based-services/}, number = {MSR-TR-2017-3}, }