每日轉發請求近 1 萬億、峰值 QPS 超 1000 萬,百度轉發引擎 BFE 開源了

雷鋒網 AI 開發者按:BFE(Baidu Front End,百度統一前端)是百度的統一七層流量轉發平臺,目前已接入百度大部分流量,每日轉發請求接近 1 萬億,峰值 QPS 超過 1000 萬。為了促進負載均衡技術的交流和發展,百度決定開源 BFE 轉發引擎。

據瞭解,作為綜合的流量轉發平臺,BFE 平臺主要集成了以下 4 大功能:

• 流量接入和轉發:支持 HTTP、HTTPS、HTTP/2、QUIC 等多種協議,並支持強大的應用層路由能力

• 流量全局調度:支持由外網流量調度和內網流量調度共同構成的全局流量調度系統

• 安全和防攻擊:支持黑名單封禁、精細限流和應用層防火牆(WAF)等多種防攻擊能力

• 實時數據分析:支持分鐘級的超高維度時序報表

在 2019 年百度春晚紅包活動中,BFE 平臺在超大用戶壓力、數次流量波峰下平穩運行,保證了春晚紅包活動的順利進行。

每日转发请求近 1 万亿、峰值 QPS 超 1000 万,百度转发引擎 BFE 开源了

BFE 目前已宣佈開源(https://github.com/baidu/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 方式向外暴露數千個內部狀態變量

每日转发请求近 1 万亿、峰值 QPS 超 1000 万,百度转发引擎 BFE 开源了

對於 BFE 開源版本詳情及後續路線圖感興趣的用戶,可以關注 https://github.com/baidu/bfe或登錄 github 搜索 BFE 持續保持關注。

雷鋒網年度評選——尋找19大行業的最佳AI落地實踐

創立於2017年的「AI最佳掘金案例年度榜單」,是業內首個人工智能商業案例評選活動。雷鋒網從商用維度出發,尋找人工智能在各個行業的最佳落地實踐。

第三屆評選已正式啟動,關注微信公眾號“雷鋒網”,回覆關鍵詞“榜單”參與報名。詳情可諮詢微信號:xqxq_xq

每日转发请求近 1 万亿、峰值 QPS 超 1000 万,百度转发引擎 BFE 开源了


分享到:


相關文章: