每日轉發請求近 1 萬億、峰值 QPS 超 1000 萬,百度轉發引擎 BFE 開源了!
BFE(Baidu Front End,百度統一前端)是百度的統一七層流量轉發平臺,目前已接入百度大部分流量,每日轉發請求接近 1 萬億,峰值 QPS 超過 1000 萬。為了促進負載均衡技術的交流和發展,百度決定開源 BFE 轉發引擎。
據瞭解,作為綜合的流量轉發平臺,BFE 平臺主要整合了以下 4 大功能:
• 流量接入和轉發:支援 HTTP、HTTPS、HTTP/2、QUIC 等多種協議,並支援強大的應用層路由能力
• 流量全域性排程:支援由外網流量排程和內網流量排程共同構成的全域性流量排程系統
• 安全和防攻擊:支援黑名單封禁、精細限流和應用層防火牆(WAF)等多種防攻擊能力
• 實時資料分析:支援分鐘級的超高維度時序報表
在 2019 年百度春晚紅包活動中,BFE 平臺在超大使用者壓力、數次流量波峰下平穩執行,保證了春晚紅包活動的順利進行。
BFE 目前已宣佈開源( ),並支援以下重要能力:
1、主流網路協議接入
• 支援 HTTP/HTTPS/SPDY/HTTP2/WebSocket 等
• 支援 TLS/HTTP/ WebSocket 反向代理模式
2、可擴充套件外掛框架
• 透過可擴充套件外掛框架,快速定製開發擴充套件模組,滿足業務定製化需
求
• 內建重寫、重定向、流量修改、封禁等豐富外掛
3、基於請求內容的分流
• 基於領域專有語言的分流規則,滿足複雜業務場景定製化流量轉發
• 支援完備的分流條件原語集,包括基於請求內容(URI/Header/Cookie 等)以及請求上下文(IP、協議、標籤、時間等)的條件原語。
4、靈活的負載均衡策略
• 支援叢集級別負載均衡及例項級別負載均衡,實現多可用區容災及過載保護
• 內建加權輪詢、加權最小連線數策略,基於 IP 或請求內容識別使用者實現會話保持
使用 Go 語言完成重構
作為 BFE 平臺的核心元件,BFE 轉發引擎從 2012 年開始研發,並於 2014 年使用 Go 語言完成重構。由於基於 Go 語言,和業界普遍使用的 Nginx 開源軟體相比,BFE 具有以下優勢:
• 研發效率高:Go 語言的開發效率遠高於 C 語言(及 Lua),在程式碼的可維護性方面也有巨大優勢。
• 系統的安全和穩定性高:Go 語言沒有 C 語言固有的緩衝區溢位隱患,規避了大量的穩定性和安全風險;另外對於異常可以捕捉,保證程式在快速迭代上線的情況下也不崩潰。
這是因為從長期趨勢看,基於更高階程式語言的軟體系統會逐步取得競爭的優—— CPU 等硬體資源的價格仍會快速下降,而開發人力成本、專案研發風險、系統穩定性/安全性方面會成為更重要的決策考慮。
於是我們可以大膽推測,主要基於 C 語言的 Nginx 會逐步衰落,而類似 BFE 這樣的基於更高階程式語言的軟體會逐步成為主流。
另外,BFE 在設計中還特別增加了企業級應用場景的考慮:
• 轉發場景的直接支援:和 Nginx 這樣從 Web Server 轉型為 Proxy 的進化路徑不同,BFE 直接為轉發場景設計,從轉發模型和轉發配置方面更滿足轉發場景的需求
• 多租戶的支援:在雲端計算的場景下,多租戶複用是普遍的需求。在 BFE 的設計中,內建提供了多租戶的支援
• 結構化的配置:BFE 的配置設計,大量使用 JSON 這樣的結構化方式,便於和相關配置管理系統對接
• 豐富的監控探針:作為一個工業級軟體,在 BFE 的設計中充分考慮了線上監控的需求,BFE 程式透過 HTTP 方式向外暴露數千個內部狀態變數
對於 BFE 開源版本詳情及後續路線圖感興趣的使用者,可以關注 或登入 github 搜尋 BFE 持續保持關注。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2664548/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- centos上nginx轉發tcp請求CentOSNginxTCP
- 原始碼分析Gateway請求轉發原始碼Gateway
- 請求轉發與URL重定向
- Linux幾種轉發請求方案Linux
- Centos上配置兩層nginx轉發,把請求轉發到外網CentOSNginx
- apisix~按域名進行請求轉發API
- .NET Core如何進行請求轉發?
- 【轉】QPS和併發數的關係
- Nginx轉發導致請求頭丟失Nginx
- 使用MITMProxy轉發請求到本地、儲存鑑權給本地請求MIT
- SpringCloud元件: GateWay整合Eureka轉發服務請求SpringGCCloud元件Gateway
- Http請求相關(轉)HTTP
- centos7環境 nginx轉發ftp請求(親測可用)CentOSNginxFTP
- javaWeb03-請求轉發和請求重定向【包含編碼格式與路徑問題】JavaWeb
- 教你玩轉HTTP—請求方法HTTP
- 2021年1月2日Steam線上人數峰值近2800萬人
- 用Go重構C語言系統,這個抗住春晚紅包的百度轉發引擎承接了萬億流量GoC語言
- Xshell:需要Xmanager軟體來處理X11轉發請求.....
- SpringMVC原始碼分析3:DispatcherServlet的初始化與請求轉發SpringMVC原始碼Servlet
- 基於Servlet體系的HTTP請求代理轉發Spring Boot元件ServletHTTPSpring Boot元件
- 快手:2023年快手小遊戲日活躍使用者峰值超過1000萬遊戲
- GitHub超火開發者路線相簿有AI學習路線了!star數近30萬GithubAI
- 跨域之OPTION請求【轉載】跨域
- 【開源】.net微服務開發引擎Anno開源啦微服務
- 瀏覽器如何將你的http請求轉為https請求?瀏覽器HTTP
- 簡單使用spring cloud 服務註冊做一個請求轉發中心SpringCloud
- 鴻蒙NEXT開發案例:轉盤1W鴻蒙
- 什麼是SSH埠轉發(本地轉發、遠端轉發、動態轉發)?
- 1、交換與定址轉發
- 1、實戰SSH埠轉發
- vue axios路由跳轉取消所有請求VueiOS路由
- 5W1H聊開源之Who——誰“發明”了開源?
- mock 請求分發Mock
- 大請求、請求超時問題
- 靠著零程式碼報表工具,轉行報表開發後月薪超過3萬
- 前端開發者必備的程式碼開源平臺,記得收藏轉發!前端
- 玩轉iOS開發《建立CocoaPods開發庫》iOS
- Flutter Http請求開源庫-dioFlutterHTTP