架构扩展是选择能够使系统在不损失性能和可靠性的情况下处理不断增加的负载的方法。
扩展有两种类型:
关键策略包括:
使用Kubernetes的示例(水平扩展):
apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: replicas: 5 template: spec: containers: - name: myapp image: myapp:latest
关键特性:
是否可以像无状态服务一样轻松地扩展有状态服务?
不可以,有状态服务(例如,数据库)需要复杂的复制和一致性机制。无状态服务可以很容易地复制和部署多个实例。
单一数据库在垂直扩展时能轻松处理负载吗?
仅限于某个程度。在此之后,会出现“瓶颈”,解决方案是通过分片或迁移到分布式数据库进行水平扩展。
是否能有效扩展单体应用程序?
可能可行,但会有很大限制——单体应用程序通常在水平扩展时表现不佳,随着负载变化,增加和维护副本的难度更大。