一、什么是综合架构¶
原始笔记对综合架构的定义很直接:一般网站通用的整体结构,就是综合架构。
它不是某一家公司的唯一标准答案,而是一种参考模型。不同公司会根据业务特点、团队规模和技术路线做出不同调整,但大方向通常都离不开这些核心组件:
- 域名解析
- 流量接入
- 防护
- 负载均衡
- Web 与应用服务
- 缓存
- 数据库
- 存储
- 监控与运维体系
二、第 2 阶段学习综合架构时有哪些新要求¶
原始笔记把第 1 阶段和第 2 阶段做了一个对比:
2.1 第 1 阶段更偏基础操作¶
第 1 阶段的重点是:
- 运维基操
- 常见故障及提示
- 基础知识点
2.2 第 2 阶段更强调结构化理解¶
第 2 阶段则提出了新的要求:
- 掌握整个网站集群架构与结构
- 遇到故障时先尝试自己排查,再总结过程
- 持续完善“用户访问网站全过程”的理解
- 对服务重点掌握作用和排查流程,配置细节做好记录
这意味着从这一阶段开始,学习重点不再只是“会敲命令”,而是要开始理解:
- 这些服务为什么存在
- 它们之间怎么协作
- 出问题时该从哪一层开始查
三、从三个角度看网站架构¶
原始笔记明确提出:理解网站架构时,要分别从开发、用户、运维三个角度去看。
3.1 开发角度¶
开发更关注的是:
- 代码怎么写
- 代码放在哪里
- 代码如何交付给运维
- 代码如何部署和测试
对应的核心问题是:业务代码如何进入服务器并稳定运行。
3.2 用户角度¶
用户关心的是:
- 打开 App 或浏览器后,请求怎么到达网站
- 中间经过了哪些服务
- 页面为什么能正常返回
这也是第 2 阶段综合架构的核心学习视角之一,因为它直接关系到用户访问流程、链路排障和服务定位。
3.3 运维角度¶
运维关注的是:
- 如何快速部署环境
- 如何做自动化维护
- 如何监控、审计和记录日志
- 出现故障后如何快速恢复
所以运维看到的架构,不只是“服务拓扑图”,还包括自动化、监控、安全、日志和权限控制体系。
四、开发侧常见技术栈¶
开发侧的技术栈,主要围绕代码存放、集成发布、代码质量和依赖仓库展开。
4.1 代码托管¶
常见服务包括:
GitLabGogsGitHubGitee
它们解决的是代码版本管理和团队协作问题。
4.2 持续集成与发布¶
常见工具:
Jenkins
它常用于构建、测试、打包和发布,是 CI/CD 流程里的高频组件。
4.3 代码检查¶
常见工具:
SonarQube
它主要用于代码质量检查和静态分析。
4.4 私服与软件包仓库¶
常见工具:
Nexus
在 Java 或多语言项目中,它常被用来管理制品包和依赖仓库。
五、用户访问链路中的常见服务¶
从用户角度看,一个网站请求通常会经过很多层服务。原始笔记把它们整理成了一张非常典型的技术栈表。
5.1 DNS 解析¶
常见服务包括:
- 阿里云 DNS 解析
Bind9DnsmasqCoreDNS
作用是把域名解析成目标 IP。
5.2 CDN 缓存¶
常见形态包括:
- 各大云厂商 CDN
- 阿里云 CDN
- 蓝汛
- 七牛 CDN
它的核心目标是:
- 加速静态资源分发
- 降低源站压力
- 提升用户访问体验
5.3 防火墙¶
防火墙既可能是硬件,也可能是软件或云平台能力:
- 硬件:深信服、奇安信、华为
- 软件:
firewalld、iptables - 公有云:安全组、态势感知、云安全中心
5.4 负载均衡¶
常见方案分成硬件和软件两类:
- 硬件:
F5 - 软件:
nginx、tengine、OpenResty、HAProxy
负载均衡的核心职责是把流量分发给后端多个业务节点。
5.5 Web 与业务服务器¶
原始笔记列出了几种经典组合:
LNMP(PHP):Linux + Nginx + MySQL + PHPLNMT(Java):Linux + Nginx + MySQL + TomcatLNMP(Python):Linux + Nginx + MySQL + PythonLNMG(Golang):Linux + Nginx + MySQL + Golang
可以看到,不同语言栈虽然业务实现不同,但接入模式常常类似。
5.6 缓存与消息组件¶
常见服务包括:
RedisKafkaRabbitMQRocketMQ
这些组件通常承担缓存、削峰填谷、异步解耦和消息传递等职责。
5.7 数据库服务¶
常见数据库包括:
MySQLOracleMariaDB
笔记里也提到了一些国产或分布式方向的数据库:
TiDBopenGaussOceanBase
5.8 存储、同步与备份¶
这一层也非常关键:
- 存储:硬件存储、
NFS、分布式存储、对象存储 - 对象存储:阿里云
OSS、七牛、腾讯COS - 实时同步:
Sersync、Lsyncd - 备份:定时任务、脚本、打包压缩、
Rsync
这些内容决定了数据放在哪里、怎么同步、怎么备份和怎么恢复。
六、运维侧常见技术栈¶
运维侧关注的不只是“业务能跑”,还包括“怎么管、怎么查、怎么防、怎么审”。
6.1 远程接入与运维入口¶
VPNOpenVPN
用于给运维人员提供受控的远程接入能力。
6.2 堡垒机¶
常见方案包括:
- 开源:
Teleport、JumpServer - 商业:硬件或软件堡垒机
堡垒机承担统一登录、审计和权限管控的重要角色。
6.3 批量管理¶
常见工具有:
AnsibleSaltStackPuppetChefFabric
它们主要解决批量配置、批量执行和自动化交付问题。
6.4 监控平台¶
常见工具:
ZabbixGrafanaPrometheus
它们帮助运维观察机器状态、服务健康度和业务指标。
6.5 日志收集平台¶
原始笔记提到的是 Elastic Stack 体系,例如:
ElasticsearchFilebeatLogstashKibana
常见缩写还会看到:
ELKEFK
这类平台用于集中收集、检索和分析日志。
6.6 审计与安全¶
审计方向:
- SQL 审计
YearningArchery- 堡垒机行为审计
安全方向:
- 商业:
AppScan、Nessus - 开源:
ClamAV - 以及常见的
OWASP安全理念与工具体系
七、综合架构学习时该如何建立自己的知识图谱¶
面对这么多服务,不建议一开始就死记硬背,而是先按职责去分类:
- 流量入口:DNS、CDN、防火墙、负载均衡
- 业务处理:Web、应用服务、缓存、消息队列
- 数据层:数据库、存储、同步、备份
- 运维保障:VPN、堡垒机、批量管理、监控、日志、安全、审计
这样后续无论学到哪个服务,都能知道它处在哪一层、解决什么问题、和谁协作。
八、小结¶
综合架构的学习,核心不是一次性记住所有产品名,而是建立完整的结构化视角:
- 从开发角度看代码如何交付和运行
- 从用户角度看请求如何流转
- 从运维角度看环境如何部署、维护、监控和审计
当这三条线真正串起来之后,后面的 Nginx、MySQL、Redis、Ansible、监控和日志平台学习,都会更容易放到正确的位置上。