{T}

伸缩性架构 学习笔记

一、伸缩性架构概述

1.1 什么是伸缩性架构?

定义:伸缩性架构是一种能够根据业务负载动态调整资源分配的系统设计方法。

核心目标

  • 保证资源合理分配
  • 避免资源浪费
  • 降低运维成本
  • 提高系统弹性

1.2 伸缩场景

code
伸缩场景分类:
├── 扩容场景
│   ├── 高并发流量(双十一、秒杀)
│   ├── 业务快速增长期
│   ├── 突发流量(热点事件)
│   └── 定时任务高峰
│
└── 缩容场景
    ├── 业务低谷期(凌晨)
    ├── 业务量下降期
    ├── 测试环境闲置
    └── 临时资源释放

1.3 伸缩性架构的价值

维度传统架构伸缩性架构改进效果
资源利用固定资源,利用率低动态调整,按需分配节省 30-70% 成本
响应速度手动扩容,耗时数小时自动扩容,秒级响应提升 100 倍
运维成本人工监控,成本高自动化管理,成本低降低 50% 人力
系统稳定性容易过载崩溃自动保护,弹性伸缩可用性提升至 99.9%

二、微服务伸缩架构

2.1 架构组成

code
微服务伸缩架构
├── 1. 基础设施层
│   ├── 云服务器(AWS、阿里云、腾讯云)
│   ├── 数据中心
│   └── 物理服务器集群
│
├── 2. 系统资源层
│   ├── 容器运行时(Docker)
│   ├── 容器编排(Kubernetes)
│   └── 资源调度器
│
└── 3. 网络服务层
    ├── 负载均衡器
    ├── 服务发现
    └── 流量分发

2.2 各层详解

2.2.1 基础设施层

作用:提供底层的计算、存储、网络资源

主要类型

类型优势劣势适用场景
公有云弹性强、按需付费、免运维成本较高、数据安全风险中小企业、创业公司
私有云安全可控、合规性好成本高、运维复杂金融、政府、大型企业
混合云兼顾安全与弹性架构复杂、管理难度大大型企业、跨国公司

云服务商对比

javascript
// 主流云服务商对比
const cloudProviders = {
  // 国内云服务商
  domestic: [
    {
      name: '阿里云',
      features: ['市场份额第一', '产品线丰富', '容器服务成熟'],
      recommend: ''
    },
    {
      name: '腾讯云',
      features: ['价格优惠', '生态完善', '微信生态集成'],
      recommend: ''
    },
    {
      name: '华为云',
      features: ['企业级服务', '安全合规', '混合云方案'],
      recommend: ''
    }
  ],
  
  // 国外云服务商
  international: [
    {
      name: 'AWS',
      features: ['全球领先', '服务最全', '技术最先进'],
      recommend: ''
    },
    {
      name: 'Azure',
      features: ['企业友好', 'Microsoft生态', '混合云强'],
      recommend: ''
    },
    {
      name: 'GCP',
      features: ['Kubernetes原生', 'AI能力强', '价格透明'],
      recommend: ''
    }
  ]
}

2.2.2 系统资源层

作用:实现资源的虚拟化和容器化管理

核心组件

  • Docker:容器运行时
  • Kubernetes:容器编排平台
  • Containerd:容器运行时接口
  • CRI-O:轻量级容器运行时

2.2.3 网络服务层

作用:实现流量的智能分发和服务发现

关键功能

javascript
// 网络服务层功能
const networkServices = {
  // 1. 负载均衡
  loadBalancing: {
    type: ['Layer 4 (TCP)', 'Layer 7 (HTTP)'],
    algorithms: ['轮询', '加权轮询', '最少连接', 'IP 哈希'],
    tools: ['Nginx', 'HAProxy', 'Envoy', 'Traefik']
  },
  
  // 2. 服务发现
  serviceDiscovery: {
    tools: ['Consul', 'Etcd', 'Zookeeper', 'Eureka'],
    mechanism: ['客户端发现', '服务端发现']
  },
  
  // 3. 流量管理
  trafficManagement: {
    features: ['流量分割', '金丝雀发布', '蓝绿部署', '熔断降级'],
    tools: ['Istio', 'Linkerd', 'Envoy']
  }
}

三、容器化技术演进

3.1 技术演进历程

code
部署方式演进:
┌─────────────┐
│ 传统部署     │ → 应用直接运行在物理服务器
│ (Physical)  │   问题:资源隔离差、利用率低
└──────┬──────┘
       ↓
┌─────────────┐
│ 虚拟机部署   │ → 应用运行在虚拟机中
│   (VM)      │   问题:启动慢、资源消耗大
└──────┬──────┘
       ↓
┌─────────────┐
│ 容器化部署   │ → 应用运行在容器中
│ (Container) │   优势:启动快、资源利用率高
└──────┬──────┘
       ↓
┌─────────────┐
│ 容器编排     │ → 容器集群化管理
│  (K8s)      │   优势:自动化运维、弹性伸缩
└─────────────┘