Poor Man's Social Network: Consistently Trade Freshness For Scalability

Abstract

Typical social networking functionalities such as feed following are known to be hard to scale. Different from the popular approach that sacrifices consistency for scalability, in this paper we describe, implement, and evaluate a method that can simultaneously achieve scalability and consistency in feed following applications built on shared-nothing distributed systems. Timing and client-side processing are the keys to this approach. Assuming global time is available at all the clients and servers, the distributed servers publish a pre-agreed upon schedule based on which the continuously committed updates are periodically released for read. This opens up opportunities for caching and client-side processing, and leads to scalability improvements. This approach trades freshness for scalability.

Following this approach, we build a twitter-style feed following application and evaluate it on a following network with about 200,000 users under synthetic workloads. The resulting system exhibits linear scalability in our experi-ment. With 6 low-end cloud instances costing a total of no more than $1.2 per hour, we recorded a peak timeline query rate at about 10 million requests per day, under a fixed update rate of 1.6 million new tweets per day. The maximum staleness of the responses is 5 seconds. The performance achieved sufficiently verifies the feasibility of this approach, and provides an alternative to build small to medium size social networking applications on the cheap.

Description
Keywords
consistency, scalability, social network, feed following, distributed systems, database, 1-copy serialization, eventual consistency
Citation
Xie, Z., Liu, J., Van de Sompel, H., van Reenen, J., and Jordan, R. 2011. Poor Man's Social Network: Consistently Trade Freshness For Scalability. Proceedings of the 2012 USENIX conference on Web application development (Boston, MA, USA, 2012).