When the cluster is bigger and bigger, big table with a lot of tablets will be distributed in almost all the tservers, when client write batch to the big table, it may cache connections to lots of tservers, the scalability may constrained.
If the tablets in one table or partition only in a part of tservers, client will only have to cache connections to the part's tservers. So we propose to add label to tservers, each tserver belongs to a unique label. Client specified label when create table or add partition, the tablets will only be created on the tservers in specified label, if not specified, defalut label will be used.
It will also benefit for:
1 Tserver across data center.
2 Heterogeneous tserver, like different disk, cpu or memory.
3 Physical isolating, especially IO, isolate some tables with others.
4 Gated Launch, upgrade tservers one by one label.
In our product cluster, we have encounter the above issues and need to be resolved.