概述
什麼是 BFE
?一塊兒來看下官方介紹。前端
BFE(Baidu Front End)是百度的一款開源的應用負載均衡產品,目前已接入百度大部分流量,每日轉發請求接近1萬億,峯值QPS超過1000萬。在2019年百度春晚紅包活動中,BFE平臺在超大用戶壓力、數次流量波峯下平穩運行,保證了春晚紅包活動的順利進行。詳情請查看 BFE 官網地址:https://www.bfe-networks.net,github 地址:https://github.com/baidu/bfe。git
BFE
源碼是使用 GO
語言開發的,這篇文章咱們一塊兒來認識 BFE
。github
我用 BFE 作什麼?
我用 BFE
作網關,主要實現路由轉發和過濾器,路由轉發指的是,接收一切外部請求轉發到後端微服務上,過濾器指的是,限流、鑑權、協議轉化等等。web
BFE
還支持 日誌、鏈路、監控等等。後端
BFE 基本概念
能解決哪些問題?
場景一:好比先後端分離項目,前端須要請求兩個服務(服務A 和 服務B),服務A 和 服務B 的域名是不一樣的,怎麼解決這個問題?跨域
第一反應使用 跨域資源共享 CORS 去解決,固然須要瀏覽器和服務器同時支持。瀏覽器
一、後臺須要新增代碼:安全
設置 Access-Control-Allow-Origin
,必選,要麼是自定義設置域名,要麼是 * 。服務器
設置 Access-Control-Allow-Methods
,必選,設置容許請求的方法。微信
設置 Access-Control-Allow-Credentials
,可選,是否容許發送 Cookie,默認狀況下 Cookie 不包括在CORS請求之中。
設置 Access-Control-Expose-Headers
,可選,設置其餘的 Header 參數。
二、前端請求了兩次(瀏覽器自動請求兩次)
第一個請求是 OPTIONS 請求,也能夠稱爲 「預檢請求」,根據服務器返回的內容,判斷服務器是否容許該請求訪問。
第二個請求是 具體的 POST 或 GET 請求。
這個弊端是須要後端開發人員調整代碼,同時瀏覽器請求兩次,增長請求時間及服務器資源,還有沒有更好的解決方案?有同窗確定會說 「設置 Access-Control-Max-Age
參數」 用來指定本次預檢請求的有效期,單位爲秒,好比設置 120s,表示在此期間內,不用發出另外一條預檢請求,你還有沒有其餘方案?
能夠使用 BFE 路由規則 和 重寫規則就能搞定!好比:前端項目爲 abc.com,當訪問 abc.com/service-a/xxx 請求到服務A,當訪問 abc.com/service-b/xxx 請求到服務B。
場景二:開發了一個服務A,目前微服務是內網訪問的,假設有一種場景外網的客戶端項目須要請求這個微服務,你怎麼解決這個問題?
一、外網客戶端項目,請求本身項目的 API,而後 API 項目再去請求訂單管理微服務,進行數據返回,這樣的弊端是增長了 API 開發人員的工做量。
二、服務A 直接配置外網能夠訪問,這樣的弊端是安全風險太大,若是使用簽名訪問,也存在安全風險,同時還增長了前端人員的工做量。
可在將域名解析到負載均衡(LB)上,而後負載均衡(LB)去找下游的 BFE 配置。
場景三:上線一個新需求,想讓一部分用戶繼續用老版本,一部分用戶開始使用新版本,若是用戶對新版本沒有什麼反對意見 或 研發未收到重大的問題反饋,而後再逐步擴大範圍,把全部用戶都遷移到新版本上來?另外這個比例是須要動態配置的,怎麼去解決這個問題?
能夠使用 BFE 集羣配置,設置子集羣的分流權重。
上面的主要使用了 路由轉發 和 集羣配置。
路由轉發 相關配置文件以下:
-
server_data_conf/host_rule.data(域名規則) -
server_data_conf/route_rule.data(分流規則) -
server_data_conf/cluster_conf.data(集羣配置文件) -
mod_redirect/redirect.data(重定向規則) -
mod_rewrite/rewrite.data(重寫規則)
集羣配置 相關配置文件以下:
-
cluster_conf/cluster_table.data(集羣實例列表) -
cluster_conf/gslb.data(子集羣負載均衡)
如何使用?
根據官方介紹的每一個文件及每一個文件的配置項,進行配置,配置完了記得進行重啓,部分文件支持熱加載的方式,進行更新。
後面會挨個介紹每一個文件及其配置項。
小結
這篇文章主要是分享一些簡單的介紹,初探,就先分享到這。
推薦閱讀
本文分享自微信公衆號 - 新亮筆記(XinLiangTalk)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。