C/C++ Linux后臺服務器開發高級架構師學習知識點路線總結(2021架構師篇完整版)
前言:
小編之前有跟大家分享過一篇架構師體系知識點總結的文章,今天在原來的基礎上有所改變更新(2021版),
相信大家也知道,想要成為一名架構師肯定是需要一定的時間經驗累積,才可以達到架構師的水平,今天分享的是成為架構師需要掌握的技術知識點,盡量的完善,目前對標的是知名企業騰訊、阿里等等后端開發崗位,
今天更新的內容是從Linux高級互聯網架構師知識點說起,基礎的知識點今天在這里就不寫出來了,有需要了解的朋友可以看看我之前的文章:C/C++ Linux 后臺服務器開發高級架構師學習知識路線總結
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的原理
四:Linux系統專題
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去中心化原理、 應用層協議設計方法論
對于自學的朋友,耗時比較久,技術堆疊不完善,架構不成體系,自律性差,這里給大家分享一個學習視頻鏈接,訂閱后免費試聽:https://ke.qq.com/course/417774?flowToken=1013189
八:挑戰網路性能極限DPDK專欄
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實作與性能
九、全方位分析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進行周期性記憶體回收、在嚴重記憶體不足時換出頁
收縮其他快取:資料結構、注冊和洗掉收縮器、收縮快取
文末整體的思路圖分享給大家,清晰版可以+qun720209036獲取


轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/241993.html
標籤:其他
