基于代理服務(wù)的接口合并方案

過多的接口請(qǐng)求是web前端的主要性能瓶頸之一筷弦,接口合并是剛需溅潜。
后臺(tái)的接口設(shè)計(jì)有其既有粒度术唬,對(duì)每個(gè)功能場(chǎng)景額外的增加合并的接口,工作量巨大滚澜,且場(chǎng)景難以覆蓋粗仓。
增加一臺(tái)離接口服務(wù)器很近的代理服務(wù)器,定義一套接口合并的規(guī)則,代理服務(wù)器解析前端發(fā)來的規(guī)則借浊,對(duì)接口服務(wù)器發(fā)起近距離請(qǐng)求塘淑,合并后返回。

一蚂斤、Web 開發(fā)的困境

圖一
圖二

在web開發(fā)中存捺,前端為了一個(gè)實(shí)現(xiàn)一個(gè)功能,連續(xù)的請(qǐng)求多個(gè)接口的場(chǎng)景并不少見橡淆。圖一示例中召噩,后一個(gè)接口依賴于前一個(gè)接口的請(qǐng)求結(jié)果母赵,于是你經(jīng)常要這樣去組織你的接口請(qǐng)求step1.then(step2).then(step3)(promise語法)逸爵,圖二中,step1,step2,step3雖然沒有依賴關(guān)系凹嘲,但是同樣需要跟api-server交互三次师倔,web應(yīng)用中,沒多一秒等待都意味著多一份失去周蹭。

你可能會(huì)抱怨后端的同事趋艘,為何不把這幾個(gè)接口合并,然而后端的同事就會(huì)反駁你:“你這個(gè)場(chǎng)景需要step1->step2->step3凶朗,那個(gè)頁面只需要step1 -> step2瓷胧,甚至有些頁面只需要step1,我如何給你合并棚愤?”你可以繼續(xù)說搓萧,可以提供三個(gè)這樣的接口嘛,那么后臺(tái)的同事可能直接會(huì)崩潰宛畦,這樣的場(chǎng)景何其多瘸洛,新增一個(gè)場(chǎng)景新增一個(gè)接口,后臺(tái)就得發(fā)一次版本次和。

二反肋、代理服務(wù)的接口合并方案

proxy
  • 代理服務(wù)(proxy-server.png)和接口服務(wù)器(api-server)的網(wǎng)絡(luò)鏈路應(yīng)該盡量的“近”。部署在同一機(jī)房同一網(wǎng)段的服務(wù)器上踏施,甚至是同一服務(wù)器上石蔗;增加服務(wù)器硬件性能;負(fù)載均衡集群等畅形;這些都是“簡(jiǎn)短“網(wǎng)絡(luò)鏈路的有效手段
  • 前后端約定好一套接口合并的規(guī)則养距,代理服務(wù)只需要做好解析規(guī)則請(qǐng)求合并的工作,一旦部署將保持穩(wěn)定束亏,接口合并的主動(dòng)權(quán)將掌握在前端铃在,前端可以根據(jù)場(chǎng)景的變化自由的組合合并規(guī)則
  • 代理服務(wù)與接口服務(wù)走的同樣是http/https協(xié)議,對(duì)接口服務(wù)器沒有依賴嵌入,前端直接請(qǐng)求接口服務(wù)器也是沒有問題的定铜,換句話說:老的訪問方式完全不受影響阳液。

這種合并方案為什么能極大的提升接口訪問速度

對(duì)于需要訪問三個(gè)有依賴關(guān)系的接口的場(chǎng)景(上圖一):傳統(tǒng)的前端直接請(qǐng)求接口服務(wù)器的方式,前端跟服務(wù)器的交互相當(dāng)于需要走三次”遠(yuǎn)路“(為什么說前端直接連接口服務(wù)器認(rèn)為是”遠(yuǎn)路“揣炕,因?yàn)榍岸说木W(wǎng)絡(luò)狀態(tài)無法保證帘皿,對(duì)于移動(dòng)端設(shè)備常常只能在3g/4g的網(wǎng)絡(luò)環(huán)境下,況且移動(dòng)端硬件性能并不占優(yōu))畸陡,并且需要串行等待鹰溜;然而使用代理服務(wù)器的方式,前端只需要走一次”遠(yuǎn)路“把規(guī)則告訴代理服務(wù)器丁恭,代理服務(wù)器再跟它老表接口服務(wù)器要三次數(shù)據(jù)(代理服務(wù)器跟接口服務(wù)器的訪問速度往往遠(yuǎn)高于前端與服務(wù)器的直接交互的訪問速度曹动,根本不是一個(gè)量級(jí)的)

沒有數(shù)據(jù)支撐的理論臆測(cè)都是在耍流氓,我在同一臺(tái)服務(wù)器上分別部署了接口服務(wù)(api-server)牲览,和使用了上述代理方案的node實(shí)現(xiàn)(freedom-api墓陈,后文會(huì)詳細(xì)說明),接口服務(wù)器提供了兩個(gè)有依賴關(guān)系的串行接口第献,使用手機(jī)在不同的網(wǎng)絡(luò)下分別使用傳統(tǒng)的直連方式和走代理服務(wù)合并接口的方式進(jìn)行測(cè)試贡必,得到如下測(cè)試結(jié)果:

弱wifi網(wǎng)絡(luò)(網(wǎng)速比4g更慢)
4g網(wǎng)絡(luò)
強(qiáng)wifi網(wǎng)絡(luò)

由圖可見,在三種網(wǎng)絡(luò)環(huán)境下庸毫,代理合并的方式的訪問速度都明顯高于傳統(tǒng)直連的方式仔拟,并且網(wǎng)絡(luò)狀況越差,體現(xiàn)得越明顯

三飒赃、 規(guī)則定義

請(qǐng)移步 freedom-api

四利花、基于 freedom-api 實(shí)現(xiàn)的在線接口流程測(cè)試工具

請(qǐng)移步 Facemagic

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市盒揉,隨后出現(xiàn)的幾起案子晋被,更是在濱河造成了極大的恐慌,老刑警劉巖刚盈,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羡洛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡藕漱,警方通過查閱死者的電腦和手機(jī)欲侮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肋联,“玉大人威蕉,你說我怎么就攤上這事¢先裕” “怎么了韧涨?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵牍戚,是天一觀的道長。 經(jīng)常有香客問我虑粥,道長如孝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任娩贷,我火速辦了婚禮第晰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘彬祖。我一直安慰自己茁瘦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布储笑。 她就那樣靜靜地躺著甜熔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪南蓬。 梳的紋絲不亂的頭發(fā)上纺非,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音赘方,去河邊找鬼。 笑死弱左,一個(gè)胖子當(dāng)著我的面吹牛窄陡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拆火,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼跳夭,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了们镜?” 一聲冷哼從身側(cè)響起币叹,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎模狭,沒想到半個(gè)月后颈抚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嚼鹉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年贩汉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锚赤。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匹舞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出线脚,到底是詐尸還是另有隱情赐稽,我是刑警寧澤叫榕,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站姊舵,受9級(jí)特大地震影響翠霍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蠢莺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一寒匙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧躏将,春花似錦锄弱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蚯窥,卻和暖如春掸鹅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拦赠。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工巍沙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荷鼠。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓句携,卻偏偏與公主長得像,于是被迫代替她去往敵國和親允乐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矮嫉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)牍疏,斷路器蠢笋,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,103評(píng)論 25 707
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 10,967評(píng)論 6 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法鳞陨,內(nèi)部類的語法昨寞,繼承相關(guān)的語法,異常的語法炊邦,線程的語...
    子非魚_t_閱讀 31,625評(píng)論 18 399
  • 什么是教養(yǎng)编矾?我想每個(gè)人對(duì)教養(yǎng)都有不一樣的理解,但有教養(yǎng)的共同點(diǎn)馁害,都是建立在能夠替別人著想窄俏、從別人的角度考慮問題的基...
    閑看歲月流光閱讀 242評(píng)論 1 0