arrow_back Dashboards as Code
Shatabdi - P2P layer for fast object distribution
Submitted by Ankur Jain (@ankurj11) on Friday, 10 May 2019
Section: Full talk Technical level: Beginner Session type: Discussion
In Flipkart, objects like VM/container images, media, ML models, etc are stored in a homegrown object storage service. To improve download latencies and avoid getting rate limited, teams normally introduce nginx or some other cache to access frequently used objects. This seemingly works for small objects, less dynamic content or when only few clients are downloading concurrently. But for large objects which are required to be downloaded concurrently by hundreds of clients, network bandwidth of cache cluster gets choked, thereby increasing download latency. Cache misses further worsen the total download duration.
Shatabdi solves the above problem by transparently converting any given http resource to a torrent and downloading it on all participating clients in peer-to-peer(p2p) fashion. It can also be extended to support non-http sources of truth as well. Shatabdi daemon abstracts out all the noise and provides a REST API hosted locally to manage downloads/uploads.
Presently, Shatabdi has gone live in Flipkart datacenters and used for distributing VM and container images to motherships. We foresee this platform to be used for a myriad of other scenarios, such as:
Warming up nodes in caching cluster on startup
Distributing pre-computed datasets to multiple instances of a datastore
Distributing ML models that are required by multiple nodes
Some numbers for the interested, these involve no cache apart from a single download from a http source of truth(object storage system in Flipkart):
Disk-based download 512 clients downloading 3.2GB concurrently in ~(2-4 mins) with upload speed capped to 24 mbps
TmpFS-based download 50 clients downloading 3.2GB concurrently in ~15-25seconds with warmed up seeder
This talk will focus on the motivation behind building Shatabdi and a technical deep dive in its implementation. Broadly, we will cover performance tuning of open-source torrent clients, functional flows to ensure maximal bandwidth consumption and always healthy magnets and benchmarking large deployments container based clusters in Flipkart.
For any usecase involving object distribution at scale for large object size and a lot of concurrent clients, this talk should give valuable insights around architecting solutions using p2p.
- Motivation for fast object distribution
- Overview of bittorrent protocol
- Goals for a torrent-based distribution layer
- Design, architecture and functional flows of Shatabdi
- Indexing store and leader election using etcd
- Achieving HA for torrent tracker
- Comparison of open-source torrent clients
- API contracts of daemon binary which abstracts http and p2p downloads
- Performance tuning of QBittorrent client and uncharted territories of libtorrent
- Benchmarking container deployments powered by Shatabdi
Ankur and Yashpal work in Platform-as-a-service team in Flipkart Cloud Platform. We build dev-centric platforms that work at Flipkart scale. We busy ourselves with optimizing systems that are best left alone, defying CAP and not succeeding and sneaking GOT references in sprint planning sessions.