Docker横向扩容(Horizontal Scaling)是指通过增加容器实例的数量(而非提升单个容器的资源)来扩展服务能力,以应对高负载或高可用性需求。这是云计算和微服务架构中的核心概念之一。
container-1
, container-2
...),将流量/任务分配到这些实例上。bash
# 启动多个相同服务的容器
docker run -d --name web1 my-web-app
docker run -d --name web2 my-web-app
缺点:需手动管理,缺乏自动化。
bash
# 创建服务并指定副本数
docker service create --name web --replicas 3 my-web-app
# 动态扩容到5个副本
docker service scale web=5
yaml
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 3 # 指定初始副本数
template:
spec:
containers:
- name: web
image: my-web-app
动态扩容:
bash
kubectl scale deployment web --replicas=5
对比项 | 横向扩容 | 纵向扩容 |
---|---|---|
实现方式 | 增加容器数量 | 提升单个容器的CPU/内存 |
成本 | 更经济(小实例成本低) | 大规格实例价格非线性增长 |
上限 | 理论无限扩展(需负载均衡支持) | 受限于单机硬件/云实例最大规格 |
适用场景 | 无状态服务 | 有状态服务(如数据库) |
Docker横向扩容是通过“多实例+负载均衡”实现弹性扩展的核心手段,尤其适合云原生应用。结合编排工具(如Kubernetes)或云平台自动化策略,可以高效应对业务波动。