基础架构技能树
进入基础架构行业工作四年了,每次面试难免都要回忆基础知识。
但 SRE、DevOps、IT 各个层级的内容相互覆盖,为了方便整理,也可以给新入行的同学查缺补漏,构建了下面的知识树。
Part A.基础知识
A01.计算机网络
基础概念
- 五层与七层网络模型
网络协议
- TCP 与 UDP
- TCP 中的握手、离手概念、滑动窗口
- HTTP 与 HTTPS
网络诊断
- Linux 网络诊断命令
- Wireshark 抓包分析
- Firewall 设置
- 设置和关闭 SELinux
网络服务
- DNS 查询原理
- SELinux
- 四层、七层负载均衡
A02.操作系统 / Linux
进程管理
- 进程的7个状态、进程调度、进程间通信模型
- 僵尸进程与孤儿进程的区别
- 查看与关闭 daemon 守护进程
内存管理
- 什么是虚拟内存 SWAP
- Linux 中的内存分页与交换技术
- 内存映射技术 mmap、缓冲与缓存
文件管理
- FHS|类 Unix 系统标准文件系统结构
- 什么是 inode 和 block
- 文件权限与文件类型
- 挂载机制
容器原理
- 容器的基本原理
- namespace 隔离机制
- cgroups 资源限制
- 容器运行时原理
性能调优
- 系统调优参数(sysctl)
- 内存回收机制
- I/O调度算法
安全功能
- 什么是 SELinux 和 AppArmor
- 如何调取审计日志(auditd)
- 系统加固原则
A03.计算机组成原理
系统引导
- 什么是 BIOS/UEFI、Bootloader、Kernel、Init、Runlevel、systemd初始化系统
- 内核机制:系统调用(syscall)、中断处理、模块加载与卸载
CPU & GPU
- 如何计算 CPU 时钟频率
- CPU 和 GPU区别
Memory
Disk
- RAID 有哪几类?
- 如何选择最合适的系统 RAID?
Part B.硬件管理与系统管理(IT1 部分)
B01.系统交付
带外管理服务
- ipmi 和 redfish 是什么?
- 使用 ipmitool 远程获取系统信息
系统引导服务
- 系统应答文件 AutoInstall
- 使用 netboot 根据 SN 号引导进入不同镜像
- 对 dhcpd 服务进行 IaC 改造
系统镜像管理
- 如何更改 Linux 内核参数
- 常见 Linux 内核调优参数
- 使用 Packer 构建自动镜像打包服务
B02.CMDB 支持
NetBox
Part C.基础架构管理(DevOps 部分)
C01.容器服务
Docker
- 基础概念:cgroup、不可变交付、隔离依赖
- 基础知识:
- 什么是 DOCKER-CE
- 基本 Docker 容器运行命令
docker run - 编写 Dockerfile
- Image 管理:构建、推送、版本控制
- Docker 网络管理:bridge、host、overlay、各级别通信模型
- 存储管理:储存外挂、文件权限
- 进阶知识:
- 为服务编写 docker-composer
- docker 镜像构建阶段
Kubernetes
- 基础资源定义 Pod/Deployment/Service/Ingress资源管理
- Ingress服务发现与负载均衡
- 配置管理(ConfigMap/Secret)
存储管理(PV/PVC/StorageClass)
- HPA/VPA自动扩缩容
- 网络策略(NetworkPolicy)
- 集群运维(备份恢复、升级)
- 本地实践:
- minikube
- microk8s
- k3s
- Helm/Kuberlizer
C02.虚拟机服务
Proxmox
- 虚拟机生命周期管理
- 集群管理与高可用
- 存储配置(LVM、Ceph)
- 备份与恢复策略
- 安全隔离设计
C03.云原生服务
Openstack
-
Openstack 基本概念与核心组件: NovaNeutronCinder - 如何实现云资源管理
- 如何实现多租户隔离
- 如何实现计量与计费
C04.CI & CD & IaC
CI
- Jenkins
- ArgoWorkflow
- Gitea
- GithubAction
CD
- ArgoCD
- FluxCD
CICD 完整技术方案
- Jenkins => Docker => Shell
- Gitea => Python => Shell
- Gitlab CI/CD => Docker & K8S => Shell
Terraform
Ansible
- Ansible 基础概念:幂等性、模块、Playbook
- Ansible 常用模块
- Ansible 调试与输出
- Ansible Tower
jsonnet 开发
C05.监控与告警系统
基础平台
- Prometheus
- Grafana
- Alertmanager
技术方案
- APM+Agent探针
可观测性:日志、指标、追踪
- Elasticsearch
- 集群规划与容量管理
- 索引生命周期管理
- 性能调优
- 安全配置
- 日志收集
- Fluentd/Fluent Bit:日志采集与转发
- Logstash:日志处理管道
- Loki:轻量级日志聚合
- 链路追踪
- Jaeger:分布式追踪
- Zipkin:调用链分析
- OpenTelemetry:可观测性标准
- 指标监控
- VictoriaMetrics:高性能时序数据库
- InfluxDB:时间序列数据存储
时序数据库
- 使用 ELK 构建日志分析平台
服务网格 istio
- 什么是 Service Mesh 服务网格
- istio 是什么?
- istio 功能:服务发现、负载均衡、故障恢复、度量和监控等
- 使用 istio 支持更复杂的运维需求:AB 测试、金丝雀发布、速率限制、访问控制和端到端认证
- API 流量管控
- 多版本API分流
C06.数据库
数据库基础概念
- ACID特性
- 事务隔离级别
- 索引原理与优化
- 查询执行计划
- 备份恢复策略
- 高可用方案(主从、集群)
MySQL
MongoDB
C07.KV 存储
一致性基础知识
- 什么是 Raft 算法
- 脑裂问题与处理方案
Redis
etcd
C08.消息队列
Kafka
RabbitMQ
C09.对象存储及文件存储
Ceph
MinIO
NFS
CephFS
Part D.公有云服务(DevOps 与 SRE 重合部分)
D01.AWS云服务
Part E.稳定性工程(SRE 部分)
E01.系统指标
- 什么是 SLO/SLA/SLI?
- 系统占用率评估
E02.服务发布 SOP
- 使用 Apach Benchmark 进行系统容量测算
- 使用 metric-server 构建系统监控指标
- 使用 ClusterAutoscaler + HPA 设置自动扩容方案
- 使用 Route53 + ALB + NLB 设置蓝绿发布与灰度发布
- 服务监控环节:服务、k8s、基础架构
E03.高可用系统构建
- 自动扩容设计
E04.容灾演练与方案预设
E05.系统成本审计
E06.团队最佳实践
- 构建 Post Mortem 环节
- 各项服务的 Capacity Review
Part F.编程语言
F01.Shell 脚本开发
文本处理工具
- gawk
- sed
- grep
文件处理
- 目录处理:ls\cat\find\rm\mv\touch\mkdir
- 文件比较:diff\cmp
- 压缩解压:tar\gzip\zip
权限管理
- chmod\chown\chgrp
- 文件权限(rwx)、特殊权限(suid\sgid\sticky)
- useradd\groupadd\passwd
IO 处理
- 管道、重定向、stdin
- 参数传递:xargs
- 脚本调试:set & trap
- 脚本传参:
$0&$1&$*&$@
网络连接
- 联通诊断:telnet/ssh/ping/traceroute
- 内网穿透:frp/ngrok
- 防火墙:iptables/firewalld/ufw
- 网络配置:ifconfig/ip/route
- 文件传输:scp/rsync/wget/curl
系统监控
- 进程监控:top/htop/ps/pstree/perf
- 性能分析:vmstat/iostat/mpstat
- 内存监控:free/smaps
- 磁盘监控:df/du/lsblk/lsof
- 网络监控:netstat/ss/iftop
系统服务
- systemctl:服务启停、状态查看、开机自启
- journalctl:日志查看与分析
- cron:定时任务管理
安装包管理
- apt 与 dpkg:Debian/Ubuntu
- yum 与 rpm: CentOS/RHEL
F02.Python 开发
基础数据结构
- Python 数据类型中的可变类型与不可变类型
- 深拷贝与浅拷贝问题
- Python 中列表与字典的操作(四种元素删除操作)
文件处理
异常处理
多线程
- Python 中的 GIL 锁
- 使用协程进行开发
Python 语法糖
- Python 中的装饰器与解释器
- Python 中的生成器与迭代器
F03.Golang 开发
Part G.算法
G01.数据结构基础
链表
- 使用 Python 快速构建链表
树
- 使用平衡二叉树、二叉搜索树
- 构建 AVL 与 红黑树
队列
- LRU 算法实现(LFU、FIFO 算法)
G02.算法类型
浮点数
字符串
双指针
- 典型双指针:接雨水
动态规划
- 动态规划基础思路
- 背包问题:背包九讲 与 打家劫舍
深搜 与 广搜
贪心算法
- 贪心算法与动态搜索的区别