Posts

Showing posts with the label cloud

Cloud Native MySQL Sharding with Vitess and Kubernetes

Image
Cross-posted on Google Cloud Platform Blog.

Cloud native technologies like Kubernetes help you compose scalable services out of a sea of small logical units. In our last post, we introduced Vitess (an open-source project that powers YouTube's main database) as a way of turning MySQL into a scalable Kubernetes application. Our goal was to make scaling your persistent datastore in Kubernetes as simple as scaling stateless app servers - just run a single command to launch more pods. We've made a lot of progress since then (pushing over 2,500 new commits) and we're nearing the first stable version of the new, cloud native Vitess.
Vitess 2.0 In preparation for the stable release, we've begun to publish alpha builds of Vitess v2.0.0. Some highlights of what's new since our earlier post include:
Using the final Kubernetes 1.0 API. Official Vitess client libraries in Java, Python, PHP, and Go. Java and Go clients use the new HTTP/2-based gRPC framework. Can now run on top of MySQ…

Scaling MySQL in the cloud with Vitess and Kubernetes

Cross-posted on Google Cloud Platform Blog.

Your new website is growing exponentially. After a few rounds of high fives, you start scaling to meet this unexpected demand. While you can always add more front-end servers, eventually your database becomes a bottleneck, which leads you to . . .

Add more replicas for better read throughput and data durabilityIntroduce sharding to scale your write throughput and let your data set grow beyond a single machineCreate separate replica pools for batch jobs and backups, to isolate them from live trafficClone the whole deployment into multiple datacenters worldwide for disaster recovery and lower latency
At YouTube, we went on that journey as we scaled our MySQL deployment, which today handles the metadata for billions of daily video views and 300 hours of new video uploads per minute. To do this, we developed the Vitessplatform, which addresses scaling challenges while hiding the associated complexity from the application layer.