All 3 have few common things but they are specialized in different areas. To summarize;
- XtraDB is just an improved version of innodb storage engine. Xtradb Cluster(or Percona Cluster) is a HA solution from Percona, in which all nodes have same consistent data by applying synchronus replication among them. It is meant for read-scalability and read-heavy workloads. You can simply add new nodes/slaves and distribute read load. Since all nodes have same data, change have to be written to all of them which makes it not useful if you want to scale your writes.
-
Mysql(NDB) Cluster is an enterprise solution for both read-write scaling and high availilibity. It uses in-memory data storage to allow very fast queries and automatically shard tables across different nodes. However, I dont know much about how sharding is done. Take a look at here
https://www.mysql.com/products/cluster/.
- Vitess is used for automatically sharding data across nodes, so it can scale indefinitely, and you define the criteria for sharding/distributing data across nodes. This makes vitess the best choice of all for write-scaling and write-heavy workloads. I think, you could also combine vitess with pxc cluster for high availibility, however it should be a bit complicated.