首页 > 代码库 > Scale horizontally和Scale vertically

Scale horizontally和Scale vertically

Methods of adding more resources for a particular application fall into two broad categories: horizontal and vertical scaling.[5]

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 have dropped and performance continues to increase, low cost "commodity" systems have been used for high performance computing applications such as seismic analysis and biotechnology workloads that could in the past only be handled by supercomputers. Hundreds of small computers may be configured in a cluster to obtain aggregate computing power that often exceeds that of computers based on a single traditional processor. This model was further fueled by the availability of high performance interconnects such as Gigabit Ethernet, InfiniBand and Myrinet. Its growth has also led to demand for software that allows efficient management and maintenance of multiple nodes, as well as hardware such as shared data storage with much higher I/O performance. Size scalability is the maximum number of processors that a system can accommodate.[4]

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 virtualization technology more effectively, as it provides more resources for the hosted set of operating system and application modules to share. Taking advantage of such resources can also be called "scaling up", such as expanding the number of Apache daemon processes currently running. Application scalability refers to the improved performance of running applications on a scaled-up version of the system.[4]

There are tradeoffs between the two models. Larger numbers of computers means increased management complexity, as well as a more complex programming model and issues such as throughput and latency between nodes; also, some applications do not lend themselves to a distributed computing model. In the past, the price difference between the two models has favored "scale up" computing for those applications that fit its paradigm, but recent advances in virtualization technology have blurred that advantage, since deploying a new virtual system over ahypervisor (where possible) is almost always less expensive than actually buying and installing a real one.[dubious ] Configuring an existing idle system has always been less expensive than buying, installing, and configuring a new one, regardless of the model.