【Distributed System】Scalability

Posted by 西维蜀黍 on 2023-09-28, Last Modified on 2023-09-29

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