GFS經典設計,給了我們哪些架構啟示?

原创 沈剑 架构师之路
工程架構,Google乃先驅。其GFS(Google File System)有哪些優秀的架構設計點,值得我們學習借鏡呢?
GFS是什麼?
Google早期研發的分散式檔案系統。
GFS的設計目標是什麼?
主要有四個目標:
1.  高可用(availability);
2.  高可靠(reliability);
3.  高績效(performance);
4.  可擴展(scalability);
GFS對外提供什麼介面?
文件創建,刪除,打開,關閉,讀,寫,快照。畫外音:除了快照,介面和單機檔案系統差不多。
快照其實是快速文件目錄樹的拷貝,並不是所有文件的快照。
GFS能夠成為分散式架構的經典案例,原因之一,就是介面簡單,但反映的架構理念不簡單。
GFS的系統架構如何?系統裡只有檔案客戶端,主伺服器,儲存伺服器三個角色。

如上圖:1. 客戶端(GFS client),是以庫的形式提供的,提供的就是對外要用的接口;2. 主伺服器(GFS master),是單點,存儲文件信息,目錄信息,文件服務器信息,那個文件存在哪些文件服務器上等元數據;3.3.3點存儲文件信息,
為什麼要設計單點master?單點master意味著有一個節點可以避免分散式鎖,可以擁有全域視野,能夠統一調度與監控,系統整體複雜度降低很多。畫外音:鎖可以降級成本地鎖,分散式調度可以降級為單點調度。
更具體的:1. master擁有所有文件目錄結構,要操作某個文件,必須獲得相應的鎖;畫外音:一般情況下,不會對同一個網頁進行並發寫操作,應用場景決定鎖衝突其實不大;2. master擁有全域視野,能夠避免死鎖;3. master知道chunk-server的信息,能夠很容易監控的做負載; master知道所有文件的副本分佈訊息,能夠很容易的做文件大小的負載平衡;畫外音:負載平衡分為請求量的均衡,文件儲存的容量均衡。
GFS的高可用是怎麼保證的?高可用又分為服務高可用,文件儲存高可用,均透過「冗餘+自動故障轉移」的思路來實現。 1. master高可用:冗餘了一台影子master,平時不工作,master掛了工作,以保證master的高可用;畫外音:master資源利用率只有50%。 2. chunk-server高可用:本身是集群,冗餘服務;畫外音:當有chunk-server掛掉,master能偵測到,並且知道哪些檔案儲存在chunk-server上,就可以啟動新的實例,並複製相關檔案。 3. 文件存放高可用:每一份文件會存三份,冗餘文件;
GFS的高效能是怎麼保證的?多個chunk-server可以透過線性擴充提升處理能力和儲存空間,GFS的潛在瓶頸是單點master,所以GFS要想達到超高效能,主要架構最佳化想法在於,「提升master效能,減少與master互動」。

  1. 只儲存元數據,不儲存檔案數據,不讓磁碟容量成為master瓶頸;
  2. 元資料會儲存在磁碟和記憶體裡,不讓磁碟IO成為master瓶頸;
  3. 元資料大小記憶體完全能裝得下,不讓記憶體容量成為master瓶頸;所有資料流,資料緩存,可走遠,資料快取,成為master瓶頸;
  4. 元資料可以快取在客戶端,每次從客戶端本地快取存取元數據,只有元資料不準確的時候,才會存取master,不讓CPU成為成為master瓶頸;
    當然,chunk-server雖然有多個,也會透過一些手段提升chunk-server的效能,例如:1. 檔案區塊使用64M,避免太多碎片降低效能;2. 使用追加寫,而不是隨機寫,提升效能;3. 使用TCP長連接,提升效能;
    GFS如何保證系統可靠度?保證元資料與文件資料的可靠性,GFS使用了許多非常經典的手段。 1. 元資料的變更,會先寫日誌,以確保不會遺失;畫外音:日誌也會冗餘,具備高可用。 2. master會輪詢探測chunk-server的存活性,保證有chunk-server失效時,chunk-server的狀態是準確的;畫外音:檔案會存多份,短時間內chunk-server掛掉是不影響的。 3. 元資料的修改是原子的,由master控制,master必須保證元資料修改的順序性;4. 檔案的正確性,透過checksum保證;5. 監控,快速發現問題;
    讀取操作的核心流程?文件讀取是最高頻的操作。 1. client讀本機緩存,看檔案在哪些chunk-server上;2. 如果client本機快取miss,詢問master文件所在位置,並更新本機快取;3. 從一個chunk-server裡讀文件,如果讀取到,就回傳;
    寫入操作的核心流程?寫入操作會複雜很多。
    為了確保資料高可用,資料必須在多個chunk-server上寫入多個副本,首先要解決的問題是,如何保證多個chunk-server上的資料是一致的呢?
    想想一個MySQL叢集的多個MySQL實例,是如何保證多個實例的資料一致性的。 bingo!確定一個主實例,串行化所有寫入操作,然後在其他實例重播相同的操作序列,以確保多個實例資料的一致性。
    GFS也採用了類似的策略,一個檔案冗餘3份,存在3個chunk-server上,如下圖步驟1-7:
  1. client存取master,要發起文件寫入操作;畫外音:假設client本地快取未生效;master回傳資料儲存在ABC三個實例上,且告之其中一個實例是主chunk-server;
  2. client將資料流傳遞給所有chunk-server;
  3. client將控制流產地給主chunk-unk-1
  4. 鍵結其他chunk-server則依照相同的控制流程對資料進行操作,並將結果告訴主chunk-server;
  5. 主chunk-server收到其他所有chunk-server的成果執行結果後,將結果傳回client;
  6. 畫外音:MySQL的主函式庫是寫瓶頸,GFS不會出現這樣的問題,每個檔案的主chunk-server是不同的請求,所以每個實例的寫字的寫法。
    這裡要說明的是,GFS對於寫入操作,執行的是最保守的策略,必須所有chunk寫成功,才會返回client寫成功(寫吞吐會降低);這樣的好處是,讀取操作只要一個chunk讀取成功,就能返回讀取成功(讀吞吐會提升)。畫外音:這也符合R+W>N的定理,N=3份副本,W=3寫3個副本才算成功,R=1讀1個副本就算成功。 R+W>N定理未來再詳述。
    之所以這麼設計,和文件操作「讀多寫少」的特性有關的,Google抓取的網頁,更新較少,讀取較多,這也是一個設計折衷的典型。畫外音:任何脫離業務的架構設計都是耍流氓。
    除此之外,這裡還有一個「資料流與控制流分離」的設計準則:1. 控制流資料量小,client直接與主chunk-server互動;2. 資料流資料量大,client選擇「最近的路徑」傳送資料;畫外音:所謂「最近」,可以透過IP的相似度計算。
    總結GFS的架構,體現了許多經典的設計實踐:1. 簡化系統角色,單點master降低系統複雜度;2. 不管是文件還是服務,均透過「冗餘+故障自動轉移」保證高可用;3. 由於存在單點master,GFS將「降低與單點核心的交互」作為性能優化;4. 透過寫入資料,原子法修改,checksum,原子監控6.5.控制流與資料流分離,提高效能;
    知其然,知其所以然。思路比結論更重要。

Cisco 實施思科協作雲端和邊緣解決方案認證考試:300-820

CCNP Collaboration:Implementing Cisco Collaboration Cloud and Edge Solutions Exam:300-820
Cisco 實施思科協作雲端和邊緣解決方案認證考試:300-820
考試描述:
實施思科協作雲端和邊緣解決方案 (300-820 CLCEI) v1.1 是一門 90 分鐘的考試,旨在證明考生對協作雲端和邊緣解決方案、高速公路配置、思科 Webex 應用程式混合和新興技術的了解。
通過300-820考試,您將獲得思科認證專家 – 思科認證專家 – 協作雲端與邊緣實施認證,並可用於滿足思科認證網路專業人員 (CCNP) 協作認證的專案考試要求。通過此考試還可以用於實現您的再認證目標。

考試詳情:
語言:英語
考試時長:90分鐘
價格:300 美元,或使用思科學習積分
認證:思科認證網路專業人員 (CCNP) 協作
思科認證專家 – 協作雲端與邊緣實施

300-820 CLCEI v1.2 考試主題
自 2026 年 2 月 3 日起,300-820 CLCEI 考試將更名為 300-820 CLHCT:實施思科協作混合和雲端技術
v2.0 考試的首次考試日期為 2026 年 2 月 3 日。
1.0 關鍵概念 25%
1.1 描述協作環境中 NAT 的複雜性
1.2 描述ICE、TURN和STUN的用途
1.3 描述 Expressway 媒體遍歷
1.4 描述 Expressway 上的協定互通
1.4.a H.323 到 SIP
1.4.b IPv4 和 IPv6

1.5 描述高速公路許可
1.5.a SMART許可證
1.5.b 許可證消耗
1.5.c 高速公路選擇

1.6 描述SIP媒體加密模式
1.6.a 自動
1.6.b 強制加密
1.6.c 強制解密
1.6.d 盡力而為

1.7 描述 Expressway 核心撥號計畫元素
1.7.a 變換
1.7.b 搜尋規則
1.7.c 區域
1.7.d 正規表示式
1.7.e 管道和鏈接

1.8 描述關鍵的高速公路設置
1.8.a DNS
1.8.b 網路介面
1.8.c 證書
1.8.d QoS
1.8.e 聚類
1.8.f 網路防火牆規則
1.8.g 自動檢測

1.9 描述 Expressway 備份和復原流程(獨立和叢集)

2.0 初始 Expressway 配置 25%
2.1 設定關鍵 Expressway 設定
2.1.a DNS
2.1.b 網路介面
2.1.c 證書
2.1.d QoS
2.1.e 聚類
2.1.f 網路防火牆規則

2.2 設定 Expressway 核心撥號計畫元素
2.2.a 變換
2.2.b 搜尋規則
2.2.c 區域
2.2.d 正規表示式

2.3 在 Expressway 系列上設定收費詐欺預防(無自訂 CPL 腳本)

2.4 配置企業對企業 (B2B) 協作解決方案
2.4.a DNS 記錄(重點在於 Microsoft DNS)
2.4.b 憑證(重點關注 Microsoft CA)
2.4.c 穿越區域
2.4.d 鄰近區域
2.4.e 變換
2.4.f 搜尋規則
2.4.g SIP 中繼與 Cisco UCM 集成

2.5 對企業對企業 (B2B) 協作解決方案進行故障排除
2.5.a DNS 記錄(重點在於 Microsoft DNS)
2.5.b 憑證(重點關注 Microsoft CA)
2.5.c 穿越區域
2.5.d 鄰近區域
2.5.e 變換
2.5.f 搜尋規則
2.5.g SIP 中繼與 Cisco UCM 集成

3.0 移動和遠端訪問 25%
3.1 配置移動和遠端存取 (MRA) 解決方案
3.1.a DNS記錄
3.1.b 證書(UCM、IM&P、Expressways、Unity Connection)
3.1.c 統一通訊遍歷區域
3.1.d Expressway 上的統一通訊配置
3.1.e HTTP 允許列表
3.1.f Cisco UCM 上的 SIP 中繼安全設定檔

3.2 移動和遠端存取 (MRA) 解決方案故障排除
3.2.a DNS記錄
3.2.b 證書(UCM、IM&P、Expressways、Unity Connection)
3.2.c 統一通訊遍歷區域
3.2.d Expressway 上的統一通訊配置
3.2.e HTTP 允許列表
3.2.f Cisco UCM 上的 SIP 中繼安全設定檔

4.0 思科 Webex 技術 25%
4.1 描述 Cisco Webex 視訊網格部署中所使用的訊號和媒體串流

4.2 設定 Webex 混合服務
4.2.a 行事曆服務(Office 365、Microsoft Exchange、一鍵通和 Google 行事曆)
4.2.b 訊息服務(部署需求、高速公路要求、憑證、呼叫管理器先決條件、IM&P 先決條件、部署模型)
4.2.c 視訊網格(部署需求、頻寬、叢集、端點支援、視訊通話容量、連接埠和協定、部署模型)
4.2.d 設備版 Webex Edge
4.2.e Webex 設備的混合呼叫

4.3 描述 Webex 架構組件
4.3.a 控制中心
4.3.b 混合服務
4.3.c Webex 應用程式

4.4 描述 Webex 中的管理功能
4.4.a 用戶管理,例如新增用戶、刪除用戶、修改用戶
4.4.b 組織管理,例如設定域、設定、安全性和集成
4.4.c 站點管理,例如新增多個站點、啟用功能、常用站點設置

4.5 設定使用者管理整合(目錄服務和 SSO)
4.5.a 目錄同步(部署需求、部署模型、基礎架構需求、Active Directory 設定、同步、Webex 使用者授權分配)
4.5.b SSO(Control Hub 配置、部署需求和 SAML 協定屬性)

4.6 描述 Webex 呼叫
4.6.a 多租戶(呼叫功能、呼叫路由、PSTN 選項、設備、工作區)
4.6.b 專用實例
4.6.c Webex 連接 UC
4.6.d 架構和遷移工具

Cisco網路助理工程師認證考試:200-301

Cisco Certified Network Associate Exam:200-301
Cisco網路助理工程師認證考試:200-301
考試描述
CCNA 考試 v1.1 (CCNA 200-301) 是與 CCNA 認證相關的 120 分鐘考試。該考試考察考生在網路基礎知識、網路存取、IP 連接、IP 服務、安全基礎知識以及自動化和可程式性方面的知識和技能
考試詳情:
語言:英語、日語
考試時長:120分鐘
價格:300 美元,或使用思科學習積分
認證名稱:思科認證網路工程師(CCNA)

200-301 CCNA v1.1 考試主題
1.網絡基礎知識20%
1.1 解釋網路組件的作用和功能
1.1.a 路由器
1.1.b 第 2 層及第 3 層交換機
1.1.c 下一代防火牆和 IPS
1.1.d 接入點
1.1.e 控制器(Cisco DNA Center 和 WLC)
1.1.f 端點
1.1.g 伺服器
1.1.h PoE
1.2 描述網路拓樸結構的特點
1.2.a 雙層
1.2.b 三層
1.2.c 脊葉
1.2.d 廣域網
1.2.e 小型辦公室/家庭辦公室(SOHO)
1.2.f 本地和雲端
1.3 比較實體介面和電纜類型
1.3.a 單模光纖、多模光纖、銅纜
1.3.b 連接(乙太網路共享媒體和點對點)
1.4 識別介面和電纜問題(衝突、錯誤、雙工不匹配和/或速度)
1.5 比較 TCP 和 UDP
1.6 設定和驗證 IPv4 位址和子網路劃分
1.7 描述私有 IPv4 尋址
1.8 配置並驗證 IPv6 位址和前綴
1.9 描述 IPv6 位址類型
1.9.a 單播(全域、唯一本地和連結本地)
1.9.b 任播
1.9.c 多播
1.9.d 修改後的 EUI 64
1.10 驗證客戶端作業系統(Windows、Mac OS、Linux)的 IP 參數
1.11 描述無線原理
1.11.a 不重疊的 Wi-Fi 頻道
1.11.b SSID
1.11.c 射頻
1.11.d加密
1.12 解釋虛擬化基礎知識(伺服器虛擬化、容器和 VRF)
1.13 描述切換概念
1.13.a MAC學習與老化
1.13.b 幀切換
1.13.c 幀泛洪
1.13.d MAC位址表

2.網絡訪問20%
2.1 設定並驗證跨多個交換器的 VLAN(正常範圍)
2.1.a 接入埠(數據和語音)
2.1.b 預設 VLAN
2.1.c VLAN間連接
2.2 配置並驗證交換器間的連接
2.2.a 中繼端口
2.2.b 802.1Q
2.2.c 本機 VLAN
2.3 設定和驗證第 2 層發現協定(思科發現協定和 LLDP)
2.4 設定與驗證(第 2 層/第 3 層)乙太網路通道 (LACP)
2.5 解釋快速 PVST+ 生成樹協定的基本操作
2.5.a 根端口、根橋(主/輔)和其他端口名稱
2.5.b 連接埠狀態(轉送/阻塞)
2.5.c PortFast
2.5.d 根保護、環路保護、BPDU 過濾器和 BPDU 保護
2.6 描述思科無線架構和 AP 模式
2.7 描述 WLAN 元件(AP、WLC、存取/中繼埠和 LAG)的實體基礎設施連接
2.8 描述網路設備管理存取(Telnet、SSH、HTTP、HTTPS、控制台、TACACS+/RADIUS 和雲端管理)
2.9 解釋用戶端連接的無線 LAN GUI 配置,例如 WLAN 建立、安全性設定、QoS 設定檔和進階設定

3.IP連接25%
3.1 解讀路由表的組成部分
3.1.a 路由協定代碼
3.1.b 前綴
3.1.c 網路掩碼
3.1.d 下一跳
3.1.e 管理距離
3.1.f 度量
3.1.g 最後的手段網關
3.2 確定路由器預設如何做出轉送決策
3.2.a 最長前綴匹配
3.2.b 管理距離
3.2.c 路由協定度量
3.3 設定並驗證IPv4和IPv6靜態路由
3.3.a 預設路由
3.3.b 網路路由
3.3.c 主機路由
3.3.d 浮動靜態
3.4 設定並驗證單區域OSPFv2
3.4.a 鄰居鄰接
3.4.b 點對點
3.4.c 廣播(DR/BDR 選擇)
3.4.d 路由器 ID
3.5 描述第一跳冗餘協定的目的、功能與概念

4.IP服務
4.1 使用靜態和池配置並驗證內部來源 NAT
4.2 設定並驗證以客戶端和伺服器模式運作的NTP
4.3 解釋DHCP和DNS在網路中的作用
4.4 解釋SNMP在網路操作中的作用
4.5 描述 syslog 功能的使用,包括設施和級別
4.6 設定並驗證 DHCP 用戶端和中繼
4.7 解釋 QoS 的轉發每跳行為 (PHB),例如分類、標記、排隊、擁塞、監管和整形
4.8 使用 SSH 設定遠端存取的網路設備
4.9 描述TFTP/FTP在網路中的能力和功能

5.安全基礎知識15%
5.1 定義關鍵安全概念(威脅、漏洞、利用和緩解技術)
5.2 描述安全計畫要素(使用者意識、訓練和實體存取控制)
5.3 使用本機密碼設定和驗證設備存取控制
5.4 描述安全密碼策略要素,例如管理、複雜性和密碼替代方案(多因素身份驗證、憑證和生物識別)
5.5 描述 IPsec 遠端存取和站點到站點 VPN
5.6 設定和驗證存取控制列表
5.7 設定並驗證第 2 層安全功能(DHCP 偵聽、動態 ARP 檢查和連接埠安全)
5.8 比較身分驗證、授權和計費概念
5.9 描述無線安全協定(WPA、WPA2 和 WPA3)
5.10 使用 WPA2 PSK 在 GUI 中設定和驗證 WLAN

6.自動化和可程式性10%
6.1 解釋自動化如何影響網路管理
6.2 比較傳統網路與基於控制器的網絡
6.3 描述以控制器為基礎的軟體定義架構(覆蓋、底層和結構)
6.3.a 控制平面和資料平面的分離
6.3.b 北向和南向 API
6.4 解釋網路營運中的人工智慧(生成和預測)和機器學習
6.5 描述基於 REST 的 API 的特徵(驗證類型、CRUD、HTTP 動詞和資料編碼)
6.6 認識設定管理機制的功能,例如 Ansible 和 Terraform
6.7 辨識 JSON 編碼資料的組成部分