C/C++ Linux後臺伺服器開發高階架構師學習知識點路線總結(2021架構師篇完整版)
相信大家也知道,想要成為一名架構師肯定是需要一定的時間經驗累積,才可以達到架構師的水平,今天分享的是成為架構師需要掌握的技術知識點,儘量的完善,目前對標的是知名企業騰訊、阿里等等後端開發崗位。
Linux高階網際網路架構師專欄目錄:
一:原始碼分析專題
二:中介軟體開發專題
三、叢集
四: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的原理
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、架構實戰
2、架構中介軟體
知識點包括:遠端呼叫rpc從入門到精通、多程序高效通訊之共享MM全攻略、Nginx程序間通訊剖析、高效能伺服器為什麼需要記憶體池、百度大規模時序指標自動異常檢測實戰
3、架構策略
知識點包括:訂閱者釋出者模式實現高併發架構、阿里雲Elasticsearch架構解析與效能最佳化實踐、兩段提交與多段提交、UDP分片原理分析及其實現方法、Reactor模式和執行緒池實現高併發服務
4、架構原理
知識點包括:訊息驅動式架構設計方法論、動態域名解析和CDN原理、Zookeeper原理、分散式鎖的原理、P2P去中心化原理、 應用層協議設計方法論
知識點包括:主流包處理硬體平臺、解讀資料包處理能力
件包處理的潛力: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無鎖環形緩衝
6、PCIe與包處理I/O
知識點包括PCIe事務的角度:異常中斷模、式輪詢模式、混合中斷輪詢模式
PCIe上的資料傳輸能力:Brust收發包的優點、批處理和時延隱藏、利用Intel SIMD指令並行化包收發、網絡卡DMA描述符環形佇列、資料包收發—CPU和I/O
Mbuf和Mempool:Mbuf、Mempool
7、網絡卡效能最佳化
知識點包括DPDK的輪詢模式:非同步中斷模式、非同步中斷模式、混合中斷輪詢模式
平臺最佳化及其配置調優:硬體平臺的效能影響、軟體平臺的效能影響
佇列長度及各種閾值的設定:收包佇列長度、發包佇列長度、收包佇列可釋放描述符數量閾值、發包佇列可釋放描述符數量閾值、發包描述符釋放閾值
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實現與效能
九、全方位分析Linux核心程式碼專欄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進行週期性記憶體回收、在嚴重記憶體不足時換出頁
文末整體的思路圖分享給大家,清晰版可以後臺私信【架構】獲取