C/C++ Linux后台服务器开发高级架构师学习知识点路线总结(2021架构师篇完整版)
前言:
小编之前有跟大家分享过一篇架构师体系知识点总结的文章,今天在原来的基础上有所改变更新(2021版)。
相信大家也知道,想要成为一名架构师肯定是需要一定的时间经验累积,才可以达到架构师的水平,今天分享的是成为架构师需要掌握的技术知识点,尽量的完善,目前对标的是知名企业腾讯、阿里等等后端开发岗位。
今天更新的内容是从Linux高级互联网架构师知识点说起,基础的知识点今天在这里就不写出来了,有需要了解的朋友可以看看我之前的文章:https://www.toutiao.com/i6769094897262658056/
目录:
一:源码分析专题
二:中间件开发专题
三、集群
四:Linux系统专题
五:性能与测试专题
六:运维统计专题
七:分布式架构专题
八:挑战网络性能极限DPDK专栏
九、全方位分析Linux内核代码专栏
文末附上整体的思路图
源码阅读能力是提升技术必不可少的途径
1、Nginx源码
知识点包括:Nginx基础架构、HTTP架构、 进程间的通信机制、Nginx高级数据结构、slab共享内存、upstream机制设计
2、Redis源码
知识点包括:Redis存储系统原理、数据模型与键值映射、内存操作与磁盘同步、主从同步,原子操作、底层IO实现解析
3、skynet源码
知识点包括:网络模块实现与数据共享、定时器实现、actor实现与cluster集群、lua辅助库的实现、负载均衡与热更新方案、c服务开发与对接客户端、skynet奇技淫巧
4、ZeroMQ源码
知识点包括:消息模型 发布订阅/推拉模型、通信协议 inproc/ipc/tcp/pgm、性能分析与经典MQ对比、底层网络通信实现机制、zmq系统架构与实现原理
要有造轮子的能力,也要有不造轮子的觉悟,SDK是高级开发必须要有的封装能力
1、高性能组件
知识点包括:如何设计内存池、高并发场景下的消息队列、协程框架的实现、手写线程池、异步请求池、连接池、
2、高并发网络IO
知识点包括:select,poll和epoll模型的区别、 Linux系统IO模型、理解Linux 服务器高并发编程、网络接入层架构设计、你必须懂得Epoll玩法
3、并发性
知识点包括:多线程与线程安全、事务的隔离级别、公平锁&非公平锁、CopyOnWrite容器、悲观锁&乐观锁&CAS&ABA问题、 事务ACID特性
4、Web服务
知识点包括:反向代理Nginx、最广泛的web服务器 Httpd、高性能 Web 平台OpenResty
5、定时调度
知识点包括:分布式定时调度 Opencron、触发器按时启动原理、Linux定时任务cron配置
6、消息队列
知识点包括:消息总线VS消息队列、Redis 消息推送、如何保证消费者接收消息的顺序
7、Web安全
知识点包括:CSRF原理及防范、高级Dos攻击-Hash碰撞攻击、脚本注入文件上传漏洞、SQL注入、XSS攻击原理与解决方案
8、网络协议栈
知识点包括:tcp/udp/ip/eth、多进程实现高并发、滑动窗口、延迟确认、定时重传、流量控制、tcp握手挥手
必须要有的产品级技能。
1、MySQL集群
知识点包括:MySQL Cluster 评估指南、读写分离 分库分表、Binlog机制分析、健全性检查与故障排除、数据模型与查询设计
2、Redis集群
知识点包括:Redis Cluster方案、节点自动发现、master/slave 选举,集群容错、ASK转向/MOVED转向机制
3、FastDFS集群
知识点包括:tracker与storage节点、文件上传/下载测试、fastdfs-nginx-module的原理、fastdfs的实现原理
4、K8S集群
知识点包括:K8S核心组件、无缝对接新应用、快速部署应用与扩展、自动部署、管理容器化
5、Nginx集群
知识点包括:Nginx的实现原理、经典应用场景、高可用方案的实现机制、LVS与Nginx集群
6、 MongoDB集群
知识点包括:高可用的MongoDB集群方案、文档管理机制与实现、配置分片的表与片键、MongoDB集群环境部署
7、etcd分布式注册
知识点包括:etcd的概念与集群环境部署、etcd的特性与数据结构、原理及其内部选举机制etcd集群实现机制
8、rpc微服务 tars
知识点包括:tars的搭建与部署、微服务rpc的原理
Linux是每个工程师都会讨论的话题
1、环境编程
知识点包括:系统文件操作 一切设备接文件、信号量 mmap 共享内存、 系统时间 时间戳 定时器、网络IO编程 epoll机制、锁机制 互斥锁 spinlock 条件变量 原子操作、进程/线程 数据同步机制
2、系统运维
知识点包括:系统日志管理与配置、服务器环境搭建与配置、集成化工具安装、shell命令 文件操作
程序优化是所有程序产品必不可少的话题
1、理解性能优化
知识点包括:容量评估 平均QPS 高峰QPS 单机QPS、CDN网络加速原理、连接池的性能优化、性能优化方法论
2、MySQL调优
知识点包括:理解MySQL底层原理 B+Tree机制、索引优化揭秘、 SQL语句优化、SQL执行机制详解
3、测试理论
知识点包括:深度解析 TDD 测试驱动开发、全链路压测经验、Nginx根据IP进行灰度发布 A/B Test、真实流量测试工具 tcpcopy、单元测试minUnit
4、Linux调优
知识点包括:内核代码组织架构、系统IO参数调优配置、网络协议栈参数配置、内核代码编译与内核更换
5、GCC调优
知识点包括:快速编译工程Makefile编写、编译机制 编译原理
团队合作,产品开发,必须要有代码管理能力
1、Jenkins
知识点包括:搭建Jenkins自动化部署环境、test\pre\production 多环境发布、Jenkins集成git实现自动部署、Jenkins多环境配置,权限管理及插件使用
2、虚拟化
知识点包括:Xen虚拟化搭建与原理详解、KVM经典详解、OpenStack架构知识梳理、开源Linux容器 OpenVZ
3、Docker
知识点包括:Dockerfile的编译与镜像编译、Docker-Compose部署与编排、Docker命令与镜像版本提交、Docker的原理
七:分布式架构专题
以铜为镜,可以正衣冠;以古为镜,可以知兴替;以人为镜,可以明得失。从互联网一线产品的技术架构,提高自己的视野
1、架构实战
知识点包括:新浪门户负载均衡方案解析、京东海量存储哈希存储引擎解密、虎牙核心视频直播架构技术揭秘、京东分布式K-V存储设计与挑战、阿里网络故障智能化治理解决方案、小艾叮咚语音核心技术语音合成实战、微信安全开放性云平台架构探秘、爱奇艺大数据平台的构建之路
2、架构中间件
知识点包括:远程调用rpc从入门到精通、多进程高效通信之共享MM全攻略、Nginx进程间通信剖析、高性能服务器为什么需要内存池、百度大规模时序指标自动异常检测实战
3、架构策略
知识点包括:订阅者发布者模式实现高并发架构、阿里云Elasticsearch架构解析与性能优化实践、两段提交与多段提交、UDP分片原理分析及其实现方法、Reactor模式和线程池实现高并发服务
4、架构原理
知识点包括:消息驱动式架构设计方法论、动态域名解析和CDN原理、Zookeeper原理、分布式锁的原理、P2P去中心化原理、 应用层协议设计方法论
1、认识DPDK
知识点包括:主流包处理硬件平台、解读数据包处理能力
件包处理的潜力:DPDK加速网络节点、DPDK加速计算节点、DPDK加速存储节点、DPDK的方法论
实践回顾理论:Skeleton、L3fwd
2、Cache和内存
知识点包括:Cache系统、Cache地址映射和变换、Cache的写策略、Cache预取、Cache一致性、TBL和巨页、英特尔数据直接DDIO、非统一内存访问NUMA
存储系统:系统架构的演进、内存子系统
3、并行计算
知识点包括多核性能和可扩展性:追求性能水平扩展、多核处理器亲和性、DPDK的多线程
指令并发与数据并行:指令并发、单指令多数据
4、同步互斥机制
知识点包括原子操作:处理器上的原子操作、Linux内核原子操作、DPDK原子操作实现与应用
读写锁:Linux读写锁核心API、DPDK读写锁实现和应用
自旋锁:自旋锁的缺点、Linux自旋锁API、DPDK自旋锁实现和应用
无锁机制:Linux内核无锁环形缓冲、DPDK无锁环形缓冲
5、报文转发
知识点包括转发框架介绍:网络处理模块划分、DPDK run to completion模型、DPDK pipeline模型
转发算法:精确匹配算法、最长前缀匹配算法、ACL算法、报文分发
6、PCIe与包处理I/O
知识点包括PCIe事务的角度:异常中断模、式轮询模式、混合中断轮询模式
PCIe上的数据传输能力:Brust收发包的优点、批处理和时延隐藏、利用Intel SIMD指令并行化包收发、网卡DMA描述符环形队列、数据包收发—CPU和I/O
Mbuf和Mempool:Mbuf、Mempool
7、网卡性能优化
知识点包括DPDK的轮询模式:异步中断模式、异步中断模式、混合中断轮询模式
网卡I/O性能优化:Burst收发包的优点、批处理和时延隐藏、Intel SIMD指令并行转发
平台优化及其配置调优:硬件平台的性能影响、软件平台的性能影响
队列长度及各种阈值的设置:收包队列长度、发包队列长度、收包队列可释放描述符数量阈值、发包队列可释放描述符数量阈值、发包描述符释放阈值
8、流分类与多队列
知识点包括多队列:网卡多队列的由来、Linux内核对多队列支持、DPDK与多队列、队列分配
流分类:包的类型、接收方扩展 RSS、Flow Director、服务质量、虚拟化流分类的方式、流过滤
流分类技术的使用:DPDK结合网卡Flow Director功能、DPDK结合网卡虚拟化及cloud Filter功能、可重构匹配表
9、Intel 硬件功能
知识点包括:网卡硬件卸载功能、DPDK软件接口、硬件与软件功能实现、分片组包卸载
计算及更新功能卸载:VLAN硬件卸载、IEEE1588硬件卸载功能、IP TCP/UDP/SCTP checksum硬件卸载功能、Tunnel硬件卸载功能
10、X86平台的IO虚拟化
知识点包括:PCIe网卡透传下的收发包流程、I/O透传虚拟化配置
X86平台虚拟化概述:CPU虚拟化、内存虚拟化、I/O虚拟化
I/O透传虚拟化:Intel VT-d、PCI SR-IOV
11、半虚拟化Virtio
知识点包括:Virtio使用
Virtio规范和原理:设备的配置、虚拟队列的配置、设备的使用
Virtio网络设备驱动设计:Virtio网络设备Linux内核驱动设计、基于DPDK用户空间Virtio网络设备驱动设计
12、加速包处理的vhost优化方案
知识点包括vhost的演进和原理:Qemu与Virtio-net、Linux内核态vhost-net、用户态vhost
基于DPDK的用户态vhost设计:消息机制、地址转换和映射虚拟机内存、vhost特性协商、virtio-net设备管理、vhost中的Checksum和TSO功能卸载
DPDK vhost编程实例:报文收发接口、使用DPDK vhost lib、使用DPDK vhost PMD
13、DPDK与网络功能虚拟化
知识点包括:网络功能虚拟化、OPNFV与DPDK、NFV的部署、
VNF自身特性的评估:性能分析方法论、性能优化思路
VNF的设计:VNF虚拟网络接口的选择、IVSHMEM共享内存的PCI设备、网卡轮询和混合中断轮询模式的选择、硬件加速功能的考虑、服务质量的保证
实例分析和商业案例:Virtual BRAS、Brocade vRouter 5600
14、Open vSwitch中的DPDK性能加速
知识点包括:虚拟交换机、OVS
DPDK加速的OVS:OVS的数据通路、DPDK加速的数据通路、DPDK加速的OVS性能
15、基于DPDK的存储软件优化
知识点包括:基于以太网的存储系统、以太网存储系统的优化
SPDK介绍:基于DPDK的用户态TCP/IP栈、用户态存储驱动、SPDK中iSCSI target实现与性能
1、进程管理和调度
知识点包括:进程的优先级、进程生命周期
进程表示:进程类型、命名空间、进程ID号、进程关系
进程管理相关的系统调:进程复制、内核线程、启动新进程、退出进程
调度器的实现:概观、数据结构、处理优先级、核心调度器
完全公平调度类:数据结构、CFS操作、队列操作、选择下一个进程、处理周期性调度器、唤醒抢占、处理新进程
实时调度类:性质、数据结构、调度器操作
调度器增强:SMP调度器、调度域和控制组、内核抢占和低延迟相关工作
2、内存管理
知识点包括(N)UMA模型中的内存组织:概述、数据结构
页表:数据结构、页表项的创建和操作
初始化内存管理:建立数据结构、特定于体系结构的设置、启动过程期间的内存管理
物理内存管理:伙伴系统的结构、避免碎片、初始化内存域和结点数据结构、分配器API、分配页、释放页、内核中不连续页的分配、内核映射
slab分配器:备选分配器、内核中的内存管理、slab分配的原理、实现、通用缓存
3、进程虚拟内存
知识点包括:内存映射的原理
进程虚拟地址空间:进程地址空间的布局、建立布局
数据结构:树和链表、虚拟内存区域的表示、优先查找树
对区域的操作:将虚拟地址关联到区域、区域合并、插入区域、创建区域
内存映射:创建映射、删除映射、非线性映射
反向映射:数据结构、建立逆向映射、使用逆向映射
用户空间缺页异常的校正:按需分配/调页、匿名页、写时复制、获取非线性映射
4、设备驱动程序
知识点包括访问设备:设备文件、字符设备、块设备和其他设备、使用ioctl进行设备寻址、主从设备号的表示、注册
与文件系统关联:inode中的设备文件成员、标准文件操作、用于字符设备的标准操作、用于块设备的标准操作
字符设备操作:表示字符设备、打开设备文件、读写操作
块设备操作:块设备的表示、数据结构、向系统添加磁盘和分区、打开块设备文件、请求结构、BIO、提交请求、I/O调度、ioctl的实现
资源分配:资源管理、I/O内存、I/O端口
总线系统:通用驱动程序模型、PCI总线、USB
5、虚拟文件系统
知识点包括:文件系统类型
通用文件模型:inode、链接、编程接口、将文件作为通用接口
proc文件系统:/proc的内容、数据结构、初始化、装载proc文件系统、管理/proc数据项、进程相关的信息、系统控制机制
简单的文件系统:顺序文件、用libfs编写文件系统、调试文件系统、伪文件系统
sysfs:数据结构、装载文件系统、、文件和目录操作、向sysfs添加内容
VFS的结构:结构概观、inode、特定于进程的信息、文件操作、目录项缓存
处理VFS对象:文件系统操作、文件操作
标准函数:通用读取例程、失效机制、权限检查
6、系统调用
知识点包括系统程序设计基础:追踪系统调用、支持的标准、重启系统调用
中断:中断类型、硬件IRQ、处理中断、数据结构、中断电流处理、初始化和分配IRQ、处理IRQ
软中断:开启软中断处理、软中断守护进程
tasklet:创建tasklet、注册tasklet、执行tasklet
等待队列和完成量:等待队列、完成量、工作队列
系统调用的实现:系统调用的结构、访问用户空间、追踪系统调用
7、页面回收和页交换
知识点包括:交换令牌、数据回写
概述:可换出页、页颠簸、页交换算法
Linux内核中的页面回收和页交换:交换区的组织、检查内存使用情况、选择要换出的页、处理缺页异常、减缩内核缓存
管理交换区:数据结构、创建交换区、激活交换区
交换缓存:标识换出页、交换缓存的结构、添加新页、搜索一页
页面回收:概述、数据结构、确定页的活动程度、收缩内存域、隔离LRU页和集中回收、收缩活动页链表、回收不活动页
处理交换缺页异常:换入页、读取数据、交换预读
发起内存回收:kswapd进行周期性内存回收、在严重内存不足时换出页
收缩其他缓存:数据结构、注册和删除收缩器、收缩缓存