Vertical Scalability
Vertical scaling, referred to as “scale up”, means the process of adding more power (CPU, RAM, etc.) to your servers. Horizontal scaling, referred to as “scale-out”, allows you to scale by adding more servers into your pool of resources.
When traffic is low, vertical scaling is a great option, and the simplicity of vertical scaling is its main advantage. Unfortunately, it comes with serious limitations.
- Vertical scaling has a hard limit. It is impossible to add unlimited CPU and memory to a single server.
- Vertical scaling does not have failover and redundancy. If one server goes down, the website/app goes down with it completely.
Horizontal Scalability
Horizontal scaling is more desirable for large scale applications due to the limitations of vertical scaling.
Scale Cube
The Scale Cube (sometimes known as the “AKF Scale Cube” or “AKF Cube”) is comprised of 3 axes:
- X-Axis: Horizontal Duplication and Cloning of services and data
- Y-Axis: Functional Decomposition and Segmentation - Microservices (or micro-services)
- Z-Axis: Service and Data Partitioning along Customer Boundaries - Shards/Pods
扩展系统的八种策略
- 无状态服务
- 水平扩展(Horizontal Scalability)
- 负载均衡
- 自动扩展
- 缓存
- 数据库复制
- 异步处理
Reference
- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
- System Design Interview – An insider’s guide
- https://akfpartners.com/growth-blog/splitting-applications-or-services-for-scale
- https://akfpartners.com/techblog/2008/05/08/splitting-applications-or-services-for-scale/
- https://microservices.io/articles/scalecube.html
FEATURED TAGS
algorithm
algorithmproblem
architecturalpattern
architecture
aws
c#
cachesystem
codis
compile
concurrentcontrol
database
dataformat
datastructure
debug
design
designpattern
distributedsystem
django
docker
domain
engineering
freebsd
git
golang
grafana
hackintosh
hadoop
hardware
hexo
http
hugo
ios
iot
java
javaee
javascript
kafka
kubernetes
linux
linuxcommand
linuxio
lock
macos
markdown
microservices
mysql
nas
network
networkprogramming
nginx
node.js
npm
oop
openwrt
operatingsystem
padavan
performance
programming
prometheus
protobuf
python
redis
router
security
shell
software testing
spring
sql
systemdesign
truenas
ubuntu
vmware
vpn
windows
wmware
wordpress
xml
zookeeper