Uber open sources highly scalable P2P Docker registry
Uber is more than just hitching a ride from place to place. Their internal peer-to-peer Docker registry, Kraken has been open sourced to the public. Kraken is impressive with its high scalability and pluggable storage options. See what Uber Engineering has been working on.
Besides their ridesharing app, Uber occasionally contributes to open source on GitHub. Previously open sourced projects include an orchestration engine, a robotics visualization framework, and a visual exploration data set. Uber Engineering recently open sourced their peer-to-peer Docker registry.
Kraken is used internally at Uber for managing and distributing Docker images. Now you too can get your hands (or tentacles) on it!
Not to be confused with the cryptocurrency exchange of the same name, Kraken is a powerful Docker registry. Its namesake draws to mind enormous sea creatures (and my favorite Westerosi House) and that’s not a coincidence. Those eight arms are not just for show, it is all about large scale clusters. This Docker registry is capable of distributing TBs of data in seconds.
From GitHub: “Kraken is a P2P-powered docker registry that focuses on scalability and availability. It is designed for docker image management, replication and distribution in a hybrid cloud environment. With pluggable backend support, Kraken can easily integrate into existing docker registry setups as the distribution layer.”
Uber obviously requires this amount of power, since the ridesharing app is enormous and Uber Engineering is constantly at work. Does the average user need Kraken? Maybe not. However, let’s take an awe-inspiring look at the mythical beast itself.
According to the Uber Engineering blog, the busiest Kraken cluster “distributes more than 1 million blobs per day, with 100,000 of the daily distributions totaling to 1 GB or more in size. Additionally, at peak production, Kraken enables 20,000 100MB to 1GB blobs to be distributed in under 30 seconds”.
It first deployed internally in early 2018, so the project has had roughly a year to work out its issues and ensure stability.
A boatload of features
Here are some of the features listed on GitHub to whet your appetite:
- Highly scalable. Kraken is capable of distributing docker images at > 50% of max download speed limit on every host. Cluster size and image size do not have significant impact on download speed.
- Supports at least 8k hosts per cluster.
- Supports arbitrarily large blobs/layers. We normally limit max size to 20G for best performance.
- Highly available. No component is a single point of failure.
- Secure. Support uploader authentication and data integrity protection through TLS.
- Pluggable storage options. Instead of managing data, Kraken plugs into reliable blob storage options, like S3, HDFS or another registry. The storage interface is simple and new options are easy to add.
- Lossless cross cluster replication. Kraken supports rule-based async replication between clusters.
- Minimal dependencies. Other than pluggable storage, Kraken only has an optional dependency on DNS.
All hands on deck
The GitHub repo lists some of the project’s current limitations and compares it to similar creations such as Dragonfly from Alibaba and BitTorrent. Make your choice depending on your own needs and preferences.
As for it being P2P, Kraken actually was initially build with BitTorrent. Uber writes that there is potential for future BitTorrent compatibility again as they continue to re-examine Kraken’s protocol. Do you think BitTorrent is a better option than P2P? Depending on your use case and environment, BitTorrent may be a better option than peer-to-peer.
Do you want to jump on board? The configuration doc explains some usage examples and how to configure peer to peer downloads. If you’d like to help the project grow, see the contributing guide for details.
We love it when big names contribute to open source and help out the little guys. Uber Engineering has been coming out with some fantastic (and oftentimes, experimental) projects. See what other open source goodies and news Uber Engineering offers.