Post

互联网架构完整演进逻辑总结

从单机到云原生,一步步拆解互联网架构迭代全过程

互联网架构完整演进逻辑总结

架构演进全景图

%%{init: {'theme': 'dark', 'themeVariables': { 'fontSize': '18px', 'nodeBorder': '#666', 'lineColor': '#888', 'clusterBkg': '#1a1a2e' }}%%
graph TB
    subgraph 初期阶段
        A["单机架构"]
        B["应用与数据库拆分"]
        C["应用集群 + 负载均衡"]
    end

    subgraph 数据库优化阶段
        D["多级缓存"]
        E["读写分离"]
        F["分库分表"]
    end

    subgraph 安全与检索阶段
        G["CDN + 反向代理"]
        H["搜索引擎 + 非关系型数据库"]
    end

    subgraph 微服务阶段
        I["分布式架构"]
        J["消息队列"]
        K["微服务架构"]
    end

    subgraph 云原生阶段
        L["Docker 容器"]
        M["K8s 编排"]
        N["云原生架构"]
    end

    A --> B --> C --> D --> E --> F --> G --> H --> I --> J --> K --> L --> M --> N

    style A fill:#4CAF50,stroke:#2E7D32,color:#fff,fontWeight:bold
    style B fill:#66BB6A,stroke:#388E3C,color:#fff,fontWeight:bold
    style C fill:#42A5F5,stroke:#1976D2,color:#fff,fontWeight:bold
    style D fill:#26C6DA,stroke:#00838F,color:#fff,fontWeight:bold
    style E fill:#78909C,stroke:#455A64,color:#fff,fontWeight:bold
    style F fill:#FFA726,stroke:#F57C00,color:#fff,fontWeight:bold
    style G fill:#FF7043,stroke:#D84315,color:#fff,fontWeight:bold
    style H fill:#AB47BC,stroke:#7B1FA2,color:#fff,fontWeight:bold
    style I fill:#7E57C2,stroke:#512DA8,color:#fff,fontWeight:bold
    style J fill:#EF5350,stroke:#C62828,color:#fff,fontWeight:bold
    style K fill:#EC407A,stroke:#AD1457,color:#fff,fontWeight:bold
    style L fill:#5C6BC0,stroke:#303F9F,color:#fff,fontWeight:bold
    style M fill:#26A69A,stroke:#00695C,color:#fff,fontWeight:bold
    style N fill:#8D6E63,stroke:#4E342E,color:#fff,fontWeight:bold

一、初期基础架构演进

1. 单机架构

网站初期用户少,把应用程序、数据库部署在同一台服务器,搭建简单、成本最低。

graph TB
    Client[用户浏览器] --> Server[单台服务器]
    subgraph Server
        App[应用程序] --- DB[数据库]
        App --- FS[文件存储]
    end

    style Server fill:#E8F5E9,stroke:#4CAF50
    style App fill:#66BB6A,color:#fff
    style DB fill:#42A5F5,color:#fff
    style FS fill:#FFA726,color:#fff

2. 应用与数据库拆分

用户增多后,单机资源争抢严重,拆分独立应用服务器、数据库服务器,各司其职,提升稳定性。

graph TB
    Client[用户浏览器] --> AppServer[应用服务器]
    AppServer --> DBServer[数据库服务器]
    AppServer --> FileServer[文件服务器]

    style AppServer fill:#66BB6A,color:#fff
    style DBServer fill:#42A5F5,color:#fff
    style FileServer fill:#FFA726,color:#fff

3. 应用集群 + 负载均衡

单台应用服务器扛不住高并发,多台服务器组成集群;通过负载均衡分配流量,实现水平扩展、故障自动屏蔽,保障高可用。

graph TB
    Client[用户浏览器] --> LB[负载均衡 Nginx]
    LB --> App1[应用服务器 1]
    LB --> App2[应用服务器 2]
    LB --> App3[应用服务器 3]
    App1 --> DB[数据库服务器]
    App2 --> DB
    App3 --> DB

    style LB fill:#FF9800,color:#fff
    style App1 fill:#66BB6A,color:#fff
    style App2 fill:#66BB6A,color:#fff
    style App3 fill:#66BB6A,color:#fff
    style DB fill:#42A5F5,color:#fff

二、数据库性能优化阶段

1. 多级缓存

利用内存读写远快于磁盘的特点,搭建浏览器、本地、分布式三层缓存,拦截大部分查询请求,大幅降低数据库压力,提升响应速度。

graph LR
    Client[用户] --> BC[浏览器缓存]
    BC --> LC[本地缓存]
    LC --> RC[分布式缓存 Redis]
    RC --> DB[数据库]

    style BC fill:#E8F5E9,stroke:#4CAF50
    style LC fill:#E3F2FD,stroke:#2196F3
    style RC fill:#FFF3E0,stroke:#FF9800
    style DB fill:#FCE4EC,stroke:#F44336

2. 读写分离

数据库写操作慢且易锁表,拆分主库负责写入、从库负责读取,适配互联网读多写少的特性,规避读写互相阻塞。

graph TB
    App[应用服务器] -->|写操作| Master[(主库 Master)]
    App -->|读操作| Slave1[(从库 Slave 1)]
    App -->|读操作| Slave2[(从库 Slave 2)]
    Master -->|数据同步| Slave1
    Master -->|数据同步| Slave2

    style Master fill:#F44336,color:#fff
    style Slave1 fill:#42A5F5,color:#fff
    style Slave2 fill:#42A5F5,color:#fff
    style App fill:#66BB6A,color:#fff

3. 分库分表

数据量暴增后,通过垂直分库按业务拆分成用户、商品、订单等独立库;通过水平分表把超大表拆分成多张小表,实现海量数据分布式存储。

graph TB
    App[应用服务器] --> Router[分库分表中间件]

    subgraph 垂直分库
        Router --> UserDB[(用户库)]
        Router --> ProductDB[(商品库)]
        Router --> OrderDB[(订单库)]
    end

    subgraph 水平分表
        OrderDB --> Order01[订单表_01]
        OrderDB --> Order02[订单表_02]
        OrderDB --> Order03[订单表_03]
    end

    style Router fill:#FF9800,color:#fff
    style UserDB fill:#42A5F5,color:#fff
    style ProductDB fill:#42A5F5,color:#fff
    style OrderDB fill:#42A5F5,color:#fff

三、网络安全与检索能力升级

1. CDN + 反向代理

CDN 在全国布设节点,就近分发静态资源,提升异地用户访问速度;反向代理隐藏后端真实服务器,防护攻击、做流量与权限校验。

graph TB
    Client[用户] --> CDN[CDN 节点就近分发]
    Client --> Nginx[反向代理 Nginx]
    CDN -->|静态资源| Nginx
    Nginx --> App1[应用服务器 1]
    Nginx --> App2[应用服务器 2]
    Nginx --> App3[应用服务器 3]

    style CDN fill:#FF9800,color:#fff
    style Nginx fill:#9C27B0,color:#fff
    style App1 fill:#66BB6A,color:#fff
    style App2 fill:#66BB6A,color:#fff
    style App3 fill:#66BB6A,color:#fff

2. 搜索引擎 + 非关系型数据库

解决传统数据库模糊查询、全文检索、多维统计慢的问题,适配电商搜索、热搜等复杂业务场景,支持非结构化数据存储与高并发扩展。

graph LR
    App[应用服务器] --> MySQL[(MySQL)]
    App --> ES[Elasticsearch 搜索引擎]
    App --> MongoDB[(MongoDB)]
    App --> Redis[(Redis)]

    style MySQL fill:#42A5F5,color:#fff
    style ES fill:#FF9800,color:#fff
    style MongoDB fill:#4CAF50,color:#fff
    style Redis fill:#F44336,color:#fff

四、从单体到微服务架构

1. 分布式架构

把臃肿的单体应用拆分成独立子系统,单独部署扩容;引入 RPC 实现跨服务远程调用,搭配服务注册与发现中心,统一管理服务地址。

graph TB
    Gateway[API 网关] --> UserSvc[用户服务]
    Gateway --> OrderSvc[订单服务]
    Gateway --> ProductSvc[商品服务]

    UserSvc -->|RPC| OrderSvc
    OrderSvc -->|RPC| ProductSvc

    Registry[注册中心] --- UserSvc
    Registry --- OrderSvc
    Registry --- ProductSvc

    style Gateway fill:#9C27B0,color:#fff
    style Registry fill:#FF9800,color:#fff
    style UserSvc fill:#66BB6A,color:#fff
    style OrderSvc fill:#42A5F5,color:#fff
    style ProductSvc fill:#F44336,color:#fff

2. 消息队列

实现服务解耦,不用同步等待响应,还能削峰填谷,应对流量突增,服务宕机也不丢失消息。

graph LR
    Producer[生产者服务] --> MQ[消息队列 Kafka/RabbitMQ]
    MQ --> Consumer1[消费者服务 A]
    MQ --> Consumer2[消费者服务 B]
    MQ --> Consumer3[消费者服务 C]

    style MQ fill:#FF9800,color:#fff
    style Producer fill:#66BB6A,color:#fff
    style Consumer1 fill:#42A5F5,color:#fff
    style Consumer2 fill:#42A5F5,color:#fff
    style Consumer3 fill:#42A5F5,color:#fff

3. 微服务架构

进一步细拆功能为独立小服务,单一服务只做一件事,可独立开发、上线、扩容,适配不同技术栈,节省资源、降低故障影响范围;配套全链路追踪、限流熔断降级、服务治理,支撑千万甚至亿级流量。

%%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '14px' }}%%
graph TB
    Client[用户] --> Gateway[API 网关]

    Gateway --> UserSvc[用户服务]
    Gateway --> OrderSvc[订单服务]
    Gateway --> ProductSvc[商品服务]
    Gateway --> PaySvc[支付服务]
    Gateway --> NotifySvc[通知服务]

    subgraph 基础设施
        Registry[注册中心]
        Config[配置中心]
        Monitor[链路追踪]
        Sentinel[限流熔断]
    end

    UserSvc --- Registry
    OrderSvc --- Registry
    ProductSvc --- Registry
    PaySvc --- Registry

    style Gateway fill:#9C27B0,color:#fff
    style UserSvc fill:#66BB6A,color:#fff
    style OrderSvc fill:#42A5F5,color:#fff
    style ProductSvc fill:#F44336,color:#fff
    style PaySvc fill:#FF9800,color:#fff
    style NotifySvc fill:#00BCD4,color:#fff
    style Registry fill:#795548,color:#fff
    style Config fill:#795548,color:#fff
    style Monitor fill:#795548,color:#fff
    style Sentinel fill:#795548,color:#fff

五、容器化与云原生时代

1. Docker 容器

将代码、依赖、运行环境打包成镜像,一次打包随处运行,解决开发与生产环境不一致的问题。

graph LR
    subgraph Docker镜像
        Code[代码]
        Deps[依赖库]
        Runtime[运行环境]
    end

    Docker镜像 --> Dev[开发环境]
    Docker镜像 --> Test[测试环境]
    Docker镜像 --> Prod[生产环境]

    style Docker镜像 fill:#7986CB,stroke:#303F9F,color:#fff
    style Code fill:#90CAF9,stroke:#1976D2,color:#333
    style Deps fill:#90CAF9,stroke:#1976D2,color:#333
    style Runtime fill:#90CAF9,stroke:#1976D2,color:#333
    style Dev fill:#66BB6A,stroke:#388E3C,color:#fff
    style Test fill:#FFA726,stroke:#F57C00,color:#fff
    style Prod fill:#EF5350,stroke:#C62828,color:#fff

2. K8s 编排

统一管理大批量容器,实现自动扩缩容、故障自愈,降低人工运维成本。

graph TB
    K8s[Kubernetes 集群] --> Node1[节点 1]
    K8s --> Node2[节点 2]
    K8s --> Node3[节点 3]

    Node1 --> Pod1[Pod: 用户服务 x3]
    Node2 --> Pod2[Pod: 订单服务 x2]
    Node3 --> Pod3[Pod: 商品服务 x4]

    K8s -->|自动扩缩容| HPA[HPA 水平自动伸缩]
    K8s -->|故障自愈| Heal[自动重启/迁移]

    style K8s fill:#326CE5,color:#fff
    style Node1 fill:#66BB6A,color:#fff
    style Node2 fill:#66BB6A,color:#fff
    style Node3 fill:#66BB6A,color:#fff

3. 云原生架构

依托云平台按需申领算力、内存、带宽,用完释放,无需自建机房囤服务器,实现资源弹性伸缩、自动化运维。

graph TB
    subgraph 云平台
        Compute[弹性计算]
        Storage[对象存储]
        Network[虚拟网络]
        DBaaS[数据库即服务]
        MQaaS[消息队列即服务]
    end

    App[微服务应用] --> Compute
    App --> Storage
    App --> Network
    App --> DBaaS
    App --> MQaaS

    Monitor[云监控] --> Compute
    Monitor --> Storage

    style 云平台 fill:#E3F2FD,stroke:#2196F3
    style Compute fill:#66BB6A,color:#fff
    style Storage fill:#42A5F5,color:#fff
    style Network fill:#FF9800,color:#fff
    style DBaaS fill:#F44336,color:#fff
    style MQaaS fill:#9C27B0,color:#fff
    style Monitor fill:#795548,color:#fff

核心架构思维

  1. 没有万能架构,贴合业务阶段才最好,初创无需盲目上微服务;
  2. 架构演进核心逻辑:用空间换时间、用复杂度换性能;
  3. 所有架构设计,始终围绕高性能、高可用、可伸缩、可扩展、高安全五大目标。
This post is licensed under CC BY 4.0 by the author.