TOP
0
0
【簡體曬書區】 單本79折,5本7折,活動好評延長至5/31,趕緊把握這一波!
萬億級流量轉發:BFE核心技術與實現(簡體書)
滿額折

萬億級流量轉發:BFE核心技術與實現(簡體書)

人民幣定價:89 元
定  價:NT$ 534 元
優惠價:87465
領券後再享88折
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:13 點
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次
書摘/試閱

商品簡介

本書圍繞BFE開源項目,介紹網絡前端接入和網絡負載均衡的相關技術原理,說明BFE開源軟件的設計思想和實現機制,講解如何基於BFE開源軟件搭建網絡接入平臺。

本書共17章,分為四個部分。第一部分為原理篇,介紹BFE開源項目的概貌,並對網絡前端接入技術和網絡負載均衡技術做簡要介紹;第二部分為設計篇,介紹BFE開源項目的設計細節,包括BFE的設計思想、BFE的轉發模型、BFE的關鍵機制和HTTPS的優化等;第三部分為操作篇,說明如何安裝和部署BFE、如何在各種使用場景下配置BFE;第四部分為實現篇,從處理流程、插件機制、協議實現等方面說明BFE的實現機制。

本書面向的讀者包括計算機網絡方向的研究者、網絡相關技術的開發者、一般後臺程序的開發者和負載均衡系統的使用者等。


作者簡介

章 淼

博士,百度智能云架構師,BFE開源項目發起人。1997年至2006年在清華大學從事互聯網協議和網絡體系結構的研究。2012年加入百度,一直從事網絡基礎架構的研發工作。同時積極推動百度的代碼質量和工程能力的提升,目前兼任百度代碼規範委員會主席。


楊思杰

百度資深研發工程師,BFE開源項目主要負責人。從零開始參與百度新一代BFE轉發平臺的建設及創新,擁有近10年的在網絡接入和系統架構方面的深入研究和實踐經驗。關注於通過開源驅動基礎軟件可持續發展及創造更大的價值。


戴 明

百度資深研發工程師,主要從事BFE相關係統和產品的研發工作。曾在朗訊、諾基亞等電信設備公司工作多年,從事電信軟件研發和架構設計工作。


陶春華

博士,百度資深研發工程師。2010年畢業於天津大學計算機系,2013年加入百度,先後參與智能流量調度、BFE的Go語言重構、BFE管控平臺等重大項目。目前工作重心是負載均衡商業產品的研發。

名人/編輯推薦

突破云端海量極限、百度十年技術積澱——BFE核心技術首次落地成書。

全球shou個以Go語言實現萬億次流量轉發的大規模平臺。

經歷百度春晚紅包巔峰決戰,是力扛極限並發流量衝擊的實戰寶典。

濃縮百度技術團隊多年對平臺架構及迭代的技術、創新、實踐和積累。

完整呈現BFE 原理設計、架構實踐和開發擴展,同時對流量調度、轉發接入、負載均衡有更深入的介紹。


●● 序 ●●


從2014年4月寫下Go語言版本BFE的第一行代碼起,7年多的時間過去了。從2015年1月Go語言版本BFE全量上線開始,BFE至今已經在百度穩定運行了6年多的時間,每天轉發請求超過萬億次。

BFE(Baidu Front End,百度統一前端)是百度統一七層流量轉發平臺,當你訪問百度的時候,很可能已經在使用BFE的服務了。


百度的BFE團隊始建於2012年。當2012年年底我加入百度的時候,整個團隊只有6~7個人。這個團隊的創始人是夏華夏同學(現在在美團),他為BFE團隊的工作方向做了奠基性規劃。BFE初期的轉發引擎是基於C語言的,聽說是楊震原同學(現在在頭條)的大作。


2014年年初,基於各種考慮,我們決定對轉發引擎進行重構。這次重構前後花費了3個季度,投入了超過30個人月的資源。在面對多次失敗的風險後,Go語言版本的BFE終於出爐了。


這裡必須感謝部門領導李碩和團隊經理賀鋒的大力支持,感謝管理層的高度信任;感謝直接參與的幾位同學(李炳毅、魏為、楊思杰、陶春華等),大家都是冒著失敗離職的風險,硬著頭皮把這個項目做下來的。


我必須要感謝百度。到目前為止,我仍然堅定地認為,百度是中國最適合做技術的公司。百度給了工程師最大的尊重和自由,也願意為了技術研發承擔最大的風險。BFE團隊的另一個項目GTC(全局流量調度),前後研發了5年時間。曾經有一個朋友告訴我,也就只有百度可以給團隊這麼多的時間,如果在其他公司,一年內做不出來,項目很可能就被取消了。能夠在百度、在中國做全球最領先的技術,我感到無比驕傲。


2019年7月,BFE的轉發引擎對外開源。項目名稱仍保留英文縮寫BFE,英文全稱更名為Beyond Front End(中文意為“超越前端”)。我們希望通過BFE的開源推動負載均衡技術的發展。


從開源的那天起,BFE就已經開始了新的征程。BFE得到了各方的廣泛關注,有不少新增的功能是由百度之外的開發者貢獻的。BFE也被一些客戶選擇用於關鍵的業務場景,在度小滿金融、央視網、招商銀行等處都有BFE的身影。作為一個做技術的人,能夠讓自己所做的工作為社會創造價值,這是莫大的幸福和榮幸。


在BFE開源後,我們不斷地收到大家提出的一些問題。網絡負載均衡本身是一個比較專業和復雜的技術方向;BFE是為面向工業級使用場景而設計的,在模型和機制上和其他同類軟件相比,會更加復雜。以上這些因素讓一些使用者和開發者在理解BFE的機制方面遇到了困難。希望通過這本書,能夠幫助讀者更好地了解網絡負載均衡的相關技術,讓讀者更容易地理解BFE的設計機制和使用方法。


BFE項目,是一群技術人的汗水、夢想和追求。

BFE開源,是為了交流、共享,為全中國、全世界的同行賦能。


感謝各位讀者的關注,歡迎大家使用BFE開源項目,並提出反饋或參與開發!


章淼 博士

百度BFE團隊技術負責人、百度代碼規範委員會主席

2021年6月25日寫於百度



● ●前 言● ●



●為什麼要寫這本書●


網絡負載均衡技術已經存在了很多年。無論是商用的硬件負載均衡器,還是免費的Nginx、HAProxy等開源軟件,都已經被業界使用多年。隨著云計算技術的蓬勃發展,我們又迎來了重新定義負載均衡系統的時機。


作為一個現代的七層負載均衡軟件,BFE在2014年基於Go語言編寫,在百度內部每日處理的請求超過1萬億次,並於2019年年初成功支持了百度“春晚紅包”項目。BFE於2019年7月對外開源,並於2020年6月被云原生計算基金會(CNCF)接受為“沙盒項目”。


BFE是學術、技術和工程相結合的產物。從2015年開始,筆者已經圍繞BFE對外做過多次技術分享,在BFE開源項目的官網上也有一些說明文檔。但是,對於BFE的原理、設計和實現機制仍缺少系統、全面的資料,這給相關同行了解和使用BFE帶來了困難。


為此,筆者整合了BFE開源項目的相關資料和自己的研發心得,希望能夠通過這些內容幫助讀者理解BFE的原理、實現機制和使用方法。


●如何閱讀本書●


本書面向的讀者包括計算機網絡方向的研究者、網絡相關技術的開發者、一般後臺程序的開發者、負載均衡系統的使用者等。


本書分為四部分。


第一部分為原理篇,包括第1章至第3章,介紹BFE開源項目的概貌,並對BFE所涉及的網絡前端接入和網絡負載均衡的技術原理做簡要介紹。

第二部分為設計篇,包括第4章至第8章,說明BFE開源項目的設計細節,包括BFE的設計思想、BFE的轉發模型、與轉發相關的關鍵機制、運維相關機制、HTTPS的優化等。

第三部分為操作篇,包括第9章至第13章,說明如何安裝和部署BFE、如何在各種使用場景下配置BFE。

第四部分為實現篇,包括第14章至第17章,從處理流程、插件機制、協議實現等方面說明BFE的實現機制。


●勘誤與支持●

由於筆者水平有限,書中難免會出現一些錯誤,懇請讀者批評指正。如果您有寶貴的意見和建議,請發郵件到BFE-OSC@baidu.com,期待和您進一步深入交流。


●致 謝●


首先,感謝百度公司和百度的各位同事,為BFE的誕生和發展創造了良好的環境,本書的完成離不開大家的支持和鼓勵。

然後,感謝BFE開源社區的貢獻者和參與者,感謝CNCF,BFE開源項目的發展源於大家的關愛和支持。

最後,誠摯地感謝電子工業出版社的滕老師等工作人員,依靠大家的鼓勵和幕後支持,才有了本書的出版。


目次

原 理 篇


第1章 BFE簡介

1.1 什麼是BFE

1.2 BFE平臺介紹

1.2.1 為什麼需要構建BFE平臺

1.2.2 BFE平臺的主要功能

1.3 BFE開源項目介紹

1.3.1 BFE平臺的模塊組成

1.3.2 BFE開源項目中的內容


第2章 網絡前端接入技術簡介

2.1 什麼是網絡前端接入

2.2 網絡前端接入面臨的挑戰

2.3 百度的網絡前端接入方案

2.4 網絡前端接入技術的發展趨勢


第3章 網絡負載均衡技術簡介

3.1 負載均衡的概念

3.2 網絡負載均衡功能的實現

3.2.1 機制說明

3.2.2 兩種方式對比

3.3 四層負載均衡和七層負載均衡


設 計 篇


第4章 BFE的設計思想

4.1 BFE轉發引擎重構的緣起

4.2 BFE為什麼要基於Go語言

4.3 BFE轉發引擎的主要設計思想

4.4 BFE和相關開源項目的對比


第5章 BFE的轉發模型

5.1 轉發模型概述

5.1.1 基本概念

5.1.2 轉發過程

5.1.3 對多租戶實現機制的討論

5.2 BFE的路由轉發機制

5.3 條件表達式

5.3.1 設計思想

5.3.2 基本概念

5.3.3 語法介紹

5.3.4 條件原語匹配的內容

5.3.5 條件原語名稱的規範

5.4 內網流量調度機制

5.4.1 內網流量調度背景介紹

5.4.2 內網流量調度工作機制

5.4.3 內網轉發的其他機制


第6章 與轉發相關的關鍵機制

6.1 健康檢查機制

6.1.1 健康檢查的原理

6.1.2 主動健康檢查和被動健康檢查

6.1.3 分布式健康檢查和集中式健康檢查

6.1.4 BFE的健康檢查

6.2 超時設置

6.2.1 BFE和客戶端間通信的超時

6.2.2 BFE和後端實例間通信的超時

6.3 BFE信息透傳

6.3.1 客戶端IP地址的透傳

6.3.2 其他信息的透傳

6.4 限流機制

6.4.1 限流的概念

6.4.2 限流的配置

6.4.3 分布式限流

6.4.4 入口限流和目的限流

6.4.5 限流和內網流量調度


第7章 運維相關機制

7.1 監控機制

7.1.1 日志監控及其問題

7.1.2 BFE的內部狀態輸出

7.1.3 統計狀態和日志的配合使用

7.2 Web Monitor基礎庫

7.2.1 Web Monitor概述

7.2.2 狀態變量維護

7.2.3 延遲統計變量維護

7.2.4 建立專用的Web服務器

7.2.5 注冊回調函數

7.3 日志機制

7.3.1 日志類型

7.3.2 日志打印的注意事項

7.3.3 BFE的訪問日志

7.4 配置管理

7.4.1 BFE配置文件的分布

7.4.2 常規配置和動態配置

7.4.3 動態配置的實現機制


第8章 HTTPS的優化

8.1 HTTPS優化背景及必要性

8.2 HTTPS優化的挑戰

8.3 HTTPS中的優化機制

8.4 BFE中HTTPS相關增強機制


操 作 篇


9章 BFE服務的安裝部署

9.1 軟件安裝包下載安裝

9.2 源代碼編譯方式安裝

9.3 Docker方式安裝

9.4 BFE命令行參數

9.5 查看BFE服務的運行狀態


第10章 BFE服務的基礎配置

10.1 場景說明

10.2 修改基礎配置文件

10.3 轉發的配置

10.3.1 轉發配置流程

10.3.2 具體案例

10.3.3 服務訪問驗證

10.3.4 配置的重新加載


第11章 配置負載均衡算法及會話保持

11.1 子集群間的負載均衡

11.2 子集群級別的會話保持

11.2.1 配置實例

11.2.2 參數的具體含義

11.3 實例間的負載均衡

11.3.1 加權輪詢配置示例

11.3.2 最小連接數的配置示例

11.4 實例級別的會話保持


第12章 配置HTTPS和更多協議

12.1 設置HTTPS基礎配置

12.1.1 配置HTTPS端口

12.1.2 配置加密套件

12.1.3 配置服務端證書

12.1.4 配置TLS規則

12.2 配置TLS會話重用

12.2.1 配置會話緩存

12.2.2 配置會話票證

12.3 配置TLS雙向認證

12.4 對不同安全等級的區分

12.5 支持更多協議

12.5.1 HTTP/2配置

12.5.2 SPDY配置

12.5.3 WebSocket配置

12.5.4 連接後端服務的協議


第13章 其他常用配置

13.1 配置重寫

13.1.1 開啟重寫

13.1.2 模塊配置

13.1.3 重寫動作詳細描述

13.2 配置重定向

13.2.1 開啟重定向

13.2.2 模塊配置

13.2.3 重定向動作詳細描述

13.3 配置限流功能

13.3.1 開啟限流模塊

13.3.2 模塊配置

13.3.3 限制特定維度的流量

13.3.4 設置限流門限

13.3.5 設置限流動作


實 現 篇


第14章 BFE的基礎實現

14.1 BFE的代碼組織

14.2 BFE的進程模型

14.2.1 協程的分類

14.2.2 並發模型

14.2.3 並發能力

14.2.4 異常恢復機制

14.3 請求處理流程

14.3.1 連接的建立

14.3.2 連接的處理

14.3.3 請求的處理

14.3.4 請求的結束

14.3.5 連接的結束

14.4 請求路由實現

14.4.1 關鍵數據結構

14.4.2 目的租戶路由

14.4.3 目的集群路由

14.5 負載均衡實現

14.5.1 全局負載均衡

14.5.2 分布式負載均衡


第15章 模塊插件機制

15.1 BFE的回調點設置

15.2 BFE內置的擴展模塊

15.3 模塊框架的實現機制

15.3.1 模塊基礎類型

15.3.2 連接/請求處理及回調函數的調用

15.4 如何開發BFE擴展模塊

15.4.1 配置加載

15.4.2 回調函數的編寫和注冊

15.4.3 模塊狀態的展示


第16章 核心協議實現

16.1 HTTP的實現

16.1.1 HTTP代碼的組織

16.1.2 從用戶讀取HTTP請求

16.1.3 向後端轉發請求並獲取響應

16.1.4 向用戶回復HTTP響應

16.2 HTTP2的實現

16.2.1 HTTP2代碼的組織

16.2.2 HTTP2連接處理模塊

16.2.3 HTTP2連接相關協程及關係


第17章 BFE的多進程GC機制

17.1 模型設計

17.1.1 多進程輪轉機制

17.1.2 子進程狀態定義

17.2 相關參數的確定

17.2.1 切換時間參數的選擇

17.2.2 子進程數量的計算

17.2.3 內存消耗的計算


書摘/試閱

第1章 BFE簡介

本章將對BFE做一個概括介紹,主要內容如下。

(1)什麼是BFE。

(2)構建BFE平臺的出發點及平臺主要功能。

(3)BFE開源項目情況。


1.1 什麼是BFE


BFE最初是Baidu Front End(百度統一前端)的縮寫。BFE平臺是百度統一的七層負載均衡接入轉發平臺,該平臺從2012年開始建設,截至2020年年底,平臺每日轉發的請求超過1萬億次,日峰值請求超過每秒1000萬次查詢。

2014年,BFE平臺的核心轉發引擎基於Go語言重構,並於2015年1月在百度全量上線。在全世界範圍內,BFE平臺是較早將Go語言用於負載均衡場景及大規模使用的項目。

2019年年初,BFE平臺成功地支持了百度春晚紅包項目。在本次項目中,BFE平臺提供了每秒億次級別請求的轉發能力,在海量流量下支持了HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer,以安全為目標的HTTP通道)卸載,以及精確限流等關鍵能力,保證了活動的順利進行。

2019年7月,BFE平臺的轉發引擎對外開源。因為BFE開源項目在業界的巨大影響力,所以項目名稱仍保留英文縮寫BFE,但英文全稱更名為Beyond Front End(中文意為“超越前端”),我們希望通過BFE的開源推動負載均衡技術的發展。

2020年6月,BFE被CNCF(Cloud Native Computing Foundation,云原生計算基金會)接受為“沙盒項目(Sandbox Project)”。

BFE開源項目的地址為GitHub官網上的bfenetworks/bfe,也可以在GitHub中搜索“bfe”。


1.2 BFE平臺介紹


本節介紹BFE平臺的情況。首先介紹為什麼需要構建BFE平臺,然後介紹BFE平臺的主要功能。


1.2.1 為什麼需要構建BFE平臺


在傳統方案中,並不存在統一的七層負載均衡接入層,如圖1.1所示。在存在多個服務的場景下,各業務流量在經四層負載均衡的轉發後,直接到達業務的Web服務集群。

這種方案存在以下問題。

(1)功能重復開發。在協議處理、安全等方面,很多重要的功能都需要支持,考慮到各種業務集群在語言、技術棧上的差異,在多個不同的業務集群上支持相同的功能會帶來很高的研發成本。

(2)運維成本高。在某些場景下,需要多個業務同時上線相同的安全策略,在缺乏統一七層負載均衡接入層的情況下,需要在多個業務集群反復上線。這不僅僅帶來大量的上線工作成本,而且也使得策略的上線時間很長。

(3)流量統一控制能力低。由於各業務集群的分散性,在公司層面,缺乏對流量情況的統一觀察和控制能力,這也阻礙了對網絡資源的統一控制,以及對網絡服務質量的統一管理。

在引入BFE平臺後,所有流量都經過BFE的接入轉發後才到達業務Web服務集群,如圖1.2所示,從而帶來以下優點。

(1)功能統一開發。無論業務集群的技術有何差異,各種相關功能只需要在BFE平臺做一次開發即可。

(2)運維統一管理。對於需要普遍使用的安全策略,只需要在平臺上統一上線即可。

(3)增強流量控制能力。和四層負載均衡相比,七層負載均衡可以“看到”流量中更多的內容,可以在流量轉發、安全、數據統計等方面提供更強的能力。


1.2.2 BFE平臺的主要功能


作為一個綜合的大型七層負載均衡流量轉發平臺,BFE平臺包括以下4個主要功能,如圖1.3所示。

(1)接入和轉發。BFE平臺可以接收處理HTTP、HTTPS、HTTP/2、QUIC(Quick UDP Internet Connections,基於UDP的低延遲的互聯網傳輸層協議)等多種協議的流量,並基於HTTP 頭部信息做分流轉發。

(2)流量調度。BFE平臺包括由內網流量調度和外網流量調度所組成的兩層流量調度體系。

(3)安全防攻擊。BFE平臺支持多種安全能力,包括黑名單封禁、大容量限流、WAF(Web Application Firewall,應用層防火墻)等。

(4)數據分析。BFE平臺可以基於轉發日志生成實時流量報表,以此反映業務的流量變化情況及下遊業務集群的健康狀態(錯誤數、延遲等)。

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 465
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區