溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行BFE分析

發(fā)布時(shí)間:2021-12-27 14:01:16 來(lái)源:億速云 閱讀:155 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了如何進(jìn)行BFE分析,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

 

概述

什么是 BFE。

BFE(Baidu Front End)是百度的一款開(kāi)源的應(yīng)用負(fù)載均衡產(chǎn)品,目前已接入百度大部分流量,每日轉(zhuǎn)發(fā)請(qǐng)求接近1萬(wàn)億,峰值QPS超過(guò)1000萬(wàn)。在2019年百度春晚紅包活動(dòng)中,BFE平臺(tái)在超大用戶壓力、數(shù)次流量波峰下平穩(wěn)運(yùn)行,保證了春晚紅包活動(dòng)的順利進(jìn)行。詳情請(qǐng)查看 BFE 官網(wǎng)地址:https://www.bfe-networks.net,github 地址:https://github.com/baidu/bfe。

BFE 源碼是使用 GO 語(yǔ)言開(kāi)發(fā)的,想,下面我們一起來(lái)認(rèn)識(shí) BFE。

 

我用 BFE 做什么?

我用 BFE 做網(wǎng)關(guān),主要實(shí)現(xiàn)路由轉(zhuǎn)發(fā)和過(guò)濾器,路由轉(zhuǎn)發(fā)指的是,接收一切外部請(qǐng)求轉(zhuǎn)發(fā)到后端微服務(wù)上,過(guò)濾器指的是,限流、鑒權(quán)、協(xié)議轉(zhuǎn)化等等。

BFE 還支持 日志、鏈路、監(jiān)控等等。

 

BFE 基本概念

兩大概念:   產(chǎn)品線和集群,見(jiàn)下圖。

如何進(jìn)行BFE分析

 

能解決哪些問(wèn)題?

場(chǎng)景一:比如前后端分離項(xiàng)目,前端需要請(qǐng)求兩個(gè)服務(wù)(服務(wù)A 和 服務(wù)B),服務(wù)A 和 服務(wù)B 的域名是不同的,怎么解決這個(gè)問(wèn)題?

第一反應(yīng)使用 跨域資源共享 CORS 去解決,當(dāng)然需要瀏覽器和服務(wù)器同時(shí)支持。

1、后臺(tái)需要新增代碼:

設(shè)置 Access-Control-Allow-Origin,必選,要么是自定義設(shè)置域名,要么是 * 。

設(shè)置 Access-Control-Allow-Methods,必選,設(shè)置允許請(qǐng)求的方法。

設(shè)置 Access-Control-Allow-Credentials,可選,是否允許發(fā)送 Cookie,默認(rèn)情況下 Cookie 不包括在CORS請(qǐng)求之中。

設(shè)置 Access-Control-Expose-Headers,可選,設(shè)置其他的 Header 參數(shù)。

2、前端請(qǐng)求了兩次(瀏覽器自動(dòng)請(qǐng)求兩次)

第一個(gè)請(qǐng)求是 OPTIONS 請(qǐng)求,也可以稱為 “預(yù)檢請(qǐng)求”,根據(jù)服務(wù)器返回的內(nèi)容,判斷服務(wù)器是否允許該請(qǐng)求訪問(wèn)。

第二個(gè)請(qǐng)求是 具體的 POST 或 GET 請(qǐng)求。

這個(gè)弊端是需要后端開(kāi)發(fā)人員調(diào)整代碼,同時(shí)瀏覽器請(qǐng)求兩次,增加請(qǐng)求時(shí)間及服務(wù)器資源,還有沒(méi)有更好的解決方案?有同學(xué)肯定會(huì)說(shuō) “設(shè)置 Access-Control-Max-Age 參數(shù)” 用來(lái)指定本次預(yù)檢請(qǐng)求的有效期,單位為秒,比如設(shè)置 120s,表示在此期間內(nèi),不用發(fā)出另一條預(yù)檢請(qǐng)求,你還有沒(méi)有其他方案?

可以使用 BFE 路由規(guī)則 和 重寫規(guī)則就能搞定!比如:前端項(xiàng)目為 abc.com,當(dāng)訪問(wèn) abc.com/service-a/xxx 請(qǐng)求到服務(wù)A,當(dāng)訪問(wèn) abc.com/service-b/xxx 請(qǐng)求到服務(wù)B。

場(chǎng)景二:開(kāi)發(fā)了一個(gè)服務(wù)A,目前微服務(wù)是內(nèi)網(wǎng)訪問(wèn)的,假設(shè)有一種場(chǎng)景外網(wǎng)的客戶端項(xiàng)目需要請(qǐng)求這個(gè)微服務(wù),你怎么解決這個(gè)問(wèn)題?

1、外網(wǎng)客戶端項(xiàng)目,請(qǐng)求自己項(xiàng)目的 API,然后 API 項(xiàng)目再去請(qǐng)求訂單管理微服務(wù),進(jìn)行數(shù)據(jù)返回,這樣的弊端是增加了 API 開(kāi)發(fā)人員的工作量。

2、服務(wù)A 直接配置外網(wǎng)可以訪問(wèn),這樣的弊端是安全風(fēng)險(xiǎn)太大,如果使用簽名訪問(wèn),也存在安全風(fēng)險(xiǎn),同時(shí)還增加了前端人員的工作量。

可在將域名解析到負(fù)載均衡(LB)上,然后負(fù)載均衡(LB)去找下游的 BFE 配置。

場(chǎng)景三:上線一個(gè)新需求,想讓一部分用戶繼續(xù)用老版本,一部分用戶開(kāi)始使用新版本,如果用戶對(duì)新版本沒(méi)有什么反對(duì)意見(jiàn) 或 研發(fā)未收到重大的問(wèn)題反饋,然后再逐步擴(kuò)大范圍,把所有用戶都遷移到新版本上來(lái)?另外這個(gè)比例是需要?jiǎng)討B(tài)配置的,怎么去解決這個(gè)問(wèn)題?

可以使用 BFE 集群配置,設(shè)置子集群的分流權(quán)重。

上面的主要使用了 路由轉(zhuǎn)發(fā) 和 集群配置。

路由轉(zhuǎn)發(fā) 相關(guān)配置文件如下:

  • server_data_conf/host_rule.data(域名規(guī)則)
  • server_data_conf/route_rule.data(分流規(guī)則)
  • server_data_conf/cluster_conf.data(集群配置文件)
  • mod_redirect/redirect.data(重定向規(guī)則)
  • mod_rewrite/rewrite.data(重寫規(guī)則)

集群配置 相關(guān)配置文件如下:

  • cluster_conf/cluster_table.data(集群實(shí)例列表)
  • cluster_conf/gslb.data(子集群負(fù)載均衡)
 

如何使用

根據(jù)官方介紹的每個(gè)文件及每個(gè)文件的配置項(xiàng),進(jìn)行配置,配置完了記得進(jìn)行重啟,部分文件支持熱加載的方式,進(jìn)行更新。

后面會(huì)挨個(gè)介紹每個(gè)文件及其配置項(xiàng)。

上述內(nèi)容就是如何進(jìn)行BFE分析,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI