作為BFE平臺的核心組件,BFE轉(zhuǎn)發(fā)引擎從2012年開始研發(fā),并于2014年使用Go語言完成重構。

由于基于Go語言,和業(yè)界普遍使用的Nginx開源軟件相比,BFE具有以下優(yōu)勢:

·研發(fā)效率高:Go語言的開發(fā)效率遠高于C語言(及Lua),在代碼的可維護性方面也有巨大優(yōu)勢。

·系統(tǒng)的安全和穩(wěn)定性高:Go語言沒有C語言固有的緩沖區(qū)溢出隱患,規(guī)避了大量的穩(wěn)定性和安全風險;另外對于異??梢圆蹲?保證程序在快速迭代上線的情況下也不崩潰。

有理由相信,從長期趨勢看,基于更高級編程語言的軟件系統(tǒng)會逐步取得競爭的優(yōu)勢。CPU等硬件資源的價格仍會快速下降,而開發(fā)人力成本、項目研發(fā)風險、系統(tǒng)穩(wěn)定性/安全性方面會成為更重要的決策考慮。從這方面出發(fā),主要基于C語言的Nginx會逐步衰落,而類似BFE這樣的基于更高級編程語言的軟件會逐步成為主流。

另外,BFE在設計中,還特別增加了企業(yè)級應用場景的考慮:

·轉(zhuǎn)發(fā)場景的直接支持:和Nginx這樣從Web Server轉(zhuǎn)型為Proxy的進化路徑不同,BFE直接為轉(zhuǎn)發(fā)場景設計,從轉(zhuǎn)發(fā)模型和轉(zhuǎn)發(fā)配置方面更滿足轉(zhuǎn)發(fā)場景的需求

·多租戶的支持:在云計算的場景下,多租戶復用是普遍的需求。在BFE的設計中,內(nèi)置提供了多租戶的支持

·結構化的配置:BFE的配置設計,大量使用JSON這樣的結構化方式,便于和相關配置管理系統(tǒng)對接

·豐富的監(jiān)控探針:作為一個工業(yè)級軟件,在BFE的設計中充分考慮了線上監(jiān)控的需求,BFE程序通過HTTP方式向外暴露數(shù)千個內(nèi)部狀態(tài)變量

image.png

為了促進負載均衡技術的交流和發(fā)展,BFE轉(zhuǎn)發(fā)引擎于2019年夏天正式開源。

BFE目前已開源并支持以下重要能力:

1、主流網(wǎng)絡協(xié)議接入

·支持HTTP/HTTPS/SPDY/HTTP2/WebSocket等

·支持TLS/HTTP/ WebSocket反向代理模式

2、可擴展插件框架

·通過可擴展插件框架,快速定制開發(fā)擴展模塊,滿足業(yè)務定制化需求

·內(nèi)置重寫、重定向、流量修改、封禁等豐富插件

3、基于請求內(nèi)容的分流

·基于領域?qū)S姓Z言的分流規(guī)則,滿足復雜業(yè)務場景定制化流量轉(zhuǎn)發(fā)

·支持完備的分流條件原語集,包括基于請求內(nèi)容(URI/Header/Cookie等)以及請求上下文(IP、協(xié)議、標簽、時間等)的條件原語。

4、靈活的負載均衡策略

·支持集群級別負載均衡及實例級別負載均衡,實現(xiàn)多可用區(qū)容災及過載保護

·內(nèi)置加權輪詢、加權最小連接數(shù)策略,基于IP或請求內(nèi)容識別用戶實現(xiàn)會話保持

關于BFE開源版本詳情及后續(xù)路線圖,有興趣的用戶請登錄github直接搜索BFE。

BFE轉(zhuǎn)發(fā)引擎的研發(fā)過程,秉承了百度優(yōu)良的研發(fā)傳統(tǒng),經(jīng)過了多年的技術積累。BFE已經(jīng)在百度穩(wěn)定運行多年,并歷經(jīng)多次大流量的洗禮。以開源貢獻社區(qū),是百度技術價值體現(xiàn)的重要方式。希望能借BFE開源的機會,與各位同行切磋技術,共建網(wǎng)絡接入領域的開源技術生態(tài)。

BFE的開源技術沙龍將于12月7日下午在北京舉辦

image.png
分享到

songjy

相關推薦