基础内容

定义:系统能够在负载增加时,通过增加资源来提升性能

关键概念

  • 水平扩展(Horizontal Scaling):通过增加更多的节点来扩展系统
    • 实现方式
      • 节点增加:通过添加更多的服务器或实例,分担系统的负载
      • 负载分担:使用负载均衡器将流量分发到不同的节点,确保每个节点的负载相对均衡
      • 无状态设计:使得每个节点独立处理请求,不依赖其他节点的状态,从而提高系统的扩展性
    • 实现技术
      • 负载均衡:使用硬件或软件负载均衡器分配流量。工具:Nginx, HAProxy, AWS Elastic Load Balancing
      • 分布式系统:通过分布式架构来扩展系统的处理能力。框架:Apache Kafka、Apache Cassandra、分布式文件系统(如 HDFS)、分布式计算框架(如 Apache Spark)
      • 数据库分片(Sharding):将数据库拆分成多个部分,分别存储在不同的节点上。工具:MongoDB Sharding, MySQL Partitioning
  • 垂直扩展(Vertical Scaling):通过增加单个节点的资源(CPU、内存)来扩展系统
    • 实现方式
      • 资源增加:通过增加现有服务器的CPU、内存、存储等资源来提升系统性能
      • 硬件升级:通过更换更高性能的硬件来提升单个节点的处理能力
      • 单点性能提升:适用于无法拆分为多个节点的单体应用或数据库
    • 实现技术
      • 服务器升级:更换或增加服务器的硬件配置。方式:增加内存、升级 CPU、更换 SSD
      • 虚拟化技术:在虚拟化环境中动态分配更多的资源给单个虚拟机。工具:VMware, KVM, Hyper-V
      • 数据库性能优化:通过优化数据库配置和查询,提高数据库处理能力。方式:索引优化、查询优化、存储过程
  • 弹性扩展(Elastic Scaling):根据负载自动调整资源
    • 实现方式
      • 自动扩展:根据当前系统的负载情况,自动增加或减少计算资源,以应对负载波动
      • 按需分配:在流量高峰期增加资源,在流量低谷期减少资源,以节省成本
      • 实时监控:通过实时监控系统负载,及时做出资源调整决策
    • 实现技术
      • 自动扩展组(Auto Scaling Groups):定义一组实例,自动根据负载调整实例数量。工具:AWS Auto Scaling, Google Cloud Autoscaler
      • 容器编排:使用容器编排工具,根据负载动态调整容器数量。工具:Kubernetes, Docker Swarm
      • 无服务器架构(Serverless Architecture):使用无服务器架构,根据请求量自动分配计算资源。平台:AWS Lambda, Azure Functions, Google Cloud Functions