本篇文章為大家展示了如何進(jìn)行BFE分析,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)秉承實(shí)現(xiàn)全網(wǎng)價(jià)值營銷的理念,以專業(yè)定制企業(yè)官網(wǎng),成都網(wǎng)站制作、網(wǎng)站建設(shè),重慶小程序開發(fā)公司,網(wǎng)頁設(shè)計(jì)制作,手機(jī)網(wǎng)站開發(fā),全網(wǎng)整合營銷推廣幫助傳統(tǒng)企業(yè)實(shí)現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對客戶都以感恩的心態(tài)奉獻(xiàn)自己的專業(yè)和所長。
什么是 BFE
。
BFE(Baidu Front End)是百度的一款開源的應(yīng)用負(fù)載均衡產(chǎn)品,目前已接入百度大部分流量,每日轉(zhuǎn)發(fā)請求接近1萬億,峰值QPS超過1000萬。在2019年百度春晚紅包活動中,BFE平臺在超大用戶壓力、數(shù)次流量波峰下平穩(wěn)運(yùn)行,保證了春晚紅包活動的順利進(jìn)行。詳情請查看 BFE 官網(wǎng)地址:https://www.bfe-networks.net,github 地址:https://github.com/baidu/bfe。
BFE
源碼是使用 GO
語言開發(fā)的,想,下面我們一起來認(rèn)識 BFE
。
我用 BFE
做網(wǎng)關(guān),主要實(shí)現(xiàn)路由轉(zhuǎn)發(fā)和過濾器,路由轉(zhuǎn)發(fā)指的是,接收一切外部請求轉(zhuǎn)發(fā)到后端微服務(wù)上,過濾器指的是,限流、鑒權(quán)、協(xié)議轉(zhuǎn)化等等。
BFE
還支持 日志、鏈路、監(jiān)控等等。
場景一:比如前后端分離項(xiàng)目,前端需要請求兩個(gè)服務(wù)(服務(wù)A 和 服務(wù)B),服務(wù)A 和 服務(wù)B 的域名是不同的,怎么解決這個(gè)問題?
第一反應(yīng)使用 跨域資源共享 CORS 去解決,當(dāng)然需要瀏覽器和服務(wù)器同時(shí)支持。
1、后臺需要新增代碼:
設(shè)置 Access-Control-Allow-Origin
,必選,要么是自定義設(shè)置域名,要么是 * 。
設(shè)置 Access-Control-Allow-Methods
,必選,設(shè)置允許請求的方法。
設(shè)置 Access-Control-Allow-Credentials
,可選,是否允許發(fā)送 Cookie,默認(rèn)情況下 Cookie 不包括在CORS請求之中。
設(shè)置 Access-Control-Expose-Headers
,可選,設(shè)置其他的 Header 參數(shù)。
2、前端請求了兩次(瀏覽器自動請求兩次)
第一個(gè)請求是 OPTIONS 請求,也可以稱為 “預(yù)檢請求”,根據(jù)服務(wù)器返回的內(nèi)容,判斷服務(wù)器是否允許該請求訪問。
第二個(gè)請求是 具體的 POST 或 GET 請求。
這個(gè)弊端是需要后端開發(fā)人員調(diào)整代碼,同時(shí)瀏覽器請求兩次,增加請求時(shí)間及服務(wù)器資源,還有沒有更好的解決方案?有同學(xué)肯定會說 “設(shè)置 Access-Control-Max-Age
參數(shù)” 用來指定本次預(yù)檢請求的有效期,單位為秒,比如設(shè)置 120s,表示在此期間內(nèi),不用發(fā)出另一條預(yù)檢請求,你還有沒有其他方案?
可以使用 BFE 路由規(guī)則 和 重寫規(guī)則就能搞定!比如:前端項(xiàng)目為 abc.com,當(dāng)訪問 abc.com/service-a/xxx 請求到服務(wù)A,當(dāng)訪問 abc.com/service-b/xxx 請求到服務(wù)B。
場景二:開發(fā)了一個(gè)服務(wù)A,目前微服務(wù)是內(nèi)網(wǎng)訪問的,假設(shè)有一種場景外網(wǎng)的客戶端項(xiàng)目需要請求這個(gè)微服務(wù),你怎么解決這個(gè)問題?
1、外網(wǎng)客戶端項(xiàng)目,請求自己項(xiàng)目的 API,然后 API 項(xiàng)目再去請求訂單管理微服務(wù),進(jìn)行數(shù)據(jù)返回,這樣的弊端是增加了 API 開發(fā)人員的工作量。
2、服務(wù)A 直接配置外網(wǎng)可以訪問,這樣的弊端是安全風(fēng)險(xiǎn)太大,如果使用簽名訪問,也存在安全風(fēng)險(xiǎn),同時(shí)還增加了前端人員的工作量。
可在將域名解析到負(fù)載均衡(LB)上,然后負(fù)載均衡(LB)去找下游的 BFE 配置。
場景三:上線一個(gè)新需求,想讓一部分用戶繼續(xù)用老版本,一部分用戶開始使用新版本,如果用戶對新版本沒有什么反對意見 或 研發(fā)未收到重大的問題反饋,然后再逐步擴(kuò)大范圍,把所有用戶都遷移到新版本上來?另外這個(gè)比例是需要?jiǎng)討B(tài)配置的,怎么去解決這個(gè)問題?
可以使用 BFE 集群配置,設(shè)置子集群的分流權(quán)重。
上面的主要使用了 路由轉(zhuǎn)發(fā) 和 集群配置。
路由轉(zhuǎn)發(fā) 相關(guān)配置文件如下:
集群配置 相關(guān)配置文件如下:
根據(jù)官方介紹的每個(gè)文件及每個(gè)文件的配置項(xiàng),進(jìn)行配置,配置完了記得進(jìn)行重啟,部分文件支持熱加載的方式,進(jìn)行更新。
后面會挨個(gè)介紹每個(gè)文件及其配置項(xiàng)。
上述內(nèi)容就是如何進(jìn)行BFE分析,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。