水平扩展 是通过添加新的应用程序实例(例如新的服务器或容器)来分配负载。垂直扩展 是增加单个服务器上的资源(增加 CPU、内存、磁盘)。
在选择方法时考虑以下标准:
通过 Kubernetes 实现水平扩展的示例:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 5 # pod 的数量 — 水平扩展 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: myimage:v1
关键特性:
水平扩展总是优于垂直扩展吗?
不是。对于某些任务(例如,对于单体或有状态服务),垂直扩展可能更简单和有效。
进行水平扩展时应用程序不需要任何修改?
不是。应用程序必须是无状态的,支持会话共享(例如,通过外部缓存),并能够正确响应扩展。
数据库的扩展总是进行水平扩展吗?
不是。并非所有数据库管理系统都容易水平扩展。经典的关系型数据库通常进行垂直扩展(scale-up),或使用分片/复制。