摘自wikipedia
Scale horizontally vs. vertically
Methods of adding more resources for a particular application fall into two broad categories:
Scale horizontally (scale out)
To scale horizontally (or scale out) means to add more nodes to a system, such as adding a new computer to a distributed software application. An example might be scaling out from one Web server system to three.
As computer prices drop and performance continues to increase, low cost "" systems can be used for high performance computing applications such as seismic analysis and biotechnology workloads that could in the past only be handled by . Hundreds of small computers may be configured in a to obtain aggregate computing power that often exceeds that of single traditional processor based scientific computers. This model has further been fueled by the availability of high performance interconnects such as and technologies. It has also led to demand for features such as remote maintenance and batch processing management previously not available for "commodity" systems.
The scale-out model has created an increased demand for shared data storage with very high I/O performance, especially where processing of large amounts of data is required, such as in . This has fueled the development of new storage technologies such as .
Scale out solutions for database servers generally seek to move toward a going down the path blazed by of .
Scale vertically (scale up)
To scale vertically (or scale up) means to add resources to a single node in a system, typically involving the addition of CPUs or memory to a single computer. Such vertical scaling of existing systems also enables them to use technology more effectively, as it provides more resources for the hosted set of and modules to share.
Taking advantage of such resources can also be called "scaling up", such as expanding the number of daemon processes currently running.