In this blog post series, we will discuss an overview of Vitess technology. Vitess is a database clustering solution for horizontal scaling of data sets currently suitable to 250Gb – 300Gb in sizes*. It’s a proven technology used by several web-scale companies including YouTube. PlanetScale is the company behind developing and supporting this open-sourced project.
Introduction to Vitess
Here’s high-level Vitess architecture visually explained.
Basic Vitess Components
There are two main components of Vitess. One of them is vtgate which works as a query router where vttablet is a proxy to MySQL to serve the data.
- vtgate: A query router responsible for figuring which query to point vttablets. They are simply stateless application servers. It hosts a schema called vschema to keep repository for vttablet(s) metadata.
- vttablet: Is responsible for acting as proxy to MySQL instance. Each vttablet has one associated MySQL instance which also can serve different purposes such as taking write traffic, connection pooling, backups, etc.
- vtctld: Web-based monitoring service that allows seeing an overview of servers and their states
Check out Vitess Concepts for further reading.
Vitess in CNCF (Cloud Native Computing Foundation)
Cloud native technologies help modern organizations build topologies that are scalable and robust. While these environments vary from the public, private, and hybrid cloud they have one common goal to build resilient yet manageable and observable systems. Most commonly they are built around containers, microservices along with immutable infrastructures.
CNCF categorizes these technologies in three stages. You may see the rest of the projects at CNCF Cloud Native Interactive Landscape.
Project Services and Maturity Levels
Image Credit: https://www.cncf.io/projects/
As of this writing, Vitess is the only MySQL-related project that has reached the Graduated level of CNCF. It’s the eighth project following Kubernetes, Prometheus, Envoy, CoreDNS, Containerd, Fluentd, and Jaeger. Vitess is currently reaching its 4.0 GA release. This is an important development, because Kubernetes and Native Cloud grows rapidly, and the MySQL ecosystem needed such an open-source project to be a part of this expansion.
Vitess and Kubernetes Overview
Vitess scales MySQL via distributed sharding. Since it’s nearly impossible to run stateful databases without orchestration in Kubernetes, Vitess solves this problem by consolidating MySQL’s replication features. By sharding across multiple nodes (containers), Vitess distributes data across and allows applications to operate among them. This method protects the single point of failure of traditional unsharded database topologies where a single bad query can hose down the entire database.
Part II of this series: Setup and Deploy Vitess on Kubernetes (Minikube) for MySQL – Part II
Part III of this series: Setup and Deploy Vitess on Kubernetes (Minikube) for MySQL – Part III
* PlanetScale’s CTO Sugu Sougoumarane quotes this from field experience.