Simply put, increase qps and throughput by adding clusters
It's actually more complicated than this
First we need to know the bottleneck of the system
What we know about the system topology
For rest interface
The system facilities are:
dns
nginx
tomcat
db/soa
First we can increase qps and throughput by increasing the cluster
Secondly, considering the problem of load balancing, we can use other facilities to ensure the load balancing of cluster nodes and further improve the system qps
So there is nginx cluster + load balancing
tomcat cluster + load balancing
When it comes to the db/soa layer, it can also be solved by adding clusters + load balancing.
We can also add caches at each layer to deal with hot data
However, on the other hand, it can be solved by system splitting, service splitting, and adding clusters and load balancing separately for the bottleneck system.
Similarly, db can also be divided into databases and tables.
Because a single table is very slow when there are more than 10 million pieces of data, library splitting is required at this time, so there are vertical splits and horizontal splits.
Asynchronous, you can asynchronously call different calls, use mq, such as sending text messages, sending emails, etc.
In summary:
Cluster + load balancing
increase cache
system split
Sub-library and sub-table
vertical split + horizontal split
Asynchronous + MQ