一、什么是综合架构

原始笔记对综合架构的定义很直接:一般网站通用的整体结构,就是综合架构。

它不是某一家公司的唯一标准答案,而是一种参考模型。不同公司会根据业务特点、团队规模和技术路线做出不同调整,但大方向通常都离不开这些核心组件:

  • 域名解析
  • 流量接入
  • 防护
  • 负载均衡
  • Web 与应用服务
  • 缓存
  • 数据库
  • 存储
  • 监控与运维体系

二、第 2 阶段学习综合架构时有哪些新要求

原始笔记把第 1 阶段和第 2 阶段做了一个对比:

2.1 第 1 阶段更偏基础操作

第 1 阶段的重点是:

  • 运维基操
  • 常见故障及提示
  • 基础知识点

2.2 第 2 阶段更强调结构化理解

第 2 阶段则提出了新的要求:

  • 掌握整个网站集群架构与结构
  • 遇到故障时先尝试自己排查,再总结过程
  • 持续完善“用户访问网站全过程”的理解
  • 对服务重点掌握作用和排查流程,配置细节做好记录

这意味着从这一阶段开始,学习重点不再只是“会敲命令”,而是要开始理解:

  • 这些服务为什么存在
  • 它们之间怎么协作
  • 出问题时该从哪一层开始查

三、从三个角度看网站架构

原始笔记明确提出:理解网站架构时,要分别从开发、用户、运维三个角度去看。

3.1 开发角度

开发更关注的是:

  • 代码怎么写
  • 代码放在哪里
  • 代码如何交付给运维
  • 代码如何部署和测试

对应的核心问题是:业务代码如何进入服务器并稳定运行。

3.2 用户角度

用户关心的是:

  • 打开 App 或浏览器后,请求怎么到达网站
  • 中间经过了哪些服务
  • 页面为什么能正常返回

这也是第 2 阶段综合架构的核心学习视角之一,因为它直接关系到用户访问流程、链路排障和服务定位。

3.3 运维角度

运维关注的是:

  • 如何快速部署环境
  • 如何做自动化维护
  • 如何监控、审计和记录日志
  • 出现故障后如何快速恢复

所以运维看到的架构,不只是“服务拓扑图”,还包括自动化、监控、安全、日志和权限控制体系。

四、开发侧常见技术栈

开发侧的技术栈,主要围绕代码存放、集成发布、代码质量和依赖仓库展开。

4.1 代码托管

常见服务包括:

  • GitLab
  • Gogs
  • GitHub
  • Gitee

它们解决的是代码版本管理和团队协作问题。

4.2 持续集成与发布

常见工具:

  • Jenkins

它常用于构建、测试、打包和发布,是 CI/CD 流程里的高频组件。

4.3 代码检查

常见工具:

  • SonarQube

它主要用于代码质量检查和静态分析。

4.4 私服与软件包仓库

常见工具:

  • Nexus

在 Java 或多语言项目中,它常被用来管理制品包和依赖仓库。

五、用户访问链路中的常见服务

从用户角度看,一个网站请求通常会经过很多层服务。原始笔记把它们整理成了一张非常典型的技术栈表。

5.1 DNS 解析

常见服务包括:

  • 阿里云 DNS 解析
  • Bind9
  • Dnsmasq
  • CoreDNS

作用是把域名解析成目标 IP。

5.2 CDN 缓存

常见形态包括:

  • 各大云厂商 CDN
  • 阿里云 CDN
  • 蓝汛
  • 七牛 CDN

它的核心目标是:

  • 加速静态资源分发
  • 降低源站压力
  • 提升用户访问体验

5.3 防火墙

防火墙既可能是硬件,也可能是软件或云平台能力:

  • 硬件:深信服、奇安信、华为
  • 软件:firewalldiptables
  • 公有云:安全组、态势感知、云安全中心

5.4 负载均衡

常见方案分成硬件和软件两类:

  • 硬件:F5
  • 软件:nginxtengineOpenRestyHAProxy

负载均衡的核心职责是把流量分发给后端多个业务节点。

5.5 Web 与业务服务器

原始笔记列出了几种经典组合:

  • LNMP(PHP):Linux + Nginx + MySQL + PHP
  • LNMT(Java):Linux + Nginx + MySQL + Tomcat
  • LNMP(Python):Linux + Nginx + MySQL + Python
  • LNMG(Golang):Linux + Nginx + MySQL + Golang

可以看到,不同语言栈虽然业务实现不同,但接入模式常常类似。

5.6 缓存与消息组件

常见服务包括:

  • Redis
  • Kafka
  • RabbitMQ
  • RocketMQ

这些组件通常承担缓存、削峰填谷、异步解耦和消息传递等职责。

5.7 数据库服务

常见数据库包括:

  • MySQL
  • Oracle
  • MariaDB

笔记里也提到了一些国产或分布式方向的数据库:

  • TiDB
  • openGauss
  • OceanBase

5.8 存储、同步与备份

这一层也非常关键:

  • 存储:硬件存储、NFS、分布式存储、对象存储
  • 对象存储:阿里云 OSS、七牛、腾讯 COS
  • 实时同步:SersyncLsyncd
  • 备份:定时任务、脚本、打包压缩、Rsync

这些内容决定了数据放在哪里、怎么同步、怎么备份和怎么恢复。

六、运维侧常见技术栈

运维侧关注的不只是“业务能跑”,还包括“怎么管、怎么查、怎么防、怎么审”。

6.1 远程接入与运维入口

  • VPN
  • OpenVPN

用于给运维人员提供受控的远程接入能力。

6.2 堡垒机

常见方案包括:

  • 开源:TeleportJumpServer
  • 商业:硬件或软件堡垒机

堡垒机承担统一登录、审计和权限管控的重要角色。

6.3 批量管理

常见工具有:

  • Ansible
  • SaltStack
  • Puppet
  • Chef
  • Fabric

它们主要解决批量配置、批量执行和自动化交付问题。

6.4 监控平台

常见工具:

  • Zabbix
  • Grafana
  • Prometheus

它们帮助运维观察机器状态、服务健康度和业务指标。

6.5 日志收集平台

原始笔记提到的是 Elastic Stack 体系,例如:

  • Elasticsearch
  • Filebeat
  • Logstash
  • Kibana

常见缩写还会看到:

  • ELK
  • EFK

这类平台用于集中收集、检索和分析日志。

6.6 审计与安全

审计方向:

  • SQL 审计
  • Yearning
  • Archery
  • 堡垒机行为审计

安全方向:

  • 商业:AppScanNessus
  • 开源:ClamAV
  • 以及常见的 OWASP 安全理念与工具体系

七、综合架构学习时该如何建立自己的知识图谱

面对这么多服务,不建议一开始就死记硬背,而是先按职责去分类:

  • 流量入口:DNS、CDN、防火墙、负载均衡
  • 业务处理:Web、应用服务、缓存、消息队列
  • 数据层:数据库、存储、同步、备份
  • 运维保障:VPN、堡垒机、批量管理、监控、日志、安全、审计

这样后续无论学到哪个服务,都能知道它处在哪一层、解决什么问题、和谁协作。

八、小结

综合架构的学习,核心不是一次性记住所有产品名,而是建立完整的结构化视角:

  • 从开发角度看代码如何交付和运行
  • 从用户角度看请求如何流转
  • 从运维角度看环境如何部署、维护、监控和审计

当这三条线真正串起来之后,后面的 Nginx、MySQL、Redis、Ansible、监控和日志平台学习,都会更容易放到正确的位置上。